
バックグラウンドプロセスとは?
通常の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 | 
 
  







この記事へのコメントはありません。