Background-Process

ssh 目標主機 &;fg - 不起作用,但為什麼?

  • September 30, 2013

我正在嘗試以下組合以獲取 ssh 會話的 pid(在後台執行顯示 pid),然後 fg 返回 ssh 會話並輸入密碼:

ssh targetHost &; fg

我收到以下錯誤:

-bash: syntax error near unexpected token `;'

為什麼“;” 在這種情況下不能按預期工作?

我的目標是啟動一個 ssh 會話並知道它的 pid,我需要用盡可能少的行來做到這一點。我需要啟動幾個 ssh 會話,將它們放在後台,最後殺死它們——這就是我需要 pid 的原因。

您正在混淆兩種不同的情況:

  • foo ; bar將執行 foo,等待它完成然後執行 bar
  • foo & bar將啟動 foo,將其置於後台,然後直接啟動 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將殺死第一個後台程序。

引用自:https://unix.stackexchange.com/questions/93000