"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?

2 ответа

Решение
  • SIGTERM посылает сигнал команде и сообщает команде, чтобы она остановилась. Если из-за команды kill требуется очистить файлы, команда может это сделать.
  • SIGKILL отправляет сигнал в систему инициализации. Сама команда даже не говорит, что ее убьют.

Таким образом, вы можете использовать оба; но SIGTERM должен быть предпочтительным (это более изящно).

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

Да, это будет. На Linux хвост действует на SIGTERM.

Вам даже не нужно использовать SIGTERM, tail слушает SIGINT а также SIGQUIT тоже. Я не уверен, есть ли какая-либо разница между сигналами tail) но любой из них будет лучше, чем SIGKILL,

Это тоже довольно легко проверить:

$ tail -f /dev/null > /dev/null &
[1] 26599
$ kill -SIGINT $!
[1]+  Interrupt               tail -f /dev/null > /dev/null
Другие вопросы по тегам