Linuxマシンでbashスクリプトを使用してリモートLinuxマシンでいくつかのことを自動化しようとしており、機能するコマンドがあります(中括弧はcmd連結からの遺物です):
(ssh -i /path/to/private_key user@remoteHost 'sh -c "echo 1; echo 2; echo 3; uname -a"')
しかし、バックグラウンドで実行するためにアンパサンドが連結されている場合、実行されているように見えますが、stdout にも stderr にも出力が出力されず、ファイルへのリダイレクト (中括弧内) でさえ機能しません...:
(ssh -i /path/to/private_key user@remoteHost 'sh -c "echo 1; echo 2; echo 3; uname -a"') &
ところで、私はssh
Linux 2.4.37.10 (WRT54G 上の TomatoUSB ビルド) 上の BusyBox v1.17.4 でクライアント dropbear v0.52 を実行しています。
出力を取得する方法はありますか?この動作の理由は何ですか?
編集:
便宜上、プレーンなssh
ヘルプ出力を次に示します (TomatoUSB で):
Dropbear client v0.52
Usage: ssh [options] [user@]host[/port][,[user@]host/port],...] [command]
Options are:
-p <remoteport>
-l <username>
-t Allocate a pty
-T Don't allocate a pty
-N Don't run a remote command
-f Run in background after auth
-y Always accept remote host key if unknown
-s Request a subsystem (use for sftp)
-i <identityfile> (multiple allowed)
-L <listenport:remotehost:remoteport> Local port forwarding
-g Allow remote hosts to connect to forwarded ports
-R <listenport:remotehost:remoteport> Remote port forwarding
-W <receive_window_buffer> (default 12288, larger may be faster, max 1MB)
-K <keepalive> (0 is never, default 0)
-I <idle_timeout> (0 is never, default 0)
-B <endhost:endport> Netcat-alike forwarding
-J <proxy_program> Use program pipe rather than TCP connection
1 日後の修正:
ブレースは、同じ結果の有無にかかわらず、害はありません。ssh認証をバックグラウンドにしたかったので、この-f
オプションは解決策ではありません。興味深い補足: 予期しないオプション ( など-v
) が指定された場合、エラー メッセージWARNING: Ignoring unknown argument '-v'
が表示されます。
x86 Ubuntu 通常のssh
クライアントで試してみました。動作します。x86 Ubuntuでも試しdbclient
ました。動作します。したがって、この問題は TomatoUSB ビルドに固有のもののようです。または、「dropbear v0.52」の内部では、TomatoUSB のビルドと Ubuntu が提供するものとの間で不明な修正が行われていました (ヘルプ出力の違いは、デフォルトの受信ウィンドウ バッファーのサイズが 2 倍になっているだけです)。 Ubuntuの場合)...プロセスがバックグラウンドに置かれたかどうかをどのように知ることができますか? 問題の解決策はありますか?