Bash
在不同的 tty 上啟動程序
經過大約一個小時的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
以便輸出換行符將添加輸入等。