25

Unixの「screen」コマンドのドキュメントによると、.screenrcで構成して、指定したコマンドをそれぞれ実行する一連のデフォルト画面で開始できます。

これが私のcofigです:

# Default screens
screen -t "shell_0"  1
screen -t "autotest" 2 cd ~/project/contactdb ; autotest

autotest コマンドは実行されません。実行しようとしているウィンドウは、autotest起動するとすぐに閉じますscreen

私も試してみました...

screen -t "autotest" 2 cd ~/project/contactdb

同じ結果です。

私も試しました...

screen -t "autotest" 2 ls

そこでも同じ結果。

起動時に特定の画面でコマンドを実行する秘訣は何ですか?

4

6 に答える 6

21

あなたのプログラムは実行されています (まあ、cd を除いて)。親シェルなしで実行されているだけなので、完了するとすぐに終了し、完了です。

あなたがすることができます:

screen -t "autotest" 2 bash -c 'cd ~/project/contactdb ; autotest'

2 つのシェルをスポーンしますが、寿命はおそらく続くでしょう。

于 2009-02-12T22:31:23.583 に答える
16

これを試して:

$ screen -S 'tailf messages' -d -m tailf /var/log/messages

その後、次のことができます。

$ screen -ls
1234.tailf messages

に続く:

$screen -r 1234
于 2009-11-23T07:09:38.467 に答える
7

これは役立つかもしれませんが、完全にあなたが望むものではないかもしれません.

"zombie az" または "defzombie az" を .screenrc の最初の行として入力します。"az" は、任意の 2 つのキーにすることができます。現在、画面を閉じる必要がある場合 (たとえば、コマンドの実行が終了した場合)、実際には閉じません。「a」を押すと画面が閉じ、「z」を押すとその画面に添付されたコマンドが再実行されます。

画面のユーザーズマニュアルでそれを見つけました。

于 2009-02-12T22:59:59.410 に答える
6

文字をタイプしたかのように画面に「詰め込む」こともできます。

あなたの例でそれを行う方法は次のとおりです。


screen -t "shell_0"  1

# create the following screen in the desired dir, instead of cd-ing afterwards :)
chdir ~/project/contactdb
screen -t "autotest" 2

# (without this sometimes screens fail to start correctly for me)
sleep 5

# paste some text into screen number 2:
select 2
stuff "autotest\012"
于 2009-06-15T23:10:45.623 に答える
0

これが私がそれを行う方法です。

screen -t shell_0
chdir ~/project/contactdb
screen -t autotest autotest

上記は、画面によって手続き的に評価されるようです。まず、タイトルで新しい画面を作成しますshell_0。他のオプションを指定しなかったため、現在の作業ディレクトリは親シェルのディレクトリまたはユーザーのホーム ディレクトリになります。次に、新しい画面のデフォルト ディレクトリを に設定します~/project/contactdb。次に、autotestコマンドを実行する新しい画面を確立します。

ウィンドウ番号 ( n) はオプションです。通常は省略します。

于 2012-12-20T18:18:44.180 に答える