Нужен сервис для мониторинга сетевого трафика для каждого процесса

Есть ли инструмент как сервис, который может контролировать сетевой трафик для каждого процесса. Так что я могу использовать командную строку для анализа использования?

1 ответ

Решение

Согласно вашим комментариям вам не нужны журналы, сохраненные на диске, и вы хотите запустить сетевой монитор, так как системная служба включена при запуске системы. Давай сделаем это.

устанавливать nethogs полезность:

sudo apt install nethogs

Создайте скрипт bash внутри своего домашнего каталога (вы можете заменить его другим каталогом), предполагая, что ваше имя пользователя bob:

touch /home/bob/nethogs.sh

Сделайте созданный скрипт исполняемым:

chmod +x /home/bob/nethogs.sh

Откройте скрипт в текстовом редакторе, скопируйте и вставьте его код:

#!/bin/bash
pipe=/tmp/nethogs_pipe

trap "rm -f $pipe" EXIT

if [[ ! -p $pipe ]]; then
    mkfifo $pipe
fi
exec 3<>$pipe
nethogs -t -a >&3 2>&1

exit 0

Сохраните изменения и закройте текстовый редактор. Затем создайте другой скрипт для чтения именованного канала, созданного nethogs.sh сценарий:

touch /home/bob/netmon.sh

Сделайте скрипт исполняемым:

chmod +x /home/bob/netmon.sh

Скопируйте и вставьте в netmon.sh код:

#!/bin/bash

pipe="/tmp/nethogs_pipe"

while true
do
    if read line; then
        echo $line
    fi
done <"$pipe"

exit 0

На следующем шаге мы должны преобразовать nethogs.sh скрипт bash для системного сервиса. Создайте / откройте файл в редакторе:

sudo nano /etc/systemd/system/nethogs.service

и скопируйте / вставьте код (замените bob в ExecStart с вашим именем пользователя):

[Unit]
After=network.target

[Service]
ExecStart=/home/bob/nethogs.sh

[Install]
WantedBy=default.target

Сохраните изменения и закройте файл. Включите созданную службу при запуске системы:

sudo systemctl enable nethogs.service

Начать nethogs оказание услуг:

sudo systemctl start nethogs.service

и проверьте его статус:

sudo systemctl status nethogs.service

в заключение cd в ваш домашний каталог, где netmon.sh скрипт находится и выполняет скрипт:

./netmon.sh

Для выхода из мониторинга нажмите CTRL+C, Это все.

Если вы хотите сохранить данные мониторинга на диск, замените содержимое nethogs.sh скрипт с кодом:

#!/bin/bash
log="/var/log/nethogs.log"
err="/var/log/nethog.err"
nethogs -t -a > $log 2> $err

exit 0

и перезапустите сервис:

sudo systemctl restart nethogs.service

Живой монитор через именованный канал будет отключен, а выходные данные скрипта будут сохранены в /var/log/nethogs.log файл - просто откройте его less или же tail, например:

tail -f /var/log/nethogs.log

Все ошибки будут сохранены в /var/log/nethogs.log файл. /var/log/nethogs.log будет очищаться при каждой перезагрузке компьютера / перезапуске службы, чтобы отключить очистку файлов и разрешить добавление вывода заменить содержимое nethogs.sh скрипт с другим кодом:

#!/bin/bash
log="/var/log/nethogs.log"
err="/var/log/nethog.err"
nethogs -t -a >> $log 2>> $err

exit 0

Примечание. В опциях команды nethogs -t а также -a внутренние скрипты могут быть заменены в соответствии с установленной версией. В Ubuntu 18.04 вариант версии nethogs -t средства tracemode и вариант -aявляется listen all interfaces,

Другие вопросы по тегам