我正在尝试通过 SSH 运行一个程序,该程序在断开连接时继续运行。这个堆栈溢出答案给了我以下命令:
nohup sleep 30 > foo.out 2> foo.err < /dev/null &
不幸的是,它似乎不起作用。我登录 ( ssh -Y
) 到远程 bash shell 并执行它,断开连接,然后在 30 秒内返回,但jobs
没有显示任何内容,foo
文件也没有显示任何内容。注销后还有其他方法可以通过 ssh 运行后台作业吗?
答案1
ssh user@server "echo /usr/run/my/job | at now +1 min"
答案2
jobs
如果您在另一个 shell 中生成该进程,则不会显示任何内容;其手册页描述的第一行是:
作业实用程序应显示在当前 shell 环境中启动的作业的状态
因此,您可以 ssh 到计算机sleep 30 &
,然后从另一个窗口 ssh,但jobs
即使该进程显然仍在运行,仍然不会在另一个窗口中显示任何内容。你所拥有的命令有效;尝试使用ps
或pgrep
来检查它(例如pgrep sleep
)