web-dev-qa-db-ja.com

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

約1時間グーグル操作をした後、私はできません信じる実際にこの質問をした人はいません...

TTY1でスクリプトを実行しています。そのスクリプトでTTY2の任意のプログラムを起動するにはどうすればよいですか?

  • ttyが見つかりました。これは、現在使用しているTTYを示しています。
  • 別のTTYに1行のテキストを書き込むwritevtを見つけました。
  • 現在表示されているTTYを変更するchvtを見つけました。

display TTY2にしたくありません。メインスクリプトを通常どおり実行し続けたいだけですが、手動でTTY2に切り替えると、2番目のプログラムを操作できます。

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

他のTTY(/dev/tty2この例では)、これでうまくいくはずです。これには、誰かがログインするのを待っているgettyプロセスが含まれます。 TTYから入力を読み取る複数のプロセスがあると予期しない結果になります。

setsidは、新しいセッションでコマンドを開始します。

commandは、stty設定を正しく設定する必要があることに注意してください。 「cookedモード」とonlcrをオンにして、改行を出力すると改行が追加されるようにします。

33
wurtel

2番目のttyでは、通常、いくつかのログインプログラムまたはbashのようなシェルのいずれかでプログラムが実行されます。対話が必要な場合は、ログインプログラムを自分のものに置き換えるか、プログラムがコマンドラインから起動されたかのようにプログラムを実行するようにシェルに指示する必要があります。

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

tmux send yourcommand ENTER

2番目のターミナルに切り替えた後に表示されるtmuxセッションでプログラムを開始します。

6
Anthon

私は発見しました:

起動時に2つのttyからアプリケーションを起動するにはどうすればよいですか?

コメントの1つはopenvtと呼ばれるものについて言及しています。このコマンドは、私が求めているとおりのことをするようです!

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

誰かが別のことを知らない限り、thisはおそらくこれを行う「正しい」方法だと思います。

(試してみましたが、正常に動作しているようです。gettyが実行されていても、次の未使用の端末が選択されます。ログに記録するために切り替えるまで、VTは「オープン」されません。に...)

3
0
Bl00dh0und

followコマンドを使用して、vt5で新しいグラフィカルセッションを開始します

xinit "/usr/bin/<binary_executable>" -- :1 vt5

例えば ​​:

xinit "/usr/bin/playonlinux" -- :1 vt5

すでにアクティブなグラフィカルセッションでグラフィカルアプリケーションを起動する場合は、次のように実行できます。

DISPLAY=:0 "/usr/bin/playonlinux"
0
inukaze