2017-09-14 9 views
0

シンプルなスクリプトを作成しました。ファイル名はsutestです。スクリプトファイル:コマンドが停止しました

#!/bin/bash 

cd ~/Downloads/redis-4.0.1/src 
./redis-server 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

実行スクリプト。 $ . sutest
ただし、スクリプトコードは./redis-serverで停止します。 エコーメッセージが表示されません。

enter image description here

私は、スクリプトファイルのこの種を作りたいです。どうやってやるの??

私はあなたの助けに感謝します。


もっと一般的なケースを考えてみましょう。
myscript1ファイルは上記のredis-serverのようなプロセスを実行します。
別のmyscript2ファイルは上記のredis-serverのようなプロセスを実行します。 別のmyscript3ファイルは上記のredis-serverのようなプロセスを実行します。

3つのスクリプトファイルを同時に実行するにはどうすればよいですか?
私はssh接続で仕事をしたいです。
問題を悪化させるために、screenまたはtmuxを使用できない場合はどうすればいいですか?

答えて

0

./redis-server & 

この文字列の末尾に「&」文字を追加します。あなたには、いくつかの理由のためにそれを気に入らない場合

、あなたは元の順序を維持することができますジョブをバックグラウンドで実行することを許可し、スクリプトは続行されます。

+0

ありがとうございます。私の編集をお読みください。より一般的な場合には – newbie16

+0

'&'を追加することもできますか?可能?あなたの例では – newbie16

+0

ができます。./myscript1&; ./myscript2&; ./myscript3&;彼らは一緒に走って – messiedo

0

ただ、最初のエコーの操作を行います。

cd ~/Downloads/redis-4.0.1/src 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

exec ./redis-server 

execの使用は小さなトリック(あなたが好む場合は省略できます)です:それはredis-serverとシェルスクリプトを置き換え、そのシェルスクリプトは、もはやありません全く走っている。 execがなければ、シェルスクリプトはredis-serverの終了を待つことになります。これは、スクリプトがこれ以上何もしない場合には不要です。

cd ~/Downloads/redis-4.0.1/src 
./redis-server & # run in background 

echo "uid is ${UID}" 
echo "user is ${USER}" 
echo "username is ${USERNAME}" 

wait # optional 
+0

あなたの答えに感謝します。私の編集をお読みください。より一般的な場合には – newbie16

+0

'&'を追加することもできますか?可能? – newbie16

+0

@ newbie16: 'thing1&thing2&thing3&;を実行できます。待つ。 –

関連する問題