我认为这概括了这一点:
# /usr/bin/nohup echo hello
/usr/bin/nohup: ignoring input and appending output to `nohup.out'
# ssh localhost /usr/bin/nohup echo hello
hello
Run Code Online (Sandbox Code Playgroud)
发生了什么事?
显然,
\n\n\n\n\n最新版本的 ssh 开始对非 TTY STDIO 使用管道
\n
所以
\n\n\n\n\nbash 脚本无法判断是否
\nssh正在通过管道传输非 tty 命令。
因为只有当它检测到/连接到终端nohup时才会采取行动(并且当输出进入管道时不执行任何操作),并且启动它的方式看起来像是正在通过管道传输,因此您会得到您的行为正在看到。stdoutstderrssh
正如muru 指出的,您可以使用参数强制ssh分配 a :tty-t
$ ssh -t localhost "/usr/bin/nohup /bin/echo foo"\n/usr/bin/nohup: ignoring input and appending output to \xe2\x80\x98nohup.out\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |