Остановит ли «kill -SIGTERM» «tail -f»?

Остановит ли «kill -SIGTERM» «tail -f»?

Как и следует из заголовка, 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

Связанный контент