Q1psを実行すると何が表示されますか?
プロセスの確認と停止 — ps / kill
psで実行中プロセスを一覧し、$ で自分のPIDを確認、& で裏に回したプロセスをkillで停止するまでを、ブラウザ端末で操作しながら学べます。
実行中のプロセスを見る — ps
プロセスとは、実行中のプログラム 1 つ 1 つを指します。
psは今この瞬間に動いているプロセスの一覧を表示するコマンドです。
各プロセスには PID(プロセス番号)という固有の番号が割り当てられ、後で停止するときの目印になります。
一覧が多いときはps | grep sleepのようにパイプでgrepに渡すと、名前でプロセスを絞り込めます。
PIDが割り当てられます。psはこの実行中プロセスを一覧します。| コマンド | 意味 |
|---|---|
ps | 実行中プロセスを PID 付きで一覧 |
ps | grep name | 名前でプロセスを絞り込む |
echo $$ | 今のシェル自身の PID を表示 |
cmd & | コマンドをバックグラウンドで実行 |
シェル自身の PID は特別な変数$$で取り出せます。
$$はシェルが自分の PID を入れて持つ特別な変数です。
echo $$を実行すると、今コマンドを打っているこのシェルの番号が表示され、psの一覧の中に同じ番号が見つかります。
psで動いているプロセスの PID 一覧、echo $$で今のシェルの PID を確認します。ps # 実行中プロセスの一覧(PID 付き)
echo $$ # このシェル自身の PID
ps -ef # より詳しい一覧(環境により表示形式は異なる)
バックグラウンド実行と停止 — & と kill
コマンドの末尾に&を付けると、そのコマンドをバックグラウンドで実行し、終了を待たずにすぐ次の操作へ進めます。
sleep 30 &は 30 秒間何もせず待つだけのプロセスを裏で動かすので、停止操作の練習に向いています。
バックグラウンドのプロセスを止めるにはkillに PID を渡します。
&で起動した直後にシェルが PID を表示し、psの一覧でも確認できます。
PID をkillに渡すと、そのプロセスへ終了の合図が送られます。
通常のkill PIDで止まらないプロセスにはkill -9 PIDで強制終了の合図を送ります。
| コマンド | 送る合図 | 用途 |
|---|---|---|
kill PID | SIGTERM(終了要求) | 通常の停止。プロセスに後始末させる |
kill -9 PID | SIGKILL(強制終了) | 止まらないプロセスを強制的に落とす |
&で裏に回し、psで PID を確認し、killでそのプロセスを終了します。kill には正しい PID を
killは渡された PID のプロセスへ終了の合図を送ります。
番号を取り違えると別のプロセスを止めてしまうため、psの一覧で対象の PID を確認してから実行してください。
この環境での kill について
このブラウザ環境では、killに PID を渡しても実環境のようにはプロセスが止まらず、No such processと表示されることがあります。
本講座ではkill PID / kill -9 PIDというコマンドの形を学びます。
実際のサーバーでは、psで PID を確認してkillで停止する、この流れがそのまま使えます。
sleep 60 & # 60 秒待つプロセスを裏で実行
ps # 一覧から sleep の PID を確認
kill 123 # 確認した PID(例: 123)を渡して終了
理解度チェック
まずは1問ずつ答えてみましょう。
Q2echo $$で表示されるのは何ですか?
Q3コマンドの末尾に&を付けると何が起こりますか?