他のttyでプロセスを開始する

他のttyでプロセスを開始する

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新しいセッションでコマンドを開始することを担当します。

出力改行にキャリッジリターンなどが追加されるように「料理モード」をオンにするなど、設定を正しく指定するには注意が必要ですcommandsttyonlcr

答え2

通常、2番目のttyではログインプログラムやシェル(bashなど)が実行されています。対話したい場合は、ログインプログラムをユーザープログラムに置き換えるか、コマンドラインで実行されているかのようにプログラムを実行するようにシェルに指示する必要があります。

tmuxより簡単な解決策は、2番目の画面にログインした後にセッションを開始してから、次を使用するようです。

tmux send yourcommand ENTER

tmux2番目の端末に切り替えた後、表示されるセッションでプログラムを起動します。

答え3

次のような事実を見つけました。

起動時に2つのttyでアプリケーションを起動するには?

コメントの1つでというコマンドが言及されましたopenvt。このコマンドは、私がしたいことを正確に実行するようです!

http://linux.about.com/library/cmd/blcmdl1_openvt.htm

他人が知らない限り、私の考えではこれこれを行う「正しい」方法です。

(今試してみましたがうまくいくようです。getty実行中に使用されていない次の端末を選択してください。端末に切り替えてログインしようとするまで、VTが「開かない」ようです...)

答え4

他のttyでbashを起動してください:

setsid agetty --autologin root  --noclear 19200 ttyS1 linux

関連情報