何かコマンドを実行するのはよくあることです。
しかしコマンドを実行してからやむを得ない事情で
ログアウトする必要に迫られることもまあまああります。
経験的にrootユーザで実行するとログアウト後も継続され、
一般ユーザだとバックグランドで実行していても
ログアウト時に強制終了されることを知っていたため、
長時間かかる処理の途中でログアウトすることが
最初から分かっている場合はrootで実行したりしていました。
しかし最近もっといい方法があることを知りました。
nohupコマンドです。
何がコマンドを実行する際に
$ nohup <コマンド>とします。
コマンドの実行時間を計るのに
$ time <コマンド>なんてやりますが、これと同じ書式です。
nohup付きで実行しているとログアウト(ターミナルを強制終了)しても
そのコマンドの実行が継続されます。
もちろん一般ユーザでも実行可能です。
コンソールに出力されるデータはカレントディレクトリの
"nohup.out"ファイルに書き込まれるのであとで確認することもできます。
また前もってログアウトするつもりなく
実行を開始した場合には別の手があります。
実行中(フォアグランド)のコマンドを
[Ctrl]+[z]キーで一時停止し、
$ jobsでジョブ番号(普通は1)を確認した上で、
$ bg <ジョブ番号> $ disown %<ジョブ番号>を実行すればログアウト(ターミナルを強制終了)しても
実行が継続されます。
ただしコンソールに出力されるデータは喪失し、
実行結果を直接知ることもできません。
実行は計画的に、と言うことですね。
0 件のコメント:
コメントを投稿