如何將作業帶到前台並允許使用者從終端輸入

如何將作業帶到前台並允許使用者從終端輸入

如同這個問題但在一個重要的方面有所不同:我需要從腳本啟動一堆作業,並在後台運行它們。然後,為了管理它們或檢查它們的進度,我需要將它們帶到前台並允許使用者輸入。

我目前正在做的是:

  1. 循環啟動一堆作業,例如

    for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
    
  2. 將個人工作帶到前台,例如

    fg 1 
    

這會將作業帶到前台,但是有兩個問題:我無法提供使用者輸入 - 進程不回應,就好像接收我的輸入的進程是啟動作業的腳本,而不是作業本身;變數 $ip 也顯示為未計算,即完全為“$ip”而不是“192.168.1.34”。但是,當我輸入“jobs”時,我會看到單獨列出的所有10 個作業(但它們看起來都完全相同:“run-job.sh $ip”。我必須使用ps 來查看哪個作業正在使用哪個ip 值。

我想要的行為與如果我透過單獨輸入所有這些作業來開始所有這些作業,然後按 control-z 將它們放入後台所得到的行為相同。如果我這樣做,當我使用 fg 將它們帶到前台時,它們允許使用者直接向進程輸入,變數 $ip 也顯示為「192.168.1.34」。然而,對於數十個或數十個職位,手動輸入職位是不可行的。

相關內容