同じスクリーンセッションで2番目のコマンドを実行する方法


12

私はこのような画面で最初のコマンドを開始しています:

screen -d -m -S testen -t lalala watch df -h

これにより、バックグラウンドで実行中のスクリーンセッションが提供され、後で再接続できます。

同じスクリーンセッションの新しいウィンドウで2番目のコマンドを実行するにはどうすればよいですか?

回答:


11

分離モード()で端末サイズ()に適応-Sする名前付きウィンドウ(-t)で名前付きスクリーンセッション()を開始します。-A-d -m

screen -S mySessionName -t myWinName0 -A -d -m

-t同じスクリーンセッション(-S)で別の名前付きウィンドウ()を開始します。

screen -S mySessionName -X screen -t myWinName2

セッション()-X stuff $'cmds'の最初の名前付きウィンドウ(-p)にいくつかのコマンド()を詰め込みます-S

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

セッション()-X stuff $'cmds'の2番目の名前付きウィンドウ(-p)にいくつかのコマンド()を詰め込みます-S

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

スクリーンセッションをリストし、何が起こったのかを再接続します。

screen -ls
screen -r mySessionName

注:改行(\n)はを押すことをシミュレートしEnterます。セミコロンを使用してコマンドを区切ることもできます。


「スタッフ」ビットを行う必要はありません。 screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
ロータス

4

内部画面:

  • Ctrl-Ac新しいシェルウィンドウを開く
  • Ctrl-A:screen newcmd実行するnewcmd

外側:

screen -X testen "screen newcmd"

こんにちはgrawity、私はこれを知っていますが、initスクリプトからそれをしたいと思います。基本的には、同じスクリーンセッションの別々のウィンドウで2つのコマンドを開始します。会いましょう

1
@bob:この回答の例#3「画面外」を参照してください。
user1686

やあ、荒々しく、screen -S testen -X 'screen echo "hi"'うまくいかない。

-Xメソッドを機能させることもできませんでした。FWIW、 "画面のバージョン4.00.03(FAU)10月23日- 06"と言う-v私の画面
ラウリLehtinenの

4

上記のアプローチを試しましたが、2番目のコマンドは2番目のウィンドウで実行されませんでした。ウィンドウ名の代わりにウィンドウ番号を使用して、例を少し調整しました。

  1. セッションを作成する

    screen -S mySessionName -t 0 -A -d -m
    
  2. 2番目のウィンドウを作成する

    screen -S mySessionName -X screen -t 1
    
  3. 最初のウィンドウにコマンドを送信します

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. コマンドを2番目のウィンドウに送信する

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. コマンドが最初のウィンドウで実行されたかどうかを確認します

    screen -R mySessionName -p 0
    
  6. コマンドが2番目のウィンドウで実行されたかどうかを確認します

    screen -R mySessionName -p 1
    

画面4.00.03(CENTOS 6.3 x64)でテスト済み。


1

-c引数を使用して、代替の.screenrcをセットアップできます。この新しいscreenrcでは、スクリーンセッションの初期化時に開始する複数のコマンドをセットアップできます。

この代替.screenrcの最後に、次のコマンドを配置します。

screen 1 cmd1 args
screen 2 cmd2 args

1つのタイプのスクリーンセッションのみを実行する予定で、デフォルトのコマンド実行が常に問題ない場合は、代替構成ファイルをセットアップする必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.