少し前に、効果的なシステム管理者/エンジニアの際立った特徴の1つが怠惰であることを読みました。 最初は少し矛盾しているように見えましたが、著者は次に理由を説明しました。
システム管理者が問題の解決と反復的なタスクの実行にほとんどの時間を費やしている場合は、システム管理者が正しく機能していない可能性があります。 言い換えれば、効果的なシステム管理者/エンジニアは、自分の側でのアクションをできるだけ少なくして反復的なタスクを実行する計画を立て、以下を使用して問題を予測する必要があります。
たとえば、パート3でレビューしたツール– Linuxツールセットを使用してシステムアクティビティレポートを監視する このシリーズの。 したがって、彼または彼女はあまりやっていないように見えるかもしれませんが、それは彼/彼女の責任のほとんどが持っているからです シェルスクリプトの助けを借りて世話をしました。これについては、これから説明します。 チュートリアル。
一言で言えば、シェルスクリプトは、段階的に実行されるプログラムに他なりません。 Linuxカーネルとエンドの間のインターフェース層を提供する別のプログラムであるシェルによって ユーザー。
デフォルトでは、のユーザーアカウントに使用されるシェル RHEL 7 bashです(/bin/bash). 詳細な説明と歴史的背景が必要な場合は、を参照してください。 このウィキペディアの記事.
このシェルによって提供される膨大な機能のセットについて詳しく知るには、そのシェルをチェックすることをお勧めします。 マニュアルページ、(でPDF形式でダウンロードされますBashコマンド). それ以外は、Linuxコマンドに精通していることを前提としています(そうでない場合は、実行することを強くお勧めします 初心者からシステム管理者へのガイド の記事 Tecmint.com 続行する前に)。 それでは始めましょう。
便宜上、シェルスクリプトを格納するディレクトリを作成しましょう。
#mkdirスクリプト。 #cdスクリプト。
そして、という名前の新しいテキストファイルを開きます system_info.sh
お好みのテキストエディタで。 まず、上部にいくつかのコメントを挿入し、その後にいくつかのコマンドを挿入します。
#!/ bin / bash#RHCEシリーズのパート4用に作成されたサンプルスクリプト。 #このスクリプトは、次のシステム情報のセットを返します。#-ホスト名情報:echo -e "\ e [31; 43m ***** ホスト名情報***** \ e [0m " hostnamectl。 エコー "" #-ファイルシステムのディスク容量使用量:echo -e "\ e [31; 43m *****ファイルシステムのディスクスペースの使用法***** \ e [0m " df-h。 エコー "" #-システム内の空きメモリと使用済みメモリ:echo -e "\ e [31; 43m *****無料で使用済みのメモリ***** \ e [0m " 自由。 エコー "" #-システムの稼働時間と負荷:echo -e "\ e [31; 43m *****システムの稼働時間と負荷***** \ e [0m " 稼働時間。 エコー "" #-ログインユーザー:echo -e "\ e [31; 43m *****現在ログインしているユーザー***** \ e [0m " WHO。 エコー "" #-メモリ使用量に関する限り、上位5つのプロセス。 echo -e "\ e [31; 43m *****トップ5のメモリ消費プロセス***** \ e [0m " ps -eo%mem、%cpu、comm --sort =-%mem | ヘッド-n6。 エコー "" echo -e "\ e [1; 32mDone。\ e [0m"
次に、スクリプトに実行権限を付与します。
#chmod + xsystem_info.sh。
そしてそれを実行します:
./system_info.sh。
視覚化を向上させるために、各セクションのヘッダーはカラーで表示されていることに注意してください。
その機能は、次のコマンドによって提供されます。
echo -e "\ e [COLOR1; COLOR2m\ e [0m "
どこ COLOR1 と COLOR2 それぞれ前景色と背景色です(詳細とオプションについては、このエントリで説明されています。 Arch Linux Wiki) と カラーで表示したい文字列です。
自動化する必要のあるタスクは、ケースごとに異なる場合があります。 したがって、1つの記事で考えられるすべてのシナリオを網羅することはできませんが、シェルスクリプトを使用して自動化できる3つの古典的なタスクを紹介します。
1) ローカルファイルデータベースを更新します。2)次のファイルを検索(または削除)します。 777 権限、および 3) ファイルシステムの使用量が定義された制限を超えたときにアラートを出します。
という名前のファイルを作成しましょう auto_tasks.sh
次の内容のscriptsディレクトリにあります。
#!/ bin / bash#タスクを自動化するサンプルスクリプト:#-ローカルファイルデータベースを更新します:echo -e "\ e [4; 32mローカルファイルデータベースの更新\ e [0m " 更新b。 if [$? == 0 ]; 次に、「ローカルファイルデータベースが正しく更新されました」とエコーします。 else echo "ローカルファイルデータベースが正しく更新されませんでした。" fi。 echo ""#-777権限を持つファイルを検索および/または削除します。 echo -e "\ e [4; 32m777の権限を持つファイルを探しています\ e [0m " #どちらかのオプションを有効にします(他の行をコメントアウトします)が、両方は有効にしません。 #オプション1:確認を求めずにファイルを削除します。 findのGNUバージョンを想定しています。 #find -type f -perm 0777-delete。 #オプション2:ファイルを削除する前に確認を求めます。 システム間での移植性が向上します。 find -type f -perm 0777 -exec rm -i {} +; エコー "" #-ファイルシステムの使用量が定義された制限を超えたときにアラートecho -e "\ e [4; 32mファイルシステムの使用状況を確認する\ e [0m " THRESHOLD = 30。 行を読んでいる間; do#この変数は、ファイルシステムパスを文字列として格納しますFILESYSTEM = $(echo $ line | awk '{print $ 1}')#This 変数は使用率(XX%)を格納しますPERCENTAGE = $(echo $ line | awk '{print $ 5}')#%なしで使用率 サイン。 USAGE = $ {PERCENTAGE%?} if [$ USAGE -gt $ THRESHOLD]; 次に、「$ FILESYSTEMの残りの使用可能なスペースが非常に少なくなっています。 使用済み:$ PERCENTAGE "fi。 完了<2つの間にスペースがあることに注意してください
<
スクリプトの最後の行にサインインします。cronの使用
効率をさらに一歩上げるために、コンピューターの前に座ってそれらのスクリプトを手動で実行することは望ましくありません。 むしろ、あなたは使用します cron これらのタスクを定期的に実行するようにスケジュールし、結果を事前定義された受信者のリストに電子メールで送信するか、Webブラウザーを使用して表示できるファイルに保存します。
次のスクリプト(filesystem_usage.sh)は、よく知られているものを実行します df -h コマンドを実行し、出力をHTMLテーブルにフォーマットして、 report.html ファイル:
#!/ bin / bash。 #シェルスクリプトを使用したHTMLレポートの作成を示すサンプルスクリプト。 #Webディレクトリ。 WEB_DIR = / var / www / html。 #レポートの見栄えを良くするためのCSSとテーブルのレイアウト。 エコー ""> $ WEB_DIR /report.html。 #ホスト名を表示し、HTML本文の上部に挿入します。 HOST = $(ホスト名) echo "ホストのファイルシステムの使用法$ HOST
最終更新: $(日付)
ファイルシステム | サイズ | 使用 % |
---|---|---|
">> $ WEB_DIR /report.html。 エコー$ line | awk '{print $ 1}' >> $ WEB_DIR /report.html。 エコー " | ">> $ WEB_DIR /report.html。 エコー$ line | awk '{print $ 2}' >> $ WEB_DIR /report.html。 エコー " | ">> $ WEB_DIR /report.html。 エコー$ line | awk '{print $ 5}' >> $ WEB_DIR /report.html。 エコー " |