バックグラウンドプロセスとは?
通常のlsや、cd等はその場限りのコマンドで、すぐに自動でプログラムは終了します。
Linuxでは、ずっと常駐してプログラムを動かすことができます。それを「バックグラウンドプロセス」と呼びます。
プログラムをバックグラウンドで動かすには?
コマンドの最後に、「&」を入力することで、そのプログラムはバックグラウンドで動かすことができます。
コマンドの実行結果に表示されている「5067」というのは、バックグラウンドで動いているプロセスのプロセスIDを示します。
「sleep」コマンドについて
というのは、操作を指定した秒数分停止させるコマンドで、本来はフォアグラウンドで停止するのですが、バックグラウンドになっているので普通に操作ができます。
なので、psコマンドを打つと、普通にプロセスとしては存在してることがわかります。
バックグラウンドプロセスを停止させるには?
バックグラウンドプロセスを停止させるには「killコマンド」を使います。
1 |
kill [オプション] プロセスID |
実行例
sleepプロセスが消えています。
killコマンドで指定できるオプション
オプションとして、「シグナル」という信号を送信して、プロセスの挙動を制御できます。
シグナル名 | 数値 | 説明 |
---|---|---|
SIGHUP | 1 | ハングアップ、ハングアップするとプロセスにこの信号が送られます。プロセスはこの信号を受信すると終了します。
sshのログアウトを行ったタイミングなどで送ります。 設定ファイルの再読み込みをしたい場合などにも使われます。 |
SIGINT | 2 | キーボードからの割り込みシグナル |
SIGKILL | 9 | 強制終了、たまにSIGTERMを受け付けなくなったプロセスがある。その場合はSIGTERMではなくSIGKILLを使います。 |
SIGTERM | 15 | 正常終了(オプション未指定の場合のデフォルト値) |
SIGCONT | 18 | 一時停止しているジョブへの再開シグナル |
SIGSTOP | 19 | 一時停止シグナル |
他にもシグナルがあり、どのようなシグナルがあるかは以下のコマンドで確認できます。
1 |
man 7 signal |
nohup
&をつけるだけだとterminal終了後に自動的にプログラムも終了してしまいます。nohupをコマンドの先頭につけるとSIGHUPを無視します。
1 |
nohup (コマンド) & |
またもしnohupをつけ忘れた場合はdisownを実行すれば同じ扱いになります。
1 |
disown |
この記事へのコメントはありません。