サーバ管理
Solarisに限ったことではありませんが、unixのシェルではジョブをフォアグランドで実行したり、バックグラウンドで実行したりと自由自在に切り替えることが出来ます。
バックグラウンドで実行する場合は、コマンドの最後にアンパサンド(&)を付けて実行します。フォアグランドで実行していたジョブをバックグラウンドに切り替えたいときは、一度Ctrl+Zでジョブをサスペンドしておいてシェルに戻り、bgコマンドを実行します。
バックグラウンドのジョブのステータスを見たい場合は、jobsコマンドを実行すれば確認できます。バックグラウンド処理は、時間が掛かりそうなコマンドを実行するときに便利です。文章では分かりにくいので例も記載します。
コマンドをフォアグランドで実行する。コマンドプロンプトは、処理が終了するまで戻ってきません。
# gzip access.log
結果出力までが処理時間が長いな〜。やっぱりバックグラウンドで実行しよう。処理を一度サスペンドしてシェルに戻ります。
Ctrl+Z --- [1] + Suspended gzip access.log
先ほどのコマンドをバックグラウンドで実行する。サスペンド状態の続きから処理が始まります。
# bg --- [1] gzip access.log &
暫く経ってから、バックグラウンドのジョブはちゃんと動いてるのか、確認したい場合。
# jobs --- [1] Running gzip access.log
途中でこのジョブは必要なくなって、停止したい場合。
# kill %1
上記のことを一度fgコマンドでジョブをフォアグランドにしておいて、Ctrl+Cでも停止出来ます。
# fg %1 Ctrl+C
説明が前後しましたが、ここで頻繁に"1"と言う数字が出てきます。この数字はジョブ番号です。ジョブコントロールするときは、%にジョブ番号を付ければジョブを指定出来ます。