Как и следует из заголовка, Google ничего мне не дал, и я не могу протестировать его на этом сервере.
Команда выглядит следующим образом:
tail -f <file> | fgrep --line-buffered "string" | sed -u 's/stuff//g' >> output.log
Нужно ли мне использовать kill -SIGTERM <PID>
или kill -SIGKILL <PID>
останавливать tail -f
?
решение1
- SIGTERM посылает сигнал команде и сообщает ей, что нужно остановиться. Если необходимо очистить файлы из-за kill, команда может это сделать.
- SIGKILL посылает сигнал системе инициализации. Сама команда даже не получает уведомления о том, что ее собираются убить.
Таким образом, вы можете использовать оба варианта, но предпочтительнее использовать SIGTERM (он более изящный).
Остановит ли «kill -SIGTERM» «tail -f»?
Да, будет. В Linux tail действует на SIGTERM.
решение2
Вам даже не обязательно использовать SIGTERM
. tail
прослушивает SIGINT
и SIGQUIT
тоже. Я не уверен, есть ли разница между сигналами (все это относится к tail
), но любой из них будет лучше, чем SIGKILL
.
Это также довольно легко проверить:
$ tail -f /dev/null > /dev/null &
[1] 26599
$ kill -SIGINT $!
[1]+ Interrupt tail -f /dev/null > /dev/null