強制的にプロセスを終了させる


何らかの原因で正常にプロセスが終了しなかった場合、 そのプロセスを強制的に終了させなければならない場合があります。 このような場合、プロセスはプロセス番号(PID)によってのみ識別されるので、 まず、該当するプロセスのPIDを調べなければなりません。

以下の手順にしたがって、 特定のプロセスを強制的に終了させる練習をしてみましょう。

  1. 練習用のプロセスを起動させる

    Xウインドウ用の電卓プログラムを起動させてみます。

    	% xcalc &
    	[1] 5713
    	%
    
    このように &を付けてバックグラウンドジョブとして起動すると、ジョブ番号(この例では 1)とプロセス番号(この例では 5713)が表示されます。

  2. psコマンドを使ってPIDを調べる

    	% ps
    	   PID TTY         TIME COMD
    	  5714 pts/4       0:00 ps
    	  5693 pts/4       0:01 tcsh
    	  5713 pts/4       0:01 xcalc
    
    このように、xcalcを起動したのと同じシェルであれば、psコマンドにオプションを付けなくてもPIDを調べることができます。

    普通は起動したシェルがわからなかったりするので、他のシェルから調べる必要がでてきます。ある利用者が起動した全てのプロセスのみを表示させるには

    	% ps -u sample
    	   PID TTY        TIME COMD
    	  5041 console    0:02 tcsh
    	  5482 pts/2      0:01 tcsh
    	  5480 console    0:01 kterm
    	  5481 console    0:03 twm
    	  5479 console    0:01 kterm
    	  5484 pts/1      0:01 tcsh
    	  5476 console    0:02 xeyes
    	  5473 console    0:00 sh
    	  5693 pts/4      0:01 tcsh
    	  5486 pts/3      0:02 tcsh
    	  5478 console    0:01 kterm
    	  5471 console    0:00 xinit
    	  5472 console    4:39 Xsun
    	  5713 pts/4      0:01 xcalc
    	  5477 console    0:01 xload
    	  5475 console    0:00 oclock
    	  5692 console    0:01 kterm
    
    の用に -u オプションの後にユーザ名を付けます。

  3. 該当するプロセスのPIDをコマンド名を頼りに抜き出す

    上のように沢山の候補からあるパターンに合致したものだけを抜き出すには、grepと組み合わせると便利です。

    	% ps -u sample | grep xcalc
    	  5713 pts/4      0:01 xcalc
    

  4. killコマンドでプロセスを強制終了させる

    	% kill 5713
    

  5. 特定の利用者だけでなく全てのプロセスを見るには

    	% ps -ef
    
    また、その中のあるパターンに合致したプロセスについてのみ知りたい場合は
    	% ps -ef | grep パターン文字列
    
    となります。


takuji@cc.mech.tohoku.ac.jp