以下两个命令(对齐以突出显示语法更改)仅在将命令传递到 shell 的方式上有所不同,它们在运行各种基于 Linux 的操作系统(debian、centos、opensuse 等)的接收器上运行良好:
$ ssh u@h "nohup bash -c 'echo testing' -- >/path/out 2>/path/err &"
$ echo 'echo testing' \
| ssh u@h "nohup bash -s -- >/path/out 2>/path/err &"
没有明显的原因,bash -s
当接收节点 ( h
) 运行 OS X (10.9.5) 时,第二个(使用 )失败:创建了重定向流的文件,但没有向 写入任何内容stdout
。如果该命令未分叉到后台,则该bash -s
语法适用于 OS X 接收器:
$ echo 'echo testing' \
| ssh u@h "nohup bash -s -- >/path/out 2>/path/err"
由于行为不一致,我无法判断问题是否源于nohup
mac 或bash -s
两者之间的交互;我在接收端没有看到任何挂起的进程;会话断开后,发送的作业ssh
似乎就消失了ssh
。disown
做这份工作也无济于事。bash
接收 OS X 系统上的版本是GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)
.所有nohup
/命令均在其上工作的接收 Linux 系统正在使用4 (4.2+)ssh
的各种版本。bash
可以通过更改接收器的配置来解决此问题吗ssh
?