シェルスクリプト行の末尾にあるアンパサンドとはどういう意味ですか?

シェルスクリプト行の末尾にあるアンパサンドとはどういう意味ですか?
sh sys-snap.sh &

何ですかsh?何ですかsys-snap.sh?なぜ&行末に入れるべきですか?誰でも構文を説明できますか?

それ以外の場合は、+を&押すまでスクリプトはプロンプトに戻りません。 Enterを押すと機能します。CtrlC&

答え1

shデフォルトですBourne互換ケース(通常bashまたはdash)

sys-snap.shsh実行するコマンドを含むシェルスクリプト。コンテンツを公開していないため、名前のみを表示して機能を推測できます。すべての現在のプロセス、現在のメモリ使用量、データベースの状態などを含むログファイルを生成する同じファイル名を持つCPanel固有のスクリプトを見つけることができます。スクリプトが次に終わる場合シェルボーンライン(または同様)現在のディレクトリにある場合は#!/bin/sh実行可能にしchmod +x sys-snap.sh、 。./sys-snap.sh

&プロセスはバックグラウンドで開始されるため、スクリプトが完了するのを待たずにシェルを引き続き使用できます。忘れた場合を使用して現在実行中のプロセスを停止し、Ctrl-Zバックグラウンド bg(またはフォアグラウンドfg)でを使用して続行できます。詳細については、次を参照してください。職業管理

答え2

これがjob controlUnixでは呼び出されます。&コマンドをバックグラウンドに置くようにシェルに指示します。これはsys-snap.shコマンドを実行し続けますが、並列コマンドを実行し続けるためにシェルに戻ることを意味します。

このコマンドを使用すると、現在実行中のジョブのリストを表示できますjobs。このコマンドを使用してコマンドに戻ることができます(「前景」に移動)fg。これにより、コマンドはプロンプトが表示されない状態に戻り、次のように実行する必要がありますCtrlC殺すのコース。しかし、あなたはできます。停止する(一時停止)プロセスはCtrl-をエクスポートしますZ。その後、一時停止してsys-snap.shプロンプトに戻ります。その後、背景として設定できます(投稿したように)。そして) コマンドを&使用すると、bgまた覆う一時停止状態で実行中Ctrl-Z入力してください。

次のように一度に複数の操作を実行できますjobs

[1]-  Running          sys-snap.sh &
[2]+  Running          another-script.sh &

対応するジョブ番号、%1will sys-snap.sh、will beを使用して%2背景と前景に配置できますanother-script.sh。パラメーターを使用またはfg使用しないとbg、上記の出力に示されているジョブに対してコマンドが実行されます。+jobs

fg %1

背景にsys-snap.sh残りながら再び前景に戻ります。another-script.sh

このコマンドを使用すると、フォアグラウンドにインポートせずに実行中のジョブに対してCtrlシーケンスを実行できます。これにより、-に対応する内容が送信されます。Ckillkill %1CtrlCsys-snap.sh

Bashシェルを使用している場合は、man bashコマンドの「タスク制御」セクションの下に詳細を提供する詳細セクションがあります。

nameの場合、sys-snap.shファイル名はUnixでは任意です(動的にロードされたファイルなどの一部の例外があります)。シェルスクリプトで実行したり、perlその他phpのような他のコマンドを呼び出すために、特定のファイル拡張子を持つ必要はありません。これは明確さを提供するためによく使用されます。この場合は.shBourne Shellを使用するシェルスクリプトです/bin/sh

sys-snap.sh(コマンドのようなもので内容を見るとき) 機能部分lessシェルボーン。最初の行では、次のいずれかを見つけることができます。

#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash

または同様です。デフォルトでは#!(例/bin/sh:)の後にコマンドを実行し、残りのスクリプトファイルの内容を一度に1行ずつ入力します。また、ファイルchmodをコマンドとして実行できるように実行可能ファイルとして設定する必要があります。権限が設定されていない場合は、shebang次のエラーメッセージが表示されるため、何の影響もありません。

bash: sys-snap.sh: command not found

./sys-snap.shまたは、明示的なパス(現在の作業ディレクトリなど)を介して実行すると、次の結果が.表示されます。

bash: ./sys-snap.sh: Permission denied

別のオプションは、実行権限なしでそのままにして、明示的に/bin/shに実行を要求することです。

/bin/sh sys-snap.sh &

答え3

sh殻です。使用されるシェルはシステムによって異なります。bashシステムを標準シェルとして使用する例:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 13 16:12 /bin/sh -> bash

$ sh --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)

sys-snap.sh一種のシェルスクリプトなので、sh sys-snap.shシェルスクリプトが実行されます。

&シェルプロセスがバックグラウンドで実行されます。それ以外の場合は、&スクリプトが終了するまで前景に保持されます。どちらにしても、スクリプトは機能します。追加のコマンドを実行する前にスクリプトが終了するのを待つだけです。

答え4

あなたのサーバーはHostgatorにありますか?

このスクリプトは、sys-snap.shシステム上のすべてのログファイルとデータを収集するためにHostgatorチームによって作成された特殊なスクリプトであるため、その出力を使用してシステム情報を監視および収集します。

関連情報