【发布时间】:2016-01-15 20:53:09
【问题描述】:
我正在尝试为 java 程序编写一个初始化服务脚本。我在初始化脚本中有以下内容。
$USER = awesomeuser
$PROGRAM_CMD = "java -server com.test.TestClass"
$PROGRAM_LOG = "/var/log/awesome_log"
sudo -u $USER nohup $PROGRAM_CMD >> $PROGRAM_LOG 2>&1 </dev/null &
server_pid=$!
echo $server_pid > $pidfile
发生的事情是我正在获取父进程的 pid,但我真的想要从子 shell 中运行的 java 进程的 pid。
无论如何我可以构造命令以便我得到子shell命令pid吗?
谢谢!
【问题讨论】:
-
$USER = awesomeuser-- 这真的是bash吗?看起来像 PHP。 -
您需要学习基本的
bash语法。变量赋值就像USER=awesomuser——变量前没有$,=周围没有空格。 -
那是不是子shell。那是sub process which happens to be a shell。
标签: bash shell init pid subshell