通过 ssh 运行命令时重定向不明确

通过 ssh 运行命令时重定向不明确

我正在尝试通过 ssh 在远程服务器上的后台启动一个程序,但该程序必须从它所在的目录运行。

我尝试执行以下操作

ssh -q user@server 'cd directory && command > /dev/null 2>&1 &'

但这会导致错误

Ambiguous output redirect.

我将输出重定向到,/dev/null因为否则 ssh 调用将无法完成。

我尝试将命令包装在{}和中(),以及带引号和不带引号,但出现相同的错误。

我该如何解决这个问题?

答案1

如上所述在评论中,远程用户的登录 shell 是cshtcsh。这些 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" &'

相关内容