私はバックグラウンドでweblogicサーバーを起動し、次のようにすぐにデフォルトスクリプトに戻る(続行スクリプトを実行する)kshスクリプトを作成しています。
nohup path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1
しかし、nohupコマンドの後、私のスクリプトはハングします。私が望むことをする正しい方法は何ですか?
nohup.outを削除したいです。
私はこれをAIX 7.1で実行しています。
答え1
バックグラウンド操作でコマンドを開始し、&
最後に次のようにします。
nohup path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1 &
ご存知のように、出力リダイレクトはnohup
とにかく出力がリダイレクトされるため、あまり役に立ちません。この問題を回避するには、将来スキップしてnohup
スクリプトで実行する操作を実行します(基本部分の代わりに)。
trap "" 1 # catch hangup signal
path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1 &
しかし、呼び出しプログラムが提供できる情報を完全に破棄することについて不安な気がします。これにより、間違ったパス名が呼び出されてもエラーは発生しません。
私は通常、次のようないくつかの追加情報を含むこれらの出力をログファイルに追加します。
(
LOGFILE=/var/log/weblogic_start.log
trap "" 1 # catch hangup signal
exec 1>> $LOGFILE # redirect output a bit more readably
exec 2>> $LOGFILE
exec < /dev/null
path_to_domain_bin/startWebLogic.sh &
date "+%Y%m%d:%H%M%S weblogic started with PID $!"
)
リダイレクトexec
はより読みやすく、IMOはスクリプトでも成果を上げ、通話がリダイレクトdate
されます。サブシェルでこのコマンドを実行すると、(...)
リダイレクトの効果はスクリプトのこの部分に残ります。