【发布时间】:2016-01-20 15:38:08
【问题描述】:
我需要通过 SSH 和 sudo 远程启动的进程的进程 ID(此处为 sleep 20)。
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
有什么建议为什么两台机器会有这种不同的行为?
信息:我知道清除密码的风险,但它是隔离测试网络中的共享帐户。
【问题讨论】:
-
“不起作用”是什么意思?
-
我投票结束这个问题,因为它更适合Unix & Linux Stack Exchange。
-
这意味着我的进程没有在远程机器上运行。它要么因关闭连接而被杀死,反之亦然。
-
唉,这个问题与为 StackOverflow 定义的编程无关。它可能更适合unix.stackexchange.com 或ServerFault.com(专业的服务器或网络相关的基础设施管理)。考虑使用问题底部的标记链接,并要求版主将其移至正确的站点。 (请不要在多个网站上发布相同的问题。)
-
我将其标记为移动。对我来说,这是 Shell/Bash 编程。