LinuCレベル1合格教本で、勉強を進める。
今回は、『第9章 重要なシステムサービス』である。
今回は、『第9章 重要なシステムサービス』である。
9.1 システム時刻の保守
9.1.1 システムクロックの表示と設定
- Linuxでは、次の2つのクロック情報により、日時情報が管理されている。
- システムクロック:OSが管理
- ハードウェアクロック:BIOSが管理
表9.1 クロック設定に利用できるコマンド
コマンド | 意味 | 設定の対象 |
date | システムクロックの表示・設定 | システムクロック |
hwclock | ハードウェアクロックの表示・設定 | ハードウェアクロック |
ntpdate, chronyc | NTPサーバーとシステムクロックの同期 | システムクロック |
NTPサーーとシステムクロックの同期
- date [オプション] [日時/+書式]:システムクロックの表示・設定
- システムクロック設定の書式
date mmddhhmm[yyyy][.ss]
mm:月
dd:日
hh:時
mm:分
yyyy:年
ss:秒 - システムクロック表示の書式
date "+%m%d"- 使い方例:
tar cf /tmp/`date "+%m%d"`.tar /home
→/tmp/0101.tarが生成される
- 使い方例:
- システムクロック設定の書式
9.1.2 ハードウェアクロックの設定
- hwclock [オプション]:ハードウェアクロックの設定・確認
-r(--show):ハードウェアクロックを表示
-w(--systohc):ハードウェアクロックを、現在のシステムクロックと同期
-s(--hctosys):システムクロックを、現在のハードウェアクロックと同期
9.1.3 タイムゾーンの設定
- 日本に存在するホストでタイムゾーンの設定を行うとしたら、次のどちらかを使用するのが一般的。
- UTC(世界標準時)
- JSTあるいはAsia/Tokyo(日本標準時):UTCと比べて+9時間
- タイムゾーンの設定方法はいくつかある。
- TZ変数で設定
- /etc/timezoneを編集
- /etc/localtimeの参照先のファイルをtimedatectlコマンドで変更
- tzselect:設定できるタイムゾーンの値を表示
- Debian環境では、/etc/timezoneファイルの内容を書き換えることでタイムゾーンの編集が可能。
- CentOS環境では、/etc/localtimeファイルによりタイムゾーンの設定を行う。
- このファイルはシンボリックリンクになっており、参照先は/usr/share/zoneinfo/ディレクトリの各タイムゾーンを表すファイルとなっている。
- 参照先を変えることでタイムゾーンの設定を変更する。
- timedatectl [サブコマンド]:日時に関する設定を行う(CentOS、Debian共通)
status:現在の設定を表示(サブコマンド省略時の動作)
set-time 日時:日時の設定を変更
set-timezone タイムゾーン:タイムゾーンの設定を変更
9.1.4 NTPの利用
- TCP/IPにはNTP(Network Time Protocol)というプロトコルが用意されており、システムクロックの設定に利用できる。
- ntpdateコマンドをネットワーク上に配置されているNTPサーバー(ntpd)とシステムクロックを同期して、適切な日時を設定可能。
- ntpdate [オプション] サーバー:ntpサーバーと同期し、システムクロックを設定
-d:デバッグモードで実行 - 自分自身をNTPサーバーとして構成することもできる。
- /etc/ntp.confファイルを編集してntpdの設定を行う。
- ntpq [オプション] [サーバー]:ntpdの状態を確認
-p:同期の状態を表示。サーザー名の左の記号で状態を表す。
*:現在同期中のサーバー
+:同期の候補となっているサーバー
9.1.5 chronyd
- 現在はntpdに代わる同期サービスとしてchronydが用意されている。
- chronydの特徴
- ntpdと同じくNTPプロトコルを利用したシステムクロックの同期が可能
- ハードウェアクロックとの同期もサポート
- 既定ではntpdと同じ123番ポートを利用するが、他のポートを利用するように設定変更も可能
表9.2 ntpdとchronydが利用するコマンドと設定ファイル
サービス名 | ntpd | chronyd |
設定ファイル | /etc/ntp.conf | /etc/chrony.conf |
同期確認に利用するコマンド | ntpqコマンド | chronycコマンド |
- chronyc [サブコマンド]:chronydの制御を行う
tracking:同期の状態を表示
sources:同期先として利用できるサーバーの一覧を表示
9.2 システムのログ
9.2.1 ログ管理サービス
- Linuxで利用されるログ管理サービスには次のものがある
- journald
- rsyslog
9.2.2 journaldによるログ管理
- 既定では、/run/log/journald/ディレクトリ以下にログファイルが配置されている。
- system.journalファイルの中身はバイナリデータなので、grepなどのテキスト処理用のコマンドでは参照できない。
- journalctl [オプション] [条件]:ジャーナルログの参照
-n 数値:表示するログの件数
-u ユニット名:表示する対象のユニット
-p プライオリティ値:表示するプライオリティ(0:emerg〜7:debug)
--since='日時',--until='日時':日時を指定
-f:末尾をリアルタイム表示
-r:逆順に表示
--list-boots:管理対象となっているブートIDを表示
-b 数値:指定したブートIDのログを表示。0で現在、-1で前回起動中のログを表示
--no-pager:ページャーを利用せず、標準出力 - journaldの設定ファイルは、/etc/systemd/journald.conf
- journaldに任意の情報を出力したい場合、systemd-catコマンドを利用する。
- systemd-cat [オプション] コマンド構文:journaldに任意の情報を出力
-p プライオリティ:プライオリティを指定して出力
9.2.3 rsyslogによるログ管理
- rsyslogの設定ファイルは/etc/rsyslog.conf
- 出力先の設定は、セレクタとアクションの組み合わせで設定されている。
表9.3 CentOS環境における主なログファイル
ログファイル | 内容 |
/var/log/messages | 一般ログ(下記の3つのファシリティに該当しないログを記録 |
/var/log/secure | 認証ログ |
/var/log/maillog | メールログ |
/var/log/cron | cronログ |
あるファシリティ、プライオリティが指定されたログメッセージが設定どおりに記録されているかどうかを確認するには、loggerコマンドを使うと便利。
- logger [オプション] メッセージ:テスト用のログメッセージを送信
-p ファシリティ.プライオリティ:ファシリティとプライオリティを指定。指定されなかった場合、user.noticeで送信
-i:PIDを記録
-t 名前:指定した名前を出力元として記録
9.2.4 ログのローテーション
- /var/log/ディレクトリに記録されているログファイルは、一定期間が経過するとlogrotateによりローテーションされる。
- ローテーションが一定回数を超えると、古いファイルから削除される。
- logrotateの設定ファイルは、/etc/logrorate.conf
9.3 メール配送エージェント(MTA)の基本
9.3.1 MTAの基本
- MTAとはメールを転送するSMTPサーバーを指す。
- Linuxで主に利用されているMTAには次のものがある。
- postfix
- exim
9.3.2 メールの参照
- mail [オプション] [宛先]:メールデータを参照、もしくはメールを送信
-u ユーザー:指定したユーザーのメールデータを参照(rootのみ実行可) - /etc/aliasesはメールの転送先を指定する設定ファイル
- postfixが参照するのは/etc/aliases.dbというバイナリファイル
- そのため、/etc/aliasesファイルを編集したら、newaliasesコマンドを実行して/etc/aliases.dbに反映させる必要がある。
- newaliases:メールのエイリアス設定を有効化(/etc/aliases.dbに反映)
転送先のMTAが名前解決できない場合など、メールキューが溜まったままになってしまっている場合には、mailqコマンドで、保存されたままのメールキューを確認できる。
- mailq:メールキューの内容を表示
演習問題
- C→❌B
- C→◯
- ?→❌none
- ?→❌A
- logrotate→◯
- B,C→◯
- A,D→◯
- B→◯
- .forward→◯
正解率:6/9=0.667(67%)
あんまり理解できていないが、正解率はまぁまぁかな?
ファシリティとプライオリティって重要なのかな?
メールの配送についてもほぼ実践できなかったからよく分からなかったし。
※コメント投稿者のブログIDはブログ作成者のみに通知されます