Gnu-Screen

以程式方式在分屏中執行後台任務?

  • September 14, 2018

我試圖弄清楚如何創建一個名為的命令,該命令runbg將接受子命令在後台執行並為每個子命令創建一個分屏。當一個子命令成功完成後,分屏關閉;如果子命令失敗,則螢幕保持打開並顯示錯誤,直到使用者使用終止信號關閉螢幕。關閉所有螢幕後,命令完成並繼續執行。例如

runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"

我發現我可以做到:

ping -t 5 google.com &
ping -t 10 microsoft.com &
wait

這完成了事情的並行方面,但是每個命令都將所有內容輸出到同一個終端,這非常嘈雜。因此需要分屏設置。

從這裡搜尋,我發現GNU Screen似乎可以處理螢幕方面的事情,但它似乎需要一個 .screenrc 文件 - 雖然可以通過程式方式完成,但有點煩人,正如我想像的那樣我需要在某處寫一個隨機的 tmp 文件。

我找到了這個答案,它可以在沒有使用螢幕的情況下使用,.sreenrc但是我無法弄清楚如何在其中執行分屏操作。

簡而言之:

  • 有沒有什麼東西已經完成了我想要的功能runbg
  • 如果不是,那麼 GNU Screen 是我想要的嗎?我是否需要使用.screenrc文件,或者有沒有辦法在沒有文件的情況下完成分屏?

您可以使用 tmux 將拆分視窗和發送鍵串在一起,如下所示:

tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;

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