2013-04-14 23 views
8

名前付きスクリーンセッション内でプロセスを起動するスクリプトを設計しています。特定のスクリーンセッションにctrl-cを送信する

as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'" 

のでbash myscript.sh start testは、testという名前の画面を作成し、ソフトウェアでtest.cfgを実行します。

今、私は私のスクリプトは、特定のscreenセッションにアクセスし、私は、画面のセッションを殺すことができるように、実行中のプロセスを停止するCTRL +Cをしたいです。

このような何か:

as_user "screen -p 0 -S **$command** **... kill the process with ctrl-c...**" 
as_user "screen -p 0 -S **$command** -X eval 'stuff \"exit\"\015'" 

答えて

13

私はかなりあなたを理解していないが、画面セッションでウィンドウctrl-cを送信するために:あなたが送信する場合

screen -S session_name -X at window_number stuff $'\003' 
# or 
screen -S session_name -X -p window_number stuff $'\003' 

何かすべての窓には、window_numberとして#(引用する必要があります)を使用してください。

UPDATE:

画面のstuffコマンドもCTRL-Xので、次のコマンドはCTRL-Cを送信するためにも使用することができることを意味する^X(または^x)をサポートしています。

screen -S session_name -X at window_number stuff ^C 
+1

at'が動作するために '得るが、これは誰かのために有用である可能性があるだけで、アクティブなウィンドウ、ために私のために働いたことができませんでした:'画面-Sセッション名-Xスタッフ$ '\ 003'' –

+0

'画面-S session_name -X "#" $ '\ 003''を 'screen -S session_name -X quit'と組み合わせると完璧に動作します。私は今、任意の画面セッションを終了することができます。ありがとうございました。 – puchu

関連する問題