Background-Process
ssh 目標主機 &;fg - 不起作用,但為什麼?
我正在嘗試以下組合以獲取 ssh 會話的 pid(在後台執行顯示 pid),然後 fg 返回 ssh 會話並輸入密碼:
ssh targetHost &; fg
我收到以下錯誤:
-bash: syntax error near unexpected token `;'
為什麼“;” 在這種情況下不能按預期工作?
我的目標是啟動一個 ssh 會話並知道它的 pid,我需要用盡可能少的行來做到這一點。我需要啟動幾個 ssh 會話,將它們放在後台,最後殺死它們——這就是我需要 pid 的原因。
您正在混淆兩種不同的情況:
foo ; bar
將執行 foo,等待它完成然後執行 barfoo & 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
將殺死第一個後台程序。