【发布时间】:2017-05-26 07:55:00
【问题描述】:
我想获取我通过 ssh 启动的进程的 PID。
我有一个 bash 脚本,这是我写的:
SSH_COMMAND='ssh'
cmd=`eval $my_cmd`
PROG_CMD="$program $cmd"
$SSH_COMMAND root@server "(nohup $PROG_CMD) & echo "'$!'" > prog.pid"
请注意,变量“program”和“my_cmd”是在 JSON 文件中定义的(分别包含我的程序和启动程序的命令)。
我的程序在服务器上完全按照它应该启动的方式启动,但我在 prog.pid 文件中没有正确的 PID(即:程序的 PID)。
编辑:我对 SSH_COMMAND 做了一个回显,我得到了:
ssh root@server (my_program args > output.log 2>&1 & ) & echo $! > prog.pid
args : my_program 的参数
output.log : 我的程序的日志文件
【问题讨论】:
-
prog.pid 应该在服务器的根目录中的哪里?
-
不,prog.pid 位于“本地机器”上,我在那里执行 ssh 命令。但问题不在这里。我有一个带有 PID 的 prog.pid 文件......它只是不正确的!
-
在第一个命令中 prog.id 是在双引号之间的 ssh 命令中,所以在远程
-
报价很好,恕我直言。
-
我没有说引号是错误的,但是该命令没有按预期执行,因为第一个命令默认情况下会在当前工作目录中的远程服务器上创建一个文件根目录