1時間くらいグーグルしても出てこない信じる実際、以前は誰もこの質問をしたことがありません…。
したがって、TTY1で実行されるスクリプトがあります。このスクリプトを使用してTTY2でランダムプログラムを起動するにはどうすればよいですか?
tty
現在どのTTYが使用されているかを知らせることがわかりました。writevt
別のTTYに1行のテキストを書くことがわかりました。chvt
これが現在表示されているTTYを変更することがわかりました。
したくない展示するTTY2。メインスクリプトが正常に実行され続けたいのですが、手動でTTY2に切り替えると、2番目のプログラムと対話できます。
答え1
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
/dev/tty2
他のものが別のTTY(この場合)を使用しない限り、この方法は機能します。これには、getty
誰かがログインするのを待つ1つのプロセスが含まれます。 TTYから入力を読み取るためのいくつかのプロセスがあります。〜する予期しない結果が発生します。
setsid
新しいセッションでコマンドを開始することを担当します。
出力改行にキャリッジリターンなどが追加されるように「料理モード」をオンにするなど、設定を正しく指定するには注意が必要ですcommand
。stty
onlcr
答え2
通常、2番目のttyではログインプログラムやシェル(bashなど)が実行されています。対話したい場合は、ログインプログラムをユーザープログラムに置き換えるか、コマンドラインで実行されているかのようにプログラムを実行するようにシェルに指示する必要があります。
tmux
より簡単な解決策は、2番目の画面にログインした後にセッションを開始してから、次を使用するようです。
tmux send yourcommand ENTER
tmux
2番目の端末に切り替えた後、表示されるセッションでプログラムを起動します。
答え3
次のような事実を見つけました。
コメントの1つでというコマンドが言及されましたopenvt
。このコマンドは、私がしたいことを正確に実行するようです!
http://linux.about.com/library/cmd/blcmdl1_openvt.htm
他人が知らない限り、私の考えではこれこれを行う「正しい」方法です。
(今試してみましたがうまくいくようです。getty
実行中に使用されていない次の端末を選択してください。端末に切り替えてログインしようとするまで、VTが「開かない」ようです...)
答え4
他のttyでbashを起動してください:
setsid agetty --autologin root --noclear 19200 ttyS1 linux