約1時間グーグル操作をした後、私はできません信じる実際にこの質問をした人はいません...
TTY1でスクリプトを実行しています。そのスクリプトでTTY2の任意のプログラムを起動するにはどうすればよいですか?
tty
が見つかりました。これは、現在使用しているTTYを示しています。writevt
を見つけました。chvt
を見つけました。display TTY2にしたくありません。メインスクリプトを通常どおり実行し続けたいだけですが、手動でTTY2に切り替えると、2番目のプログラムを操作できます。
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
他のTTY(/dev/tty2
この例では)、これでうまくいくはずです。これには、誰かがログインするのを待っているgetty
プロセスが含まれます。 TTYから入力を読み取る複数のプロセスがあると予期しない結果になります。
setsid
は、新しいセッションでコマンドを開始します。
command
は、stty
設定を正しく設定する必要があることに注意してください。 「cookedモード」とonlcr
をオンにして、改行を出力すると改行が追加されるようにします。
2番目のttyでは、通常、いくつかのログインプログラムまたはbashのようなシェルのいずれかでプログラムが実行されます。対話が必要な場合は、ログインプログラムを自分のものに置き換えるか、プログラムがコマンドラインから起動されたかのようにプログラムを実行するようにシェルに指示する必要があります。
より簡単な解決策であるIMOは、2番目の画面にログインした後にtmux
セッションを開始し、次を使用することです。
tmux send yourcommand ENTER
2番目のターミナルに切り替えた後に表示されるtmux
セッションでプログラムを開始します。
私は発見しました:
起動時に2つのttyからアプリケーションを起動するにはどうすればよいですか?
コメントの1つはopenvt
と呼ばれるものについて言及しています。このコマンドは、私が求めているとおりのことをするようです!
http://linux.about.com/library/cmd/blcmdl1_openvt.htm
誰かが別のことを知らない限り、thisはおそらくこれを行う「正しい」方法だと思います。
(試してみましたが、正常に動作しているようです。getty
が実行されていても、次の未使用の端末が選択されます。ログに記録するために切り替えるまで、VTは「オープン」されません。に...)
followコマンドを使用して、vt5で新しいグラフィカルセッションを開始します
xinit "/usr/bin/<binary_executable>" -- :1 vt5
例えば :
xinit "/usr/bin/playonlinux" -- :1 vt5
すでにアクティブなグラフィカルセッションでグラフィカルアプリケーションを起動する場合は、次のように実行できます。
DISPLAY=:0 "/usr/bin/playonlinux"