web-dev-qa-db-ja.com

すでに実行中のスクリーンセッションにコマンドを送信する

Opensolarisで実行中のgnuscreenセッション(4.00.03)にコマンドを送信しようとしましたが、screen -Xの任意の組み合わせでコマンドを実行できません。

さて、screen -S testでスクリーンセッションを開始し、次にscreen -r -X "date"を使用して日付を表示しようとしました。日付を再接続すると、日付が表示されます。しかし、エラーメッセージも画面への出力も発生しませんでした。覚えられないほどたくさんの組み合わせを試してみました。

それを達成する方法に関するヒントはありますか?

私がこれを行っている理由は、デーモンとして提供されていないプログラムがあり、それをスクリーンセッションで開始したいので、後で何が起こっているのかを確認できるからです。

11
aXon

実際、それは非常に簡単です。次のものを使用できます。

screen -S sessionname -X stuff 'command'`echo -ne '\015'`

echo -ne '\015'を押すことをエミュレートします Enter キー。

注:その「もの」は画面コマンドです。 http://www.gnu.org/software/screen/manual/screen.html#Stuff

18
thegatekeeper

あなたが望むように聞こえます:

 $ screen -S test -d -m -c/dev/null --sh -c'date; exec $ Shell '
 
-Sテスト:このセッションに名前を付けます
-d -m:画面を切り離します
-c/dev/null:〜/を無視します。 screenrc(別のファイルを提供するか、必要に応じてこのオプション
を削除してください)
-:画面オプションの終了
 sh -c'date; exec $ Shell ':画面を実行するためのコマンド。このコマンド
が単に' date 'の場合、画面はすぐに終了することに注意してください。コマンドの終了後に
画面を終了したくない場合は、次を使用できます。
 $ screen -S test -d -m -c/dev/null--ここにコマンドを

または多分あなたはただ欲しい dtach

5
Roger Pate
screen -S <session_name> -X screen [-t <title>] <Shell_command> [<args>]

session_nameという名前の既存のセッションで新しいウィンドウ(タイトルtitle)を開き、Shell_command(オプションの引数args)を実行

1
Jeremy Kao