トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

バックグランド実行について のバックアップソース(No.2)

*バックグランド実行について [#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]]