Ksh
aix ksh 在沒有 nohup.out 的情況下啟動 weblogic 伺服器並返回底層腳本
我正在編寫一個 ksh 腳本,我想在後台啟動 weblogic 伺服器並立即返回到底層腳本(繼續執行腳本),如下所示:
nohup path_to_domain_bin/startWebLogic.sh>/dev/null < /dev/null 2>&1
但是我的腳本在 nohup 命令之後掛斷了,做我想做的事情的正確方法是什麼?
請注意,我想擺脫 nohup.out。
我在 AIX 7.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
呼叫也會被重定向。在子 shell 中執行它(...)
可以確保重定向的效果保留在腳本的這一部分。