「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 は init システムに信号を送信します。コマンド自体は、強制終了されることさえ通知されません。

したがって、両方を使用できますが、SIGTERM を優先する必要があります (より適切です)。

「kill -SIGTERM」は「tail -f」を停止しますか?

はい、そうなります。Linux では、tail は SIGTERM に基づいて動作します。

答え2

を使用する必要すらありませんSIGTERMtailSIGINTSIGQUITもリッスンします。シグナル間に違いがあるかどうかはわかりませんが (すべて に固有のものですtail)、これらのいずれも よりも優れていますSIGKILL

テストも非常に簡単です:

$ tail -f /dev/null > /dev/null &
[1] 26599
$ kill -SIGINT $!
[1]+  Interrupt               tail -f /dev/null > /dev/null

関連情報