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" &'