我正在尝试通过 ssh 在远程服务器上的后台启动一个程序,但该程序必须从它所在的目录运行。
我尝试执行以下操作
ssh -q user@server 'cd directory && command > /dev/null 2>&1 &'
但这会导致错误
Ambiguous output redirect.
我将输出重定向到,/dev/null
因为否则 ssh 调用将无法完成。
我尝试将命令包装在{}
和中()
,以及带引号和不带引号,但出现相同的错误。
我该如何解决这个问题?
答案1
如上所述在评论中,远程用户的登录 shell 是csh
或tcsh
。这些 shell 与各种 POSIX shell 具有非常不同的语法,特别是重定向的语法是不同的。
要将标准输出和标准错误重定向到/dev/null
这些 shell,请使用>& /dev/null
:
ssh -q user@server 'cd directory && command >& /dev/null &'
或者,显式调用 POSIX shell 来运行命令:
ssh -q user@server 'sh -c "cd directory && command >/dev/null 2>&1" &'