11. システムサービスの管理
11.1. システムクロックの設定
11.1.1. システムクロックとハードウェアクロック
Linuxのクロックシステムにはシステムクロックとハードウェアクロックがある。
システムクロック
システムクロックはメモリ上で動作する時計システム。 Linuxカーネル内に存在し、Linux起動時にハードウェアクロックと同期する。
このクロックは電源がオフになると時計情報も消える。
ハードウェアクロック
ハードウェアクロックはハードウェアとして内蔵された時計システム。 このクロックはシステム停止してもハードウェア上の内蔵バッテリーで動作する。
11.1.2. システムクロック関連コマンド
dateコマンド
システムクロックを参照して現在日時表示、時刻の変更ができるコマンド。
書式 | 説明 |
---|---|
%Y | 年 |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 時(00-23) |
%M | 分(00-59) |
%a | 曜日 |
%b | 月名 |
hwclockコマンド
ハードウェアクロックの参照、システムクロックをハードウェアクロックにセットできるコマンド。
オプション | 説明 |
---|---|
-r | ハードウェアクロックの表示 |
-s (--hctosys) | ハードウェアクロックの時刻をシステムクロックに反映 |
-w (--systohc) | システムクロックの時刻をハードウェアクロックに反映 |
-u | UTC (Universal Coordiated Time)として反映 |
timedatectlコマンド
systemd採用ディレクトリビューションで使用可能な日付、時刻、タイムゾーンを管理を設定できるコマンド。
11.1.3. NTPによる時刻設定
ハードウェアクロック、システムクロックともに完全に正確な時刻情報ではないのでNTPというプロトコルを通じて正確な情報を取得する。 NTPは階層構造になっており、最上位は原子時計やGPSなどが位置して、その直下にあるNTPサーバを Stratum1、その下を Stratum2 と続いていく構造となっている。
ntpdateコマンド
NTPサーバから正確な時刻取得するコマンド。
ntpサーバの運営
NTPサーバを自前で運用することも可能。 LAN内にNTPクライアントが多いなら用意すると良い。
NTPサーバの起動はSysVinitならばsudo /etc/init.d/ntpd start
、Systemdならばsudo systemctl start ntpd.service
で行う。
なお設定は/etc/ntp.conf
で行える。
11.3.4. Chronyによる時刻管理
Chronyはntpd/ntpdateの代替の時刻管理システム。 ntpパッケージと同時には使えないのが特徴。
chronydデーモンとchronycクライアントで構成される。
設定ファイルは/etc/chrony.conf
となる。
chronyコマンド
chronydの管理を行うコマンド。
11.2. システムログの設定
11.2.1. ログとは
ログはコンピュータの動作状況の記録を行うもの。
Linuxの場合はsyslogと呼ばれるプログラムを使用することにより、発生する各種イベントをログファイルに出力したりコンソールに出力することが可能となる。
ログのシステムにはrsyslog
, syslog
, syslog-ng
などがある。
11.2.2. Syslog
syslogはsyslogd
というデーモンにより実行される。
syslogは他のプログラムからのメッセージを受信して、出力元や優先度に従って分類を行って、syslogで定義した出力先に送信する。
syslog/rsyslogの設定
syslogの設定は/etc/syslog.conf
で設定を行う。
rsyslogはsyslogの上位バージョンで拡張機能などがあり、設定は/etc/rsyslog.conf
で行う。
設定ファイルの構文はファシリティ. プライオリティ アクションで記述する。 記述構文は以下の通り。
ファシリティ
ファシリティはログの種別、メッセージの出力元を示す。 具体的にはカーネルや実行中のプロセスを表す。
ファシリティ | 説明 |
---|---|
auth, authpriv | 認証システム(loginなど) |
cron | cron |
daemon | 各種デーモン |
kern | カーネル |
lpr | 印刷システム |
メールサービス | |
user | ユーザーアプリケーション |
local0-local7 | ローカルシステム |
プライオリティ
プライオリティはメッセージの重要度を表す。
重要度(降順) | 説明 |
---|---|
emerg | 緊急事態 |
alert | 早急に対処が必要 |
crit | 深刻(システムの処理は継続できる) |
err | 一般的なエラー |
warning | 一般的な警告 |
notice | 一般的な通知 |
info | 一般的な情報 |
debug | 一般的な情報 |
none | ログを記録しない |
アクション(出力先)
アクションではメッセージの出力先を指定する。
表記 | 説明 |
---|---|
ファイル名 | ファイルへの出力 |
ユーザー名 | ユーザーの端末への出力 |
@ホスト名 | リモートホストのsyslogdへの出力 |
/dev/console | コンソールへの出力 |
* | 全てのユーザーの端末への出力 |
11.2.3. ログに関するコマンド
loggerコマンド
ログメッセージ生成するコマンド。 システムログの設定の確認などに使用する。
syslog.info
の場合は/var/log/syslog
に追記される。
systemd-catコマンド
コマンドの実行結果をジャーナルに書き込むコマンド。
/var/log/syslog
に書かれる。
journalctlコマンド
systemd採用システムにおいて、systemdのログ(ジャーナル)を閲覧できるコマンド。
ジャーナルは/var/log/journal
や/var/run/log/journal
のバイナリに保存される。
オプション | 説明 |
---|---|
-f, --follow | 末尾を表示し続ける(tail -fとかとおなじ) |
-r, --reverse | 新しい順(デフォルトは古い順。その逆) |
-e, --pager-end | 末尾を表示する(ページャでさかのぼれる) |
-x, --catalog | 説明文付き |
-k, --dmesg | カーネルメッセージのみ |
-b, --boot | ブート時メッセージ |
-p, --priority=プライオリティ | 指定したプライオリティ以上 |
-u, --unit=ユニット名 | ユニット指定 |
--full | エスケープ文字を除いてプレーンテキストで出力 |
--no-pager | 1ページごとに表示せず、すべてのログを出力する |
11.2.4. ログの調査
主要なログファイルは/var/log/messages
に保存されるが、ディストリビューションにより差異がある。
ログの種類
システム状態に応じて出力される各種ログは以下表のようなログファイルに出力される。
ログファイル名 | 内容 |
---|---|
/var/log/messages | 一般的なシステム関連のメッセージ |
/var/log/secure | セキュリティに関するメッセージ |
/var/log/cron | 定期的に実行される処理結果に関するメッセージ |
/var/log/maillog | メールに関するメッセージ |
/var/log/spooler | 印刷に関するメッセージ |
/var/log/boot.log | OS起動時に関するメッセ |
ログの確認方法
more
,tail
,tail - f
コマンドやgrep
を組み合わせてログの調査を行う。
11.2.5. ログファイルのローテーション
ログファイルはログ出力の度に追記されていくので、ファイルサイズが大きくなる。 そのためローテーション機能によりログファイルの分割などを行う。
ローテーション機能はcronを利用してlogrotateユーティリティが定期的に実行される。
logrotateの設定は/etc/logrotate.conf
ファイルで行う。
11.2.6. ログインユーザログの確認コマンド
lastコマンド
最近ログインしたユーザーの一覧を表示するコマンド。
参照ファイルは/var/log/wtmp
。
whoコマンド
ログイン中のユーザ名、ログイン端末名、ログイン日時、ログイン元IPを表示するコマンド。
参照ファイルは/var/run/utmp
。
wコマンド
who
コマンドでの情報とシステム情報も表示するコマンド。
参照ファイルは/var/run/utmp
。
lastlogコマンド
ログファイルを参照しユーザごとに最近のログイン一覧を表示するコマンド。
参照ファイルは/var/log/lastlog
。
11.3. メール管理
11.3.1. メール配送の仕組み
Linuxにおいてメールの配送はMTA、MDA,MUAにより構成/実現される。
MTA
MTA(Mail Transfer Agent)は電子メールを配信/転送するプログラム、つまりメールサーバソフトウェアを表す。 MTAにはsendmail、qmail、postfix、eximなどがある。
MTA | 処理速度 | セキュリティ | 説明 |
---|---|---|---|
sendmail | × | × | かつてMTAの標準ソフトウェアと広く普及した。 |
qmail | ○ | ◎ | セキュリティ面に優れており、非常に堅牢なつくり。パフォーマンスもsendmailより優れている。 |
postfix | ◎ | ○ | パフォーマンスが最も優れたMTA。設定が簡単でセキュリティ面も高い。sendmailとの互換性がある。 |
exim | △ | ○ | Debian系の標準のMTA。 |
MDA(Mail Delivery Agent)
メールボックスにメールを送るプログラム。
MUA(Mail User Agent)
MUAはメールクライアント(メーラ)を表しメール作成、閲覧が可能なもの。
11.3.2. メールの配送フロー
- メールクライアントソフトウェア(MUA)でメール作成
- 送信元側のメールサーバ上のMTA(1)へ送る
- 宛先側のメールサーバ上のMTA(2)へ転送(相手ドメインのDNSサーバに尋ねる)
- MTA(2)がメールを受け取ると、MDAがメールをメールボックスに格納する
- 受取人は自分のメールボックスからメールを取り出す(POP,IMAPを使用)
11.3.3. MTAの起動とメールの確認
MTAプログラムの確認
LinuxシステムでどのMTAプログラムがインストールされているのかは、以下プログラムで確認可能。
メールの送信、受信メールの確認
mail
コマンドで確認可能。
メールの転送とエイリアス
メールを転送する場合以下の2つの方法がある.
/etc/aliases
ファイルに設定する方法- 各ユーザーのホームディレクトリに存在する
~.forward
ファイルに転送先アドレスを設定する方法
あるメールアドレスに届いたメールを別のアドレスに転送する場合は/etc/aliases
ファイルに設定を記述することで可能。
書式は以下の通り。
11.3.4. 送信待ちメール/受信待ちメールの確認
多数のメールを送信した場合やメール送信に失敗した場合はメールキューに蓄えられる。
具体的には、送信者側のメールサーバの/var/spool/mqueue
ディレクトリに保存される。
情報はmailq
コマンドでできる。
なお受信成功した場合は/var/spool/mail
に保存される。
mailqコマンド
メールキューを一覧するコマンド。
11.4. プリンタ管理
11.4.1. CUPS
Linuxディストリビューションでのプリンタ印刷には基本的にはCUPSと呼ばれるシステムが使われる。 CUPSの主な特徴は以下の通り。
- IPP
- ネットワーク上のプリンタをサポート
- PPD
- AdobeのPPD形式のファイルでデバイスドライバの設定ができる(
/etc/cups/ppd/
にPDOファイルを格納される)
- AdobeのPPD形式のファイルでデバイスドライバの設定ができる(
- Web画面での設定
- Webブラウザから設定可能(ポート631)
- プリンタクラスのサポート
- 複数のローカルプリンタを1つのクラスにグループ化
CUPSの情報は/etc/cups
ディレクトリに格納され、CUPSの設定ファイルは/etc/cups/cupsd.conf
に保存される。
CUPSの設定方法は以下の2つある。
- 設定ファイルを直接編集する方法
- WebブラウザでCUPSの設定ページにアクセスして編集する方法
印刷の流れ
- 印刷データ受け取る
- スプーラが印刷データを受け付け、スケジューリングを行う
- プリンタが直接受け付けられないデータを中間形式に変換
- PPDに定義されたフィルタにより、最終の印刷データに変換する
- 処理した印刷データをCUPSのバックエンドに送る
- CUPSバックエンドは印刷データをプリンタに渡す
11.4.2. 印刷関連のコマンド
lprコマンド
ファイルや標準入力を印刷するコマンド。
オプション | 説明 |
---|---|
-# 部数 | 印刷部数を指定 |
-P プリンタ名 | 指定したプリンタに出力 |
lpqコマンド
プリンタキューに登録されている印刷ジョブを確認するコマンド。
オプション | 説明 |
---|---|
-a | 全てのプリンタの情報を表示 |
-P プリンタ名 | 指定したプリンタの情報を表示 |
lprmコマンド
プリンタキューにある印刷ジョブを削除するコマンド。
オプション | 説明 |
---|---|
- | 自分の印刷ジョブを全て削除 |
-P プリンタ名 | 指定したプリンタの印刷ジョブを削除 |