バックグラウンドで作業させる
Linuxにはバックグラウンドでコマンドを実行するためのコマンド(?)があります。
今でこそ、コンソール(telnetなど)をいくつも開いて作業をやる・・・という、
方法が主流になっていますが、昔はクライアントが貧弱でいくつもウィンドウを開けない・・・
ということがあったそうです。
まぁ、私も知らないような昔話は置いといて・・・
このバックグラウンドの作業、実は便利です。
特に、実行速度の遅い玄箱に作業(特にコンパイルなど)をさせると数時間は余裕でかかる作業・・・
なんてのは、かなりあります。
そんなときは、玄箱に作業を任せて母艦(メインPC)は電源を切って寝ちゃいましょう。
(遊びに行ってもいいんですが・・・)
また、KNOPPIXなどのisoファイル(サイズの大きいファイル)をダウンロードするときも、
wgetと併用すれば、
外出先でダウンロード実行>家に着いたらCD-RW(DVD+-RW)に焼いて、すぐ使う
なんて、こともできます。
なんだかんだ言ってもやっぱりコンパイルのときでしょうけども・・・使うのは。
「KNOPPIX」
CDまたはDVDだけで実行可能なLinuxです。
これ、Winが動かなくなったときとか、玄箱で設定ミスをしちゃったときなどに使えるんです。
NTFSもFATもetc3も・・・ほとんどのフォーマット形式に対応していて、Winとはまったく関係なく動作するから。
PCがCDブート可能(いまどきのPCならBIOSの設定を弄るだけでできるはず)なら起動させることが可能です。
まぁ、一部PCではおまじないとか呪文とかを使う必要があるみたいですが。。。
それは各自で調べろってことで・・・(をひ
これでサーバーを作れば一番安全なんだろうけど・・・(システムを書き換えることができないから)
やれること一覧 ・バックグラウンド動作指定 ・nohup:Manpage of NOHUP ・[番外編]ログを取りながら作業する
一番単純な方法。
設定をミスするとひどい目を見てしまう方法。
それがバックグラウンド動作指定をする方法。
$ command [arg...] &
注:arg...はcommandの引数
注:標準出力は全て画面に表示される
つまり、他の作業ができない
ログをとりたい場合は標準出力(1と2)を適当なファイルに出力する
$ command [arg...] >[log.txt] 2>&1 &
何も表示させず、ログも取る必要のない場合は/dev/nullに捨てる
$ command [arg...] >/dev/null 2>&1 &
「コンソールがとんでもないことに」
バックグラウンド動作のため(?)のコマンドnohupを使った方法。
$ touch nohup.out $ nohup command [arg...] & 注:実行するディレクトリ内にnohup.outがあることを確認 注:nohup.outは必ず上書きされる 注:nohupは自動的にバックグラウンドに移行しないため、 & で明示的に指定する必要がある(参考にもあるけど)やり方(ユーザーディレクトリにログファイルを作る)
$ nohup command [arg...] & 注:実行するディレクトリ内にnohup.outがないことを確認終了後の処理(nohup.outを任意のログファイル名に変更する)
$ mv /foo/bar/nohup.out /some/where/[log.txt] または $ cp /foo/bar/nohup.out /some/where/[log.txt] 注:パスは自分の環境に合わせて読み直すこと「自動的にバックグラウンドに移行しない」
フォアグラウンドでの作業中に、ログを取りながら作業したいときがある。
そんなときに使うコマンドが tee だ。
ちょっと、使い方に癖があるので(ついでだから)ここに書いておく。
$ command [arg...] 2>&1 | tee [log.txt]
注:基本的にログファイルは上書きされる
注:2>&1を入力しないとエラーが記載されない
「tee」戻るなら押せ!