web-dev-qa-db-ja.com

「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
Roboman1723
  • SIGTERMはコマンドにシグナルを送信し、コマンドにそれ自体を停止するよう指示します。 killのためにファイルをクリーンアップする必要がある場合、コマンドはそれを実行できます。
  • SIGKILLはinitシステムにシグナルを送信します。コマンド自体は、殺されると言われることさえありません。

したがって、両方を使用できます。ただし、SIGTERMをお勧めします(より優雅です)。

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

はい、そうです。 Linuxでは、tailはSIGTERMに作用します。

1
Rinzwind

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

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

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