1

screen セッション内から、同じセッションでいくつかの新しい screen ウィンドウを開き、それらでいくつかのプログラムの実行を開始するシェル スクリプトを実行したいと考えています。

次のようなスクリプトが必要です。

screen -t newWindow
[switch to newWindow and execute a command]
screen -t newWindow2
[switch to newWindow2 and execute a command]

括弧内に記述した効果を達成する方法がわかりません。手がかりはありますか?これは、スクリーン セッションを開始するために実行するスクリプトではないことに注意してください。セッションに新しいウィンドウを追加するには、このスクリプトを既存の画面セッション内で実行できるようにする必要があります。

4

2 に答える 2

3

注: screen セッションから次の方法でスクリプトを起動することはできません。そして、セッションではタブなしで開きます...質問に対する実際の回答というよりも、関連するヒントです。

プロセスを実行してスクリーンセッションを受け入れる場合は、別の解決策があります...

新しいセッション スクリプト

#!/bin/sh
echo "nouvelle session screen ${sessionName}"
screen -S ${sessionName}  init.sh
echo "screen session: done"
echo "go to ${AnyWhere}"
sleep 1
screenexec ${sessionName} "cd ${AnyWhere}"

init スクリプト (ここでは「init.sh」)

#!/bin/zsh
zsh -c "sleep 0.2"
screen -d #detach the initialised screen
zsh       #let a prompt running

インジェクション スクリプト (ここでは screenexec)

#!/bin/sh
# $1 -> nom de screen cible  $2 -> commande
echo "injection de «${2}» dans la session «${1}» ..."
screen -x "$1" -X stuff "$2"              #inject the command
screen -x "$1" -X eval "stuff \015"       #inject \n
echo "Done"

この方法を使用すると、画面にコードを簡単に挿入できます。スクリプトがデーモンのように動作する場合は興味深い...

Python でスクリプトを使用する方のために、セッションの作成、セッションの終了、コマンドの挿入を行うための小さなライブラリを作成しました: ScreenUtils.py

マルチウィンドウ画面セッションを処理しない小さなプロジェクトです。

ずっと前に本物のpythonライブラリを作ったことを忘れていました:https://github.com/Christophe31/screenutils

于 2010-02-12T16:27:44.090 に答える
1

画面内でこのスクリプトを実行すると、あなたが望むと思います:

#!/bin/bash

screen vi
screen top
于 2010-01-28T17:32:25.763 に答える