我在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