我在bash中有一個腳本來啓動一個java程序,並且我想在程序執行後獲取它的pid。該pid將被保存在一個文本文件中。Bash:獲取使用不同用戶的進程的PID
現在,我有這樣的事情:
if [ "$USER" == "root" ]
then
su $APP_USER -c "nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &"
su $APP_USER -c "echo $! > $PID_PATH/$CAT.pid"
else
nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &
echo $! > "$PID_PATH/$CAT.pid"
fi
我也試過這樣,但它不工作也沒有。
if [ "$USER" == "root" ]
then
su $APP_USER -c "(nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &); (echo $! > $PID_PATH/$CAT.pid)"
else
nohup java $JAVA_OPTS >> $LOG_OUT 2>> $LOG_ERR &
echo $! > "$PID_PATH/$CAT.pid"
fi
當我運行我的APP_USER所有的偉大工程,當我以root身份運行我的java程序啓動,但創建空pid文件
。
該命令有效,但該文件寫入爲空。 我沒有得到pid。 – fabio 2013-05-14 13:13:33
發現問題...更新..檢查現在.. – anishsane 2013-05-14 13:38:03
它的工作! :D 你真是太厲害了,'echo'給出了一個空字符串。這就是爲什麼該pid文件是空的。 – fabio 2013-05-14 14:37:50