- 追加された行はこの色です。
- 削除された行はこの色です。
*バックグランド実行について [#kb8b6648]
なんとなく、コマンドの後ろに''&''付ければ、バックグランド実行されるつもりでいました。
しかし、あるとき、バックグランドで実行されているような、されていないような状況に出くわしたわけです。
調べてみたら、こんな感じにするのが良いみたいです。
command /dev/null 2>&1 </dev/null &
リダイレクトの記述が右から左に解釈されることは別の記事[[]]で書いてますが、その通りに解釈すると、
リダイレクトの記述が右から左に解釈されることは別の記事[[標準出力の手引き]]で書いてますが、その通りに解釈すると、
+/dev/nullを標準出力に喰わす
+エラー出力を標準出力にマージ
+出力を/dev/nullに喰わす
ということになります。
つまり、入力も、出力もcommandには全くないようにみせることができる、みたいです。
例えば、ですが、weblogicの起動の場合で比較すると、
# startWeblogic.sh > /dev/null &
って一般的かと思いますが、これだと起動時に出力されるjavaの実行コマンド(膨大な量のクラスパスが含まれた1行)が表示されますが、
# startWeblogic.sh /dev/null 2>&1 </dev/null &
にするとでなくなります。
また、前者だと、なんかうまくバックグランドで実行されないケースを筆者は経験したことがあるのですが、後者だとうまくバックグランドで実行されてくれます。
ナイス!
実際、この記事のきっかけになったのは、rshでweblogicをバックグランドであげたい、ってネタだったのですが、最初は
# rsh ホスト名 -l ユーザ名 /・・/startWeblogic.sh > /dev/null &
ってやってたら、全然バックグランドで実行されなくて、ほとほと困ったわけですよ。
そもそも、何でなのか理由がわからなかった。しかし、リンクのサイトを見て、
# rsh ホスト名 -l ユーザ名 /・・/startWeblogic.sh /dev/null 2>&1 </dev/null &
ってやってみたら、一発OKでした。
すばらしい。
まあ、詳しい解説はリンクのサイトに譲ることにします。
***リンク [#za982a0f]
-[[UNIX FAQ LIST 3.2:http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.2.html]]
-[[UNIXの部屋 コマンド検索: リダイレクト:http://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8]]