ssh targethost&;fg - 動作しません。ところで、なぜそうなのでしょうか?

ssh targethost&;fg - 動作しません。ところで、なぜそうなのでしょうか?

sshセッションのpidを取得するために、次の組み合わせを試しました(バックグラウンドで実行するとpidが表示されます)。その後、fgを使用してsshセッションに戻り、パスワードを入力しました。

ssh targetHost &; fg

次のエラーが発生します。

-bash: syntax error near unexpected token `;'

この場合、「;」が期待どおりに機能しないのはなぜですか?

私の目標は、sshセッションを開始し、そのセッションのpidを知ることです。できるだけ少ない行でこれを行う必要があります。複数のSSHセッションを開始し、バックグラウンドに置き、最後に終了する必要があります。これがpidが必要な理由です。

ベストアンサー1

2つの状況を混同しています。

  • foo ; barfooを実行し、完了するまで待ってからbarを実行します。
  • foo & barfooを起動してバックグラウンドに置き、barを直接起動します。

どちらを使用するかを決定する必要があります。両方の方法を持つことはできません。 ;)

問題を解決するには、バックグラウンドですべてのタスクを実行し、次jobを使用してpidを一覧表示します。

michas@lenny:~$ sleep 10 &
[1] 18007
michas@lenny:~$ sleep 10 &
[2] 18011
michas@lenny:~$ sleep 10 &
[3] 18015
michas@lenny:~$ sleep 10 &
[4] 18019
michas@lenny:~$ sleep 10 &
[5] 18026
michas@lenny:~$ jobs -p
18007
18011
18015
18019
18026
michas@lenny:~$ 

また、終了信号を送信するために必ず pid が必要となるわけではありません。たとえば、kill %1最初のバックグラウンドプロセスが終了します。

おすすめ記事