SSH経由でコマンドを実行するときのあいまいなリダイレクト

SSH経由でコマンドを実行するときのあいまいなリダイレクト

SSHを介してリモートサーバーのバックグラウンドでプログラムを起動しようとしていますが、プログラムがあるディレクトリで実行する必要があります。

私は次を試しています

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

しかし、これはエラーを引き起こします。

Ambiguous output redirect.

/dev/nullそれ以外の場合、ssh呼び出しは完了しないため、出力を次にリダイレクトします。

{}引用符を使用または使用せずにコマンドをラップしようとしましたが、()同じエラーが発生します。

この問題をどのように解決できますか?

答え1

上記のようにコメントから、リモートユーザーのログインシェルはcshまたはですtcsh。これらのシェルは、さまざまなPOSIXシェルとは非常に異なる構文、特にリダイレクト構文を持っています。

/dev/null標準出力と標準エラーをこれらのシェルにリダイレクトするには、次のようにします>& /dev/null

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

または、POSIX シェルを明示的に呼び出して次のコマンドを実行します。

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

関連情報