#author("2019-04-18T02:23:08+00:00","","") #author("2022-12-17T12:34:04+09:00","","") #topicpath //////////////////////////////////////////////////////////////////////////////// * 目次 [#w1f58278] #contents(); //////////////////////////////////////////////////////////////////////////////// * プロセス管理 [#b32bc542] //============================================================================== ** logoutしても jobをkillされたくないときは [#never-kill] - 端末から起動したfooというjobが走っている途中で、その端末を終了すると、fooは終了してしまう。~ これは端末終了時にシグナル SIGHUPがfooに送られるため。 - job がSIGHUPを無視出来るようにすれば、端末が死んでもfooが死なないようになる。 //------------------------------------------------------------------------------ *** nohup [#nohup] - 起動元の端末をlogoutすると、SIGHUPが投げられjobが終了してしまうが、 nohupの引数として起動したjobはSIGHUPを無視して稼働し続けるようになる。 $ nohup <command> [args...] [&] - 優先度は+5 されるため、実行の割り当て時間はやや小さくなる。 - 標準出力が端末の場合、 標準出力と標準エラー出力は、 nohup.outに追加書き込みで出力される。 -- nohup.out に書き込めないときは、 ${HOME}/nohup.out へ追加書き込みする。 -- ${HOME}/nohup.out にも書き込めない場合、''コマンドは実行されない''。 - nohupはコマンドを自動ではバックグラウンドに送らないので、起動時に自分で ''&'' を付けてやる必要がある。 //------------------------------------------------------------------------------ *** disown [#a7b96393] - disown は、''bashの組み込みコマンドである''。 - nohupを付けずに起動したコマンドを、後から SIGHUPを無視できるようにする。 //============================================================================== ** ゾンビプロセスの確認と殺し方 [#zonbie] + ゾンビプロセス有無の確認 $ ps -ef | grep defunct + 見つかったゾンビプロセスを殺す $ kill -KILL <見つかったゾンビプロセスの PID> //------------------------------------------------------------------------------ *** ゾンビプロセスとは [#e4f57b39] - プロセスの実態は存在しないが、プロセステーブルにエントリが存在する状態。 //============================================================================== ** 優先度 [#u8e6a5c2] //------------------------------------------------------------------------------ *** 優先度を指定して実行 [#z855db5b] - nice コマンドを使う $ nice -n <nice値> <program> ... -- <nice値> : 優先度。値域は [-20(優先度最高),19(優先度最低)] //------------------------------------------------------------------------------ *** 既存のプロセスの優先度を変更 [#p26ca1d0] - root 権限で renice コマンドを使う # renice -n <nice値> -p <PID> //============================================================================== ** 稼働中のプロセスの検索 [#d0e3c74e] //------------------------------------------------------------------------------ *** ps [#ps_] - 概要 -- 現在実行されているプロセスのスナップショットを表示する - option の種類 -- ps には3種類のオプションがある。 |~option type |~description |~remark | |UNIX option |オプションを纏めることが可能。&br;前にはダッシュ (-) が必要 | | |BSD option |オプションを纏めることが可能。&br;前にはダッシュ (-) を付けてはならない | | |GNU long option |前には2つのダッシュ (--) が必要 | | -- これらのオプションは混在させることが可能だが、衝突が起こるかもしれない。 //------------------------------------------------------------------------------ *** pgrep [#pgrep] - 概要 -- 指定した文字列にコマンド名等が一致するプロセスを表示する。 -- オプション指定がない場合、マッチしたプロセスの PID のみを表示する。 - コマンド書式 $ pgrep [option(s)] <pattern> - options |~option |~description |~remark | |-l |プロセス名を表示 | | |-a |検索で見つかったコマンドラインを全て表示する | | |-u <user> |<user> が実行ユーザであるプロセスにマッチする。|<user> はユーザ名、uid いずれかを指定出来る | |-U <user> |<user> が実ユーザであるプロセスにマッチする。 |~| |-n |マッチしたプロセスが複数ある場合、最後に起動されたものを選択 | | |-o |マッチしたプロセスが複数ある場合、最初に起動されたものを選択 | | |-t <term> |端末 <term> から起動したプロセスにマッチする。 |<term> は '/dev/' 抜きで指定する(ex. tty3) |