本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、シェルを一時停止する「suspend」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、シェルを一時停止する「suspend」コマンドです。
「suspend」はシェルを一時停止するコマンドです。他のプロセスから再開シグナル(SIGCONT)を受け取ることで処理を再開します(シグナルについては、Linux再入門第16回を参照)。
bashの内部コマンド(ビルトインコマンド、シェルコマンド)であるため、「man」コマンドではなく、「help」コマンドで詳細を表示できます。
suspend [オプション]
※[ ]は省略可能な引数を示しています。
オプション | 意味 |
---|---|
-f | ログインシェル上でも強制的に一時停止する |
「suspend」でシェルを一時停止します。
[CTRL]+[Z]キーで一時停止した場合、シェルが実行しているジョブを一時停止するのに対し、suspendコマンドはシェルそのものを停止します。
コマンドラインで誤ってsuspendコマンドを実行してしまうと、シェルが停止するためキー入力ができなくなります。この場合、他のシェルなどから再開シグナル(SIGCONT)を受け取るまでは再開できません。
コマンドラインでは、シェルから別のシェル呼び出して実行しているときにsuspendを実行することで、元のシェルに制御を戻すことができます。この場合、「fg」コマンドを用いて、suspendで停止していたシェルに戻ります(fgコマンドについては、Linux再入門第15回を参照)。
suspend
(現在実行中のシェルを停止する)(画面1)
画面1では、「su」コマンドを使って、root権限で別のシェルを実行しているさなかに、suspendコマンドを実行しました。
画面2の流れは画面1と同じです。ただし、どのような処理になっているかを調べるために、各シェルで「ps」コマンドを実行しています。
suspendで停止しているシェルを他の端末から再開させるには、「kill」または「killall」コマンドでSIGCONTシグナルを送ります。
kill -SIGCONT 再開させたいbashのPID
(指定したPID(プロセスID)に再開シグナルを送信する)
killall -SIGCONT bash
(全てのbashに対して再開シグナルを送信する。停止中のbashは再開し、停止していないbashは何も行わない)
画面3ではsuspendコメントを実行したために、bashが停止しました。この状態ではキー操作を受け付けません。例えば「fg」と入力して[Enter]キーを押しても、[CTRL]+[C]キーを押してもbashに制御は戻らず、コマンドラインからの操作はできません。
画面4は、suspend実行前後、およびkillコマンド実行後に「ps a」を実行して、bashがどのような状態になっているのかを、順に確認しています。psコマンドの「a」オプションは、端末を持つプロセスを全て表示するという意味です。画面4の3番目の列にある「S」は割り込み可能なスリープ状態を表しています。このため、キー入力待ち状態のbashは「S」表示になります。停止中は「T」表示です。
西村 めぐみ(にしむら めぐみ)
元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。
Copyright © ITmedia, Inc. All Rights Reserved.