プロセスが固まったら、いつも kill -9 PID で止めてる
普通の kill と何が違うん
【疑問】止まらんプロセスはとりあえず kill -9 でええの?シグナルの基本【LPICレベル1】
>>1
kill はプロセスを殺すコマンドというより、シグナル(合図)を送るコマンド
番号を指定しないと SIGTERM( 番)、-9 は SIGKILL( 番)を送る
>>2
他にどんなシグナルがあるん
>>3
よく出るのはこの4つ。kill -l で一覧が出る
番 SIGHUP(端末の切断)、 番 SIGINT(Ctrl+C)、 番 SIGKILL(強制終了)、 番 SIGTERM(終了の依頼)
どうせ終わらせるんやから、最初から -9 でよくない?
>>5
SIGTERM はプロセスが受け取って、一時ファイルを消したり、書きかけのデータを保存したりしてから終われる
SIGKILL はカーネルがその場で終わらせる。プロセス側では受け取ることも無視することもできないから、後始末なしで終わる
まず普通の kill、それで終わらんときに -9
>>6
受け取るってどういうこと
>>7
シェルスクリプトなら trap で書けるtrap 'echo caught TERM; exit 3' TERM を入れたスクリプトに kill を送ると、caught TERM と出して終了ステータス で終わった
同じスクリプトに kill -9 を送ると、trap は動かずにその場で終わった
>>8kill -9 のあとに終了ステータスを見たら やったんやけど、これ何
>>9
シグナルで終わったプロセスの終了ステータスは、シェルでは にシグナル番号を足した値になる
Ctrl+C( 番)で止めたら
PID はどうやって調べるん
>>11ps aux や ps -ef で一覧を見るか、名前から探すなら pgrep sleep のようにする
名前を指定して直接送るなら pkill や killall。ただ、名前が似た別のプロセスまで巻き込むことがあるから、先に pgrep で確かめる
Ctrl+Z で止めたやつはどうなってるん
>>13
Ctrl+Z は SIGTSTP を送って一時停止させるだけで、終わってはいない。ps の STAT 列が T になるfg で手前に戻して再開、bg でバックグラウンドで再開。再開のときは SIGCONT が送られてる
>>14
SIGSTOP っていうのもあるやろ。Ctrl+Z と同じちゃうの
>>15
止めるのは同じやけど、SIGTSTP はプロセスが受け取って無視することもできる
SIGSTOP は SIGKILL と同じく、受け取ることも無視することもできない
SIGHUP はいつ使うん
>>17
端末を閉じたりログアウトしたりすると、そこから起動したプロセスに送られて、ふつうは終わる
ログアウトしても動かし続けたいなら nohup コマンド &
常駐するサーバープログラムでは、HUP を受けたら設定ファイルを読み直す、という作りのものが多い
kill -9 しても消えないプロセスがあった
>>19ps の STAT が Z ならゾンビ。もう終わってて、親プロセスが終了を受け取るのを待ってるだけの状態
すでに終わってるからシグナルは効かない。親プロセスが受け取るか、親が終わると片付く
STAT が D(ディスクなどの入出力待ち)のときも、待ちが終わるまで -9 がすぐには効かないことがある
優先度を下げて動かす nice は?
>>21
nice 値は から で、初期値は 。大きいほど優先度が低いnice -n 10 コマンド で低めの優先度で起動して、動いてるものは renice で変える
一般ユーザーは値を大きくする(優先度を下げる)方向にしか変えられない。nice -n -5 は Permission denied になる
kill は合図を送るだけ。まず TERM で後始末させて、ダメなときだけ KILL
それでも消えんときは STAT を見る。ゾンビなら親のほうを見る
管理人のひとこと
killはシグナルを送るコマンド。指定なしは SIGTERM()で、プロセスは後始末してから終われる。-9の SIGKILL はその場で強制終了し、受け取ることも無視することもできない。- まず
kill、終わらないときにkill -9。シグナルで終わったときの終了ステータスは シグナル番号(KILL は 、TERM は 、Ctrl+C は )。 - Ctrl+C は SIGINT、Ctrl+Z は SIGTSTP(一時停止で、
fg・bgで再開)、SIGHUP は端末の切断。ログアウト後も動かすならnohup。 - ゾンビ(STAT が Z)はすでに終わっているのでシグナルが効かない。nice 値は 〜 で、一般ユーザーは優先度を下げる方向にしか変えられない。