ウェブサイト検索

RHCSA シリーズ: Yum パッケージ管理、Cron によるタスクの自動化、およびシステム ログの監視 - パート 10


この記事では、Red Hat Enterprise Linux 7 でパッケージをインストール、更新、削除する方法を確認します。また、cron を使用してタスクを自動化する方法についても説明し、システム ログ ファイルを見つけて解釈する方法を説明してこのガイドを終了します。これらすべてがすべてのシステム管理者にとって不可欠なスキルである理由を説明することに重点を置いています。

Yum 経由でのパッケージの管理

まだインストールされていないすべての依存関係とともにパッケージをインストールするには、以下を使用します。


yum -y install package_name(s)

ここで、package_name(s) は少なくとも 1 つの実際のパッケージ名を表します。

たとえば、httpdmlocate を (この順序で) インストールするには、次のように入力します。


yum -y install httpd mlocate

: 上記の例の文字 y は、要求されたプログラムの実際のダウンロードとインストールを実行する前に yum が表示する確認プロンプトをバイパスします。必要に応じて省略することもできます。

デフォルトでは、名前にパッケージ アーキテクチャを追加してオーバーライドしない限り、yum は OS アーキテクチャと一致するアーキテクチャでパッケージをインストールします。

たとえば、64 ビット システムでは、yum install package はパッケージの x86_64 バージョンをインストールしますが、yum install package.x86 (利用可能な場合) は32 ビット のものをインストールします。

パッケージをインストールしたいが、その正確な名前がわからない場合があります。 [すべて検索] または [検索] オプションを使用すると、現在有効なリポジトリで、それぞれパッケージ名や説明の特定のキーワードを検索できます。

例えば、


yum search log

は、インストールされたリポジトリで、名前と概要に log という単語が含まれるパッケージを検索します。


yum search all log

パッケージの説明とURLフィールドでも同じキーワードが検索されます。

検索によってパッケージのリストが返されたら、インストールする前にそれらの一部に関する詳細情報を表示することができます。そんなときは情報オプションが役に立ちます。


yum info logwatch

次のコマンドを使用して、更新を定期的に確認できます。


yum check-update

上記のコマンドは、更新が利用可能なインストール済みパッケージをすべて返します。以下の画像に示す例では、rhel-7-server-rpms のみに更新が利用可能です。

その後、次のようにしてそのパッケージのみを更新できます。


yum update rhel-7-server-rpms

更新できるパッケージが複数ある場合は、yum update を使用するとすべてのパッケージが一度に更新されます。

ps2pdf などの実行可能ファイルの名前はわかっていても、それを提供するパッケージがわからない場合はどうなるでしょうか? yum で「*/[実行可能ファイル] 」 を提供するものを確認できます。


yum whatprovides “*/ps2pdf”

パッケージを削除する場合は、yum Remove package を使用して削除できます。簡単ですね?これは、yum が完全かつ強力なパッケージ マネージャーであることを示しています。


yum remove httpd

こちらもお読みください: RHEL 7 パッケージ管理を管理するための 20 の Yum コマンド

古き良きプレーン RPM

RPM (別名 RPM パッケージ マネージャー、または元々は RedHat パッケージ マネージャー) は、スタンドアロンの形式で提供されるパッケージのインストールまたは更新にも使用できます。 .rpm パッケージ。

多くの場合、-Uvh フラグとともに使用され、パッケージがまだ存在しない場合はインストールする必要があることを示し、(-U) がインストールされている場合は更新を試行する必要があります。操作の実行中は、詳細な出力 (-v) とハッシュ マーク付きの進行状況バー (-h) が表示されます。例えば、


rpm -Uvh package.rpm

rpm のもう 1 つの典型的な使用法は、rpm -qa (query all の略) を使用して、現在インストールされているパッケージのリストを作成することです。


rpm -qa

こちらもお読みください: RHEL 7 にパッケージをインストールするための 20 の RPM コマンド

Cron を使用したタスクのスケジュール設定

Linux やその他の Unix 系オペレーティング システムには、タスク (コマンドやシェル スクリプトなど) を定期的に実行するようにスケジュールできるクロンと呼ばれるツールが含まれています。 Cron は、/var/spool/cron ディレクトリで、/etc/passwd 内のアカウントにちなんで名付けられたファイルを毎分チェックします。

コマンドを実行すると、出力はすべて crontab の所有者 (または /etc/crontabMAILTO 環境変数で指定されたユーザー) にメールで送信されます。strong> (存在する場合)。

Crontab ファイル (crontab -e と入力して Enter を押すと作成されます) の形式は次のとおりです。

したがって、毎月 2 日の午前 2 時 15 分にローカル ファイル データベース (名前またはパターンでファイルを検索するために Locate で使用されます) を更新する場合は、次のコードを追加する必要があります。 crontab エントリ:


15 02 2 * * /bin/updatedb

上記の crontab エントリは、「曜日に関係なく、毎月 2 日の午前 2 時 15 分に /bin/updatedb を実行します」となります。すでにご想像のとおり、星記号はワイルドカード文字として使用されます。

cron ジョブを追加すると、前述したように、root という名前のファイルが /var/spool/cron 内に追加されたことがわかります。このファイルには、crond デーモンが実行する必要があるすべてのタスクがリストされています。


ls -l /var/spool/cron

上の画像では、現在のユーザーの crontab は、cat /var/spool/cron/root を使用するか、次のいずれかを使用して表示できます。


crontab -l

タスクをより詳細に実行する必要がある場合 (たとえば、1 日に 2 回、毎月 3 回など)、cron を使用することもできます。

たとえば、/my/script を毎月 1 日と 15 日 に実行し、出力を /dev/null に送信するには、次のようにします。次のように 2 つの crontab エントリを追加します。


01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

ただし、タスクの保守を容易にするために、両方のエントリを 1 つに結合できます。


01 00 1,15 * *  /my/script > /dev/null 2>&1

前の例に従って、3 か月ごとの月の 1 日の午前 1 時 30 分/my/other/script を実行できます。


30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

ただし、特定のタスクを「x 」分、時間、日、または月ごとに繰り返す必要がある場合は、適切な位置を希望の頻度で割ることができます。次のcrontab エントリは、前のエントリとまったく同じ意味を持ちます。


30 01 1 */3 * /my/other/script > /dev/null 2>&1

あるいは、たとえば、一定の頻度で、またはシステムの起動後に特定のジョブを実行する必要がある場合もあります。 5 つのフィールドの代わりに次の文字列のいずれかを使用して、ジョブを実行する正確な時刻を指定できます。


@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

こちらもお読みください: RHEL 7 で Cron ジョブをスケジュールする 11 のコマンド

ログの検索と確認

システム ログは、/var/log ディレクトリ内に配置 (およびローテーション) されます。 Linux ファイルシステム階層標準によれば、このディレクトリには、このディレクトリまたは適切なサブディレクトリ (audithttpdsamba など) に書き込まれるさまざまなログ ファイルが含まれています。下の画像の)、システム動作中に対応するデーモンによって次のように実行されます。


ls /var/log

その他の興味深いログには、dmesg (カーネル リング バッファからのすべてのメッセージが含まれます)、secure (ユーザー認証を必要とする接続試行のログ)、messages (システム全体のメッセージ)、および wtmp (すべてのユーザーのログインとログアウトの記録) があります。

ログは、システム内で常に何が起こっているのか、また過去に何が起こったのかを一目で把握できるという点で非常に重要です。これらは、Linux サーバーのトラブルシューティングと監視を行うための貴重なツールであるため、イベントが発生してログに記録されるときにリアルタイムでイベントを表示するために、tail -f コマンド とともに使用されることがよくあります。

たとえば、カーネル関連のイベントを表示する場合は、次のコマンドを入力します。


tail -f /var/log/dmesg

Web サーバーへのアクセスを表示する場合も同様です。


tail -f /var/log/httpd/access.log

まとめ

パッケージを効率的に管理する方法、タスクをスケジュールする方法、およびシステムの現在および過去の動作に関する情報をどこで検索するかを知っていれば、予期せぬ事態に頻繁に遭遇することはないと安心できます。この記事が、これらの基本的なスキルについて学習したり、知識を新たにしたりするのに役立つことを願っています。

ご質問やご意見がございましたら、以下のお問い合わせフォームを使用してお気軽にお問い合わせください。