16

スリープ状態のプロセスでキル スイッチ フラグをテストしていました。

最初に-15で殺そうとしました

 xtechkid@ubuntu:~/Desktop/expermiments$ ps cax | grep 10005
 10005 pts/2    S+     0:00 sh
 xtechkid@ubuntu:~/Desktop/expermiments$ kill -15 10005

そして、プロセスは終了しました

 xtechkid@ubuntu:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Terminated

それから私はそれを殺しました - 9

 xtechkid@ubuntu:~/Desktop/expermiments$ ps -ef | grep testscript.sh
 xtechkid 10059  9852  0 13:48 pts/2    00:00:00 sh testscript.sh
 xtechkid 10064 10007  0 13:48 pts/4    00:00:00 grep --color=auto testscript.sh
 xtechkid@ubuntu:~/Desktop/expermiments$ kill -9 10059

そして、プロセスは殺されました

 xtechkid@ubuntu:~/Desktop/expermiments$ sh testscript.sh
 This is a script which sleeps for few seconds ..
 Killed

違いはなんですか ?

4

2 に答える 2

34

「終了」シグナル SIGTERM は、プログラムで傍受できるシグナルです。多くの場合、バックグラウンドで実行することを意図したプロセスは、このシグナルをキャッチしてシャットダウン プロセスを開始し、クリーンな終了をもたらします。「kill」シグナル SIGKILL は傍受できません。これがプロセスに送信されると、そのプログラムは突然終了します。

たとえば、コンピューターをシャットダウンまたは再起動すると、通常、実行中のプロセスに SIGTERM が送信され、最初に実行中のプロセスがサポートされている場合にクリーンな方法で終了できるようになります。次に、数秒後、まだ実行中のプロセスに SIGKILL が送信され、使用中のリソース (使用中のファイルなど) が強制的に解放され、シャットダウン シーケンス (ファイルシステムのアンマウントなど) が続行されます。

于 2013-10-06T07:19:16.037 に答える