どのような()シェルはありますか?
OK、全能のシェル!
日常のメンテナンス会社のアプリケーションプラットフォームおよびサーバー・プロセスでは、多くの場合、シェルでは、次の作業の一部に対処します:
1 。自動バッチシステムの初期化手順(更新、ソフトウェアのインストール、タイムゾーン設定、セキュリティポリシー...)
2.バッチ自動化ソフトウェア導入プログラム(LAMP、LNMP、Tomcatの、LVS、nginxの)
3.アプリケーションマネージャ(KVM、クラスタ管理の拡張は、MySQL)
前記ログ解析処理プログラム(PV、UV、上部100、はgrep / AWK / SED)
5.自動バックアップおよびリカバリ手順(MySQLのフルバックアップ/増分+ Crond)
6.自動化マネージャー(リモートバッチ変更パスワード、ソフトウェアのアップグレード、構成の更新)
7.自動化された情報収集と監視プログラム(収集システム/アプリケーションの状態、CPU、MEM、ディスク、ネット、TCPステータスは、Apache、MySQLの)
8.交配Zabbixの情報収集(収集システム/アプリケーションの状態情報、CPU、MEM、ディスク、ネット、TCPステータスは、Apache、MySQLの)
9.自動拡張(ホストクラウドを増やす - オンライン・サービス)
例えば:ZABBIX監視CPUの80%+ | -50%のPython API AWS / EC2(追加/削除クラウドホスト)+シェルスクリプト(ビジネスライン)
またシェルもできます:
10.印刷(テトリス、三角形、五角形、中空芒星、クリスマスツリー、電車、バトルシティー、ソートアルゴリズム...)
短いシェル全能では、キーは、ビジネスニーズを見ることです。
だから私たちはすべてのPythonそれを知っていると信じています。Pythonはまた、使いやすく、効率的であることを認めざるを得ません。日常の運用および保守で、シェルとするかのpythonそう?私は個人的にあなたが良いだろうならばと思います!しかし、私は、それはアプリケーションのpython、Javaと同様のために、より適していると思います。シェルスクリプトは、それを書くことがより適しています。たとえば、あなたは、削除ファイルへの定期的なタスクを作成するコマンドシェルがどのような、Pythonで、それは価値がある使用したいです。
(B)各プログラミング言語方向の実装および応用
それでは、動作モード、プログラムの適用方向から簡単にいきましょうか、他の言語があります。
言語の実装
Cコンパイラ言語 バイナリマシンコード(CPUにより直接実行可能なコード)にコンパイル
コンパイルされたJava言語 のみJVM上のTomcat / Apacheのとして知られているバイトコード実行にJVMのJavaコードインタプリタ
シェルは、言語解釈 のbashによって解釈時間の実現を
perlのインタプリタ言語の 時間の実装では、Perlによって解釈しました
インタプリタ言語を期待し 、解釈によって実行されたときに期待
Pythonは言語解釈 パイソンによって解釈時間の実現を
コンパイル言語 のみPVMに知られている仮想マシン(PVM)バイトコード実行にはPython Pythonのコードインタプリタ
インタプリタ言語:遅い実装、柔軟な変更
コンパイルされた言語:一度コンパイルは速く実行しますが、トラブルを変更します。全ての各変更の再コンパイル。
その上、Cは、基礎となるオペレーティングシステム、JavaやPythonの、適切なアプリケーションを作成する方が適しています。シェルスクリプトを書くためのPerl期待します。
(C)シェルとPython呼出し
シェルとPythonは、シェルがbashの(SH、等実際には、多く存在する)専用のインタプリタでいる、PythonはPythonは以下/ Linuxのは/ usr / binに、あります
だから、何がそれの排他的なインタプリタスクリプトに指定されていますか?一例として、シェルスクリプト:
スクリプト#の最初の行には1.!指定されたインタプリタ後行(shebang)。
シェルを呼び出す2.スクリプトを呼び出して三つの方法
2-1)このようにスクリプトシェバングインタプリタの最初の行を無視し、そして、インタプリタのbash a.shを指定する必要はありません権限Xを実行します
A.shがパラメータSHとして渡され(bashの)コマンドが実行されます。A.sh自体はそれほどの権限を実行しない、実行しますが、人が実行するために呼び出されません。
2-2)相対パス実行./a.shは、このようシェバング指定インタプリタを読み込み、しかしする必要実行権限をX
A.shが直接、エラーを実行することができない、コマンドが見つかりませんでした。
現在の作業ディレクトリ(/データ/シェル)ため、プログラムの列のデフォルト検索パスが実行されない可能性があり、それはこのファイルが実行されることを示す、パスを追加した後ではなく、環境変数PASHの内容で、あります。
2-3)実行/home/hujianmei/a.shの絶対パスを、このようシェバング指定インタプリタを読み込み、しかしする必要実行権限をX
2-4)シェル実行環境。./A.shまたはソース./a.shこのように直接、現在のシェルプロセスの実行中に、指定されたインタプリタをシェバング読んでいない、とする必要はありません実行権限をX. 2-4に加えて、他のサブシェルは〜ハを行っています
あなたがシェバングを指定しない場合、あなたはインタプリタを呼び出す必要はありません、シェルスクリプトが正常に実行することができます。私たちの職場環境自体はシェルですので、通訳として扱われます。ルックは、シェルはとても特別です。友人を文句を言うだろう確かにPythonの変更〜
(D)シェルでパイソンを呼び出します
直接コードに:
bash01.sh
#!は/ usr / binに/ bashの
ピング-C1 www.baidu.con&>を/ dev / null &&エコー "www.baidu.comがアップしている" || エコーは「www.baidu.comダウンしています」
/ usr / binに/ pythonの<< - EOF
「ハローワールド」の印刷
EOF
エコー「こんにちはbashの」
説明:シェルでは、Pythonを実行するインタプリタによってEOFにPythonコード速い方法であってもよいです。
EOFコードブロックは、シェルスクリプト内に存在します。そして、その目の前に - それは、EOFマーカーの終わりを解決するためにインデントすることができるということです。最初のEOFでない場合 - その後、EOFの終了しなければならないスティッキーああ〜
同様EOFとして、あなたは、このような可能性もHUJIANMEIとして、任意のキーワードを置き換えることができます。しかし、EOF、それを規制、またはするために!
以上の4点を今日学びました!20200211