Bash

在不同的 tty 上啟動程序

  • June 16, 2020

經過大約一個小時的Google搜尋,我不敢相信以前沒有人真正問過這個問題……

所以我有一個在 TTY1 上執行的腳本。如何使該腳本在 TTY2 上啟動一些任意程序?

  • 我找到了tty,它會告訴您目前使用的是哪個 TTY。
  • 我發現writevt,它將單行文本寫入不同的 TTY。
  • 我發現chvt,它改變了目前顯示的 TTY。

我不想顯示TTY2。我只想讓主腳本繼續正常執行,但如果我手動切換到 TTY2,我可以與第二個程序互動。

setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'

只要沒有其他東西正在使用其他 TTY(/dev/tty2在本例中),這應該可以工作。這包括一個getty可能正在等待某人登錄的程序;讓多個程序從 TTY 讀取其輸入導致意外結果。

setsid負責在新會話中啟動命令。

請注意,command必須注意stty正確設置設置,例如打開“熟模式”,onlcr以便輸出換行符將添加輸入等。

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