2012-11-12 10 views
40

私はシステム管理者であり、Linuxスクリプトを実行してシステムをきれいにするように求められました。linuxコマンドの最後にある "&"は何を意味しますか?

コマンドはこれです:

perl script.pl > output.log & 

ので、このコマンドは&記号で終わるされ、それのいずれかの特別な意味があるのでしょうか?

私はシェルの基本的な知識は持っていますが、これまでにこれまで見たことはありません。

+0

UNIXのためのフラグ –

+0

最初のステップ、 "man bash"。 –

+0

申し訳ありませんが、私はそのような基本的なものについて知っていた – Dude

答えて

73

&は、コマンドをバックグラウンドで実行します。

man bashより:

コマンドは、制御オペレータ&、サブシェルにおけるバックグラウンドでコマンドを実行 シェルが終了した場合。シェルは、仕上げにコマンドを待つ ていない、と リターン・ステータスはまた0

8

である、あなたは順番に1(1)ssh接続を通じて多くのプロセスを実行するための「&」記号を使用することができます最小限の端末数を維持する。たとえば、ファイルを抽出するためにメッセージを受信するプロセスが1つあり、2番目のプロセスはファイルをアップロードするためにメッセージを受信します。「&」を使用すると、サーバーへの単一のssh接続を介して、 。


*****私は、 "&"を実行しているこれらのプロセスも、sshセッションが閉じられた後にも "生き続ける"ことに気付きました!サーバーへの接続が中断された場合にはきれいで便利です。**

+0

'nohup'もプロセスを生き残ります。 –

2

これ以外の場合、コマンドはフォアグラウンドを引き継ぎます。単一のシェルセッションで実行される「フォアグラウンド」プロセスは1つだけです。 &シンボルは、コマンドをバックグラウンドプロセスで実行するように指示し、すぐにコマンドラインに戻って追加のコマンドを実行します。シェル・セッションが閉じられた後

sh my_script.sh & 

バックグラウンド・プロセスは、は生き続けることはありません。 SIGHUPは、実行中のプロセスをすべて終了します。とにかくデフォルトで。あなたのコマンドが無期限(すなわち:microservice)ランニング-longまたは実行されている場合は、セッションから切断した後、それが実行中のままになるようnohupをして、それを、保留にPRする必要があります。

nohup sh my_script.sh & 

EDIT:にあります表示されません&を使用すると、バックグラウンドプロセスの終了に関する灰色の領域になります。シェルは、お使いのOSとローカル設定(特にCENTOS/RHEL)に応じてプロセスを終了することに注意してください。 https://serverfault.com/a/117157

関連する問題