RHCSAシリーズ:Yumパッケージ管理、cronを使用したタスクの自動化、およびシステムログの監視-パート10


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

Yumによるパッケージの管理

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

# yum -y install package_name(s)

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

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

# 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

更新可能なパッケージが複数ある場合、yumupdateはそれらすべてを一度に更新します。

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

# yum whatprovides “*/ps2pdf”

これで、パッケージの削除に関しては、yum removepackageを使用して行うことができます。簡単ですねこれは、yumが完全で強力なパッケージマネージャーであることを示しています。

# yum remove httpd

また読む:RHEL7パッケージ管理を管理するための20のYumコマンド

古き良きプレーンRPM

RPM(別名RPM Package Manager、または元々はRedHat Package Manager)を使用して、スタンドアロンの .rpm パッケージの形式でパッケージをインストールまたは更新することもできます。

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

# rpm -Uvh package.rpm

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

# rpm -qa

また読む:RHEL7にパッケージをインストールするための20RPMコマンド

cronを使用したタスクのスケジューリング

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

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

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

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

15 02 2 * * /bin/updatedb

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

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

# ls -l /var/spool/cron

上の画像では、現在のユーザーのcrontabは、cat/var/pool/cron/rootを使用して表示できます。

# crontab -l

よりきめ細かいベースでタスクを実行する必要がある場合(たとえば、1日2回または月に3回)、cronもそれを行うのに役立ちます。

たとえば、毎月1日と15日に/ my/scriptを実行し、出力を/ 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時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 * * * *.

また読む:RHEL7でcronジョブをスケジュールするための11のコマンド

ログの検索と確認

システムログは/ var/logディレクトリ内にあります(そしてローテーションされます)。 Linux Filesystem Hierarchy Standardによると、このディレクトリにはさまざまなログファイルが含まれており、システム操作中に対応するデーモンによってこのディレクトリまたは適切なサブディレクトリ(下の画像のaudit、httpd、sambaなど)に書き込まれます。

# ls /var/log

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

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

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

# tail -f /var/log/dmesg

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

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

概要

パッケージを効率的に管理する方法、タスクをスケジュールする方法、およびシステムの現在および過去の操作に関する情報を探す場所を知っている場合は、予期しない事態が頻繁に発生することはありません。この記事が、これらの基本的なスキルについての知識を習得または更新するのに役立つことを願っています。

ご不明な点やご意見がございましたら、下記のお問い合わせフォームからお気軽にお問い合わせください。