"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