私はbashスクリプトを使用しており、画面を作成し、メモリ制限のある特定のコマンドを実行し、画面を切り離す必要があります。
私は似たようなことを試してきました。
#!/bin/bash
for i in 1 2 3 4 5 6 7
do
test="test"$i
screen -dmS test
screen -r test -X ulimit -v 2199552
screen -r test -X ./my_command $i
done
...しかしうまくいきません。特に画面は作成されましたが、./my_commandは実行されません。どのようなヒントがありますか?
答え1
まず、あなたが望むのは$test
スクリプトの行ではありません test
。screen
-X コマンドが待機中です。画面コマンド、いいえシェル注文する。マニュアルページを見て、実行中のシェルに文字を入力するように画面に指示する方法を見つけることができますが、数分で見つかりません。 (ええと、画面「stuff」コマンドは次のようになります。 外部からスクリーンセッションに入力を送信する)
または、次のことができます。
#!/bin/bash
for i in 1 2 3
do
test="test"$i
screen -dmS $test ./my_command $i
done
新しい画面ウィンドウで ./my_command $i を実行します。
次のコマンドラインを使用することもできます。
screen -dmS $test sh -c "ulimit 1234;./my_command $i; exec /bin/bash"
sh -c "foobar"
新しいシェルが実行され、foobar
コマンドが実行されます。ここではいくつかのシェルコマンドを実行します。最後はexec /bin/bash
別のシェルを起動するので、./my_command が終了しても画面を失うことはありません。