通过 ssh 获取以 sudo 启动的进程的 PID
Get the PID of a process started with sudo via ssh
我需要通过 SSH 和 sudo
.
远程启动的进程(此处 sleep 20
)的进程 ID
插入 date
以说明 SSH 连接的持续时间。当然,没有连接,我的远程机器上也没有进程。
$ date; ssh pc1 "sleep 20 & echo $!"; date # works
Mi 20. Jan 16:18:29 CET 2016
11540
Mi 20. Jan 16:18:50 CET 2016
$ date; ssh pc1 "echo password | sudo -S sleep 20"; date # works
Mi 20. Jan 16:20:44 CET 2016
[sudo] password for lab: Mi 20. Jan 16:21:04 CET 2016
$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo $!"; date # does not
Mi 20. Jan 16:21:55 CET 2016
11916
Mi 20. Jan 16:21:56 CET 2016
在第二台机器上,最后一个完整的命令运行良好:
$ date; ssh pc2 "echo password | sudo -S sleep 20 & echo $!"; date
Mi 20. Jan 16:23:40 CET 2016
6035
[sudo] password for lab: Mi 20. Jan 16:24:01 CET 2016
任何建议为什么两台机器有这种不同的行为?
信息:我知道清除密码的风险,但它是隔离测试网络中的共享帐户。
是这样的吗?
$ remote_pid=$(ssh mauro@planck 'sleep 20 > /dev/null 2>&1 & echo $!')
$ echo $remote_pid
13878
或...
$ remote_pid=$(ssh mauro@planck 'echo secret | sudo -S sleep 20 > /tmp/log 2>&1 & echo $!')
看起来像是进程依赖性不完整的问题。在额外的几毫秒内,连接(和进程)一直保持建立。
$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo $! && sleep 0.01"; date
Do 21. Jan 14:50:39 CET 2016
[sudo] password for lab: 6841
Do 21. Jan 14:51:00 CET 2016
我需要通过 SSH 和 sudo
.
sleep 20
)的进程 ID
插入 date
以说明 SSH 连接的持续时间。当然,没有连接,我的远程机器上也没有进程。
$ date; ssh pc1 "sleep 20 & echo $!"; date # works
Mi 20. Jan 16:18:29 CET 2016
11540
Mi 20. Jan 16:18:50 CET 2016
$ date; ssh pc1 "echo password | sudo -S sleep 20"; date # works
Mi 20. Jan 16:20:44 CET 2016
[sudo] password for lab: Mi 20. Jan 16:21:04 CET 2016
$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo $!"; date # does not
Mi 20. Jan 16:21:55 CET 2016
11916
Mi 20. Jan 16:21:56 CET 2016
在第二台机器上,最后一个完整的命令运行良好:
$ date; ssh pc2 "echo password | sudo -S sleep 20 & echo $!"; date
Mi 20. Jan 16:23:40 CET 2016
6035
[sudo] password for lab: Mi 20. Jan 16:24:01 CET 2016
任何建议为什么两台机器有这种不同的行为?
信息:我知道清除密码的风险,但它是隔离测试网络中的共享帐户。
是这样的吗?
$ remote_pid=$(ssh mauro@planck 'sleep 20 > /dev/null 2>&1 & echo $!')
$ echo $remote_pid
13878
或...
$ remote_pid=$(ssh mauro@planck 'echo secret | sudo -S sleep 20 > /tmp/log 2>&1 & echo $!')
看起来像是进程依赖性不完整的问题。在额外的几毫秒内,连接(和进程)一直保持建立。
$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo $! && sleep 0.01"; date
Do 21. Jan 14:50:39 CET 2016
[sudo] password for lab: 6841
Do 21. Jan 14:51:00 CET 2016