Нужен сервис для мониторинга сетевого трафика для каждого процесса
Есть ли инструмент как сервис, который может контролировать сетевой трафик для каждого процесса. Так что я могу использовать командную строку для анализа использования?
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
,