エンタープライズLinuxシステムでは、より多くのアプリケーションとしては、自動化されたサーバーの管理がますます重要になってきています。、スケジュールされたタスクを設定するシェルスクリプトを使用する他に、Linuxサーバの自動メンテナンスは、また、非常に重要な部分です。Linuxシステムの運用・保守エンジニアなどの基本的な知識やシェルスクリプトの作成と使用をマスターしている必要があります。
シェルスクリプトの基礎
いくつかの複雑なLinuxの保守作業では、大規模な反復入力との相互作用だけでなく、時間がかかるの数、およびエラーが発生しやすい、とはちょうど右のシェルスクリプトを作成し、それができるバッチ処理、保守作業のシリーズの自動完了、大幅に削減管理者負担。
まず、準備シェルスクリプト
シェルスクリプトのLinuxシステムでは、それはカーネルとユーザーのオペレーティングシステムとの間の範囲であった、特別なアプリケーションである「翻訳者」の役割は、ユーザの入力操作指示や説明を受けるための責任があるとして機能し、操作が実行されます実行カーネルに渡され、その結果を出力します。図:
別のシェルスクリプトを使用した場合のLinuxシステムでは、多くの一般的なシェルインタプリタは、その内部の命令は、ありますが、いくつかの違いがあるでしょう警告ランプの側面を命じます。
[ルート@ localhostの〜]#猫 //は/ etc /シェルシェル現在サポートシステム表示 * / binに/ SH * / binに/ bashの * / sbinに/ nologinに *は/ usr / binに/ SH *は/ usr / binに/ bashの *を/ usr / sbinに/ nologinに * / binに/ tcshの * / binに/ cshの [ルート@ localhostの〜]#/ binが/ SH //シェルを切り替え SH-4.2#//前回の終了にシェルを返す [ルート@ localhostの〜]#/ビン/ bashは、現在のLinuxのほとんどのバージョンで使用されるデフォルトのシェルスクリプトです。
シェルスクリプトは:単純に順次実行コマンドラインコマンドに入れてそれを実行権限を与えて、テキストファイルに保存されています。このテキストファイルには、スクリプトを呼び出すことができます。例えば:
[ルート@ localhostの〜]#のCD / [ルート@ localhostの/]#のPWD / //これは人生出力2人の人生の結果である [ルート@ localhostの〜]#のVimの a.sh // へのファイルのための準備。」ちょうど人々が、これはスクリプトであることを知らせるために最後にSH」。 CD / PWD [ルート@ localhostの〜]#chmodの+ // X-a.shサービステキストファイルを実行可能権限 [ルート@ localhostの〜]#./a.sh / //ビュースクリプトの実行結果とコマンドラインの実行結果は同じです
スクリプトの実行方法:
- 「./」:(相対または絶対パス)このメソッドは、スクリプトが実行可能な権利を有していなければならない必要。
- SH:/ binに/ SHによってスクリプトを解釈します。
- またはソース「」:スクリプトの内容をロードするための内部コマンド。
最初の2つの方法は、サブシェルで実行され、第三の方法は、現在のシェル内で実行されています!
パイプラインの第二に、操作やリダイレクト
「バッチ処理」として、主にその動作中のシェルスクリプトの特殊な性質は、ユーザーの介入なしに、サイレントな方法で実行されています。だから、抽出することを学ぶ、フィルタの実行情報が非常に重要になります。
1.リダイレクト
:インタラクション・デバイス・ファイルのプロセスの情報を処理するためにオペレーティング・システムを介して、ユーザは、三種類含む
:標準入力、ユーザ入力を受信するデバイスからのデータ
標準出力:デバイスを介してユーザに出力されたデータを、
標準誤差:装置を介して実行エラー報告情報を。
リダイレクションタイプが分かれています。
2.パイプライン動作
アクションコマンドは、処理対象の左、右のコマンドのパイプ文字出力にあります。例えば:
[ルート@ localhostの〜]#DFの-ht | grepを"/ $" | awkの。{} 6プリント$ ' 26である% //ディスクの使用状況の情報でルートパーティション(/)を抽出
三、シェル変数
シェルは、「タグ」のコンセプトにさまざまな環境を使用しています。シェルは、システム変数を格納するために使用され、ユーザ固有のパラメータを使用する(値)を必要とし、これらのパラメータは、ユーザ設定またはシステム環境の変化に応じて可変であってもよいです。変数を適切に使用することで、シェルプログラムは、より柔軟な機能を提供し、かつ適応します。
Linuxシステムの一般的な4つの変数:
1.カスタム変数
カスタム変数は、それがユーザー自身のシェル環境でのみ有効であり、したがって、それはまた、ローカル変数として知られていたシステムで、ユーザによって定義された変数です。シェルスクリプトの作成では、ユーザーは通常、さまざまなニーズを満たすためには、プログラムの実行中に様々な変化に対応するために、いくつかの特定のカスタム変数を設定します。
1)新しい変数を定義し
、基本的なフォーマット定義された変数「変数名=変数値」、両側に均等にスペースを許可しません。変数名は文字またはアンダースコアで開始する必要があり、名前に特殊文字が含まれていない(例えば:? +、 - 、*、/、......、&、%、など)。例えば:
[ルート@ localhostの〜]#製品= PHP [ルート@ localhostの〜]#バージョン= 7.3.1
2)表示と参照変数は、
通常、変数名の前に「$」をリードする、あなたは変数の値を参照することができます追加されます。例えば:
[ルートlocalhostの@〜]#エコー$製品の phpの [ルート@ localhostの〜]#エコー$製品の$バージョン PHP 7.3.1
変数名と他の文字を容易に混同が直ちに互いに以下の場合、使用する必要が「{}」は可変、またはエラーを囲みます。例えば:
[ルート@ localhostのは〜]#は、エコー $ product1234 //を"product1234"この変数は見つかりませんでした [ルート@ localhostの〜]#エコー $ {}製品1234個の// 正しい出力変数と文字 php1234を
3)特別な操作変数の割り当て
1.二重引用符(「」):主にコピーするコンテンツが空間に含まれ、特に文字列の役割を規定するように、二重引用符で囲まれなければならない二重引用符は、二重引用符は、そうでなければ省略してもよいです。例えば:
[ルート@ localhostの〜]#= Pythonの2.3.7 のbash:2.3.7:コマンドが見つかりません... [ルート@ localhostの〜]#=パイソン"のPython 2.3.7" [ルート@ localhostの〜]#は、$ Pythonのエコー のPythonを2.3.7
二重引用符はまたのような参照変数値$他の記号によって許可されています。
[ルート@ localhostの〜]#のSQL = "のSQLServer $バージョン" [ルート@ localhostの〜]#は、$ SQLのエコー のSQLServerを1.2.3
2.単一引用符(「」)::$通常の文字として扱われ、他の変数の値を引用しないでください、単一引用符の特殊記号は、次のような、通常の文字とみなされます
[ルートlocalhostの@〜]#件のSQLServer = '場合SQLserver $バージョン' [ルート@ localhostの〜]#エコー$のSQLServerの 場合SQLserver $バージョン
3.アンチアポストロフィ():主にコマンド置換で使用するには、変数画面では、に割り当てられたコマンドの出力を行うことができます。コンテンツ抗アポストロフィは、それ以外の場合は間違って行くだろう、コマンドを実行することができ囲まなければなりません。例えば:
[ルート@ localhostの〜] systemctl`#LSの-lh ` -rwxr-XR-Xを。1つのルートルート623K 11月7 2016の/ usr / binに/ systemctl
注意:抗アポストロフィ困難なサブああ、コマンドラインの交換作業の使用は、あなたの代わりに抗アポストロフィ動作、入れ子の問題を解決する「()$」を使用することができ、ネストされたコマンドを実装します。例えば:
[ルート〜localhostの@]#$ -qc RPM(RPM useraddの-qf $()) は、/ etc / default / useraddの に/etc/login.defs //クエリプロバイダは、コマンドプログラムパッケージがインストールされ、構成ファイルの場所をuseraddを
4.中括弧({}):変数と文字の切り出しのため、変数内の他の文字がある場合、あなたは「{}」を使用する必要があり、{}変数です。
4)コマンドを読んで
以下のような変数の割り当ての内容を加えることができ、キーボードから入力したコマンドをお読みください。
[ルートlocalhostの@〜]#読むABC 変数ABCに割り当てられたの/ opt /バックアップ//入力値 [ルート@ localhostの〜]#エコー$ abcの は/ opt /バックアップ//結果の表示
インターフェイスよりユーザーフレンドリーな対話的な操作を行うためには、使いやすさを向上させ、コンテンツを入力するかをユーザーに通知するメッセージを設定するには、「-p」オプションを追加するには、コマンドをお読みください。例えば:
[ルート@ localhostのは〜]#は読ん "-p ABCD:保存されたディレクトリを指定してください" に保存されているディレクトリを指定してくださいます。/ opt /バックアップ ます。[root @ localhost〜]#は、$ ABCDエコー は/ opt /バックアップ
5)の変数のスコープを設定し
た場合、現在のデフォルトのシェル環境でのみ有効な定義された新しい変数、いわゆるローカル変数を、サブルーチンや新しいシェルを入力するときに、ローカル変数を使用することはできません。例えば:
[ルート@ localhostの〜]#エコー"$ $ SQLバージョン" のSQLServer 1.2.3 1.2.3 [ルート@ localhostの〜]#/ binに/ SH //シェルスイッチング環境 のsh-4.2#エコー"$のSQLの $バージョン" / /そのような変数ない のsh-4.2#出口はシェルを返す// [ルート@ localhostの〜]#
作業の重複を減らす、すべてのシェル環境で使用し続けることができるユーザ定義変数を作成するためには、へのエクスポートを指定した内部変数でコマンドをエクスポートすることができ、グローバル変数。あなたはすることができ、変数間のスペースで区切られ、パラメータとして(「$」記号を使用せずに)、複数の変数名を指定することができます!
[ルート@ localhostの〜]#エクスポートSQLバージョンが [ルート@ localhostの〜]#/ binに/ SHの SH-4.2#エコー"$ SQL $バージョン" のSQLServer 1.2.3 1.2.3 //テスト成功
6)変数の値を計算
バッシュシェル環境では、単純な整数演算は、小数点演算がサポートされていません。数値計算は、主に内部コマンドexprを介して行われます。
一般的に使用される変数:
- 加算器:+
- 減算: -
- 乗算:*
- 部門:/
- モジュラス(剰余)演算子:%
例えば:
[ルート@ localhostの〜]#X = 35 [ルート@ localhostの〜]#1、Y = 16 [ルート@ localhostの〜]#1はexprの$ X + $ yを 51 [ルート@ localhostの〜]#1はexprする$ X - $ Y 19 [ルート@localhost〜]#exprの$ Xの\ * $ yの 560 [ルート@ localhostの〜]#exprをの$ X / $ yを 2 //只取整数 [ルート@ localhostの〜]#exprをの$のx%の$ yを 3
2.環境変数
環境変数は、良いクラス変数を作成する必要が事前にLinuxシステムを実行していることをいいます。環境変数の値を自動的にLinuxシステムによって維持され、ユーザーは変更の状態に変化します。
各変数の目的を理解するためには、現在のすべての環境変数を表示するには、envコマンドを使用します!
Linuxシステムでは、環境変数グローバル設定ファイルは/ etc / profileを、すべてのユーザーに、この文書の範囲で定義された変数です。各ユーザーは、独自の環境変数の設定ファイル(〜/ .bash_profileの)を持っています。
3.位置変数
コマンドライン操作は、最初のフィールドは、コマンド・ワードまたはスクリプト、および順に左から右へ、残りの文字列を示している場合、順次位置変数に割り当てられています。
また、位置特定パラメータ、$ 1、$ 2 ... $ 8 $図9と呼ばれます。例えば:
[ルート@ localhostの〜]#のvimの123.sh #!/ binに/ bashの//シェルが使用するものを宣言 SUMを= `exprの$ 1 + $ 2` エコー"$ 1 + $ 2 = $のSUM" [ルート@ localhostの〜]#chmodコマンド+ 123.sh X #./123.sh 12 34 // 12 1 $ [〜ルート@ localhostの]は、34 $ 2は 12 + 34 = 46
4.定義済みの変数
事前定義された変数は、定義済みの変数のフォーマットを変更することができない特殊な変数のプログラムバッシュ好ましいクラスによって事前定義されます。
- $#:コマンドライン変数の位置の数
- $の*:すべての位置変数の内容
- コマンド実行ステータスリターン$:ポスト、0の戻り値は通常、非ゼロ値を行う状態を示すエラーまたは異常を示します
- $ 0:現在のプロセス/プログラム名を実行します
彼らはスクリプトでコマンドを書く、あなたのすべきコマンドラインで、実行結果を確認し、[スクリプトを記述するために完了した後。最初の書かれたスクリプトは、スクリプトを書くことが、後に同様のニーズを持って完了すると、スクリプトを直接実行することができ、生活が困難になることができます!