Есть ли инструмент как сервис, который может контролировать сетевой трафик для каждого процессы. Так, чтобы я мог использовать командную строку для анализа использования?
Согласно Вашим комментариям Вам не нужны никакие журналы, экономил на диске и желании выполнить монитор сети, поскольку системная служба, включенная в системе, запускается. Давайте сделаем это.
Установка nethogs
утилита:
sudo apt install nethogs
Создайте сценарий удара в своем корневом каталоге (Ваш, может заменить его другим каталогом), предположение, что Ваше имя пользователя 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
сценарий удара к системной службе. Создайте/откройте файл в редакторе:
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
.