コンテンツにスキップ

11. システムサービスの管理

11.1. システムクロックの設定

11.1.1. システムクロックとハードウェアクロック

Linuxのクロックシステムにはシステムクロックとハードウェアクロックがある。

システムクロック

システムクロックはメモリ上で動作する時計システム。 Linuxカーネル内に存在し、Linux起動時にハードウェアクロックと同期する。

このクロックは電源がオフになると時計情報も消える。

ハードウェアクロック

ハードウェアクロックはハードウェアとして内蔵された時計システム。 このクロックはシステム停止してもハードウェア上の内蔵バッテリーで動作する。

11.1.2. システムクロック関連コマンド

dateコマンド

システムクロックを参照して現在日時表示、時刻の変更ができるコマンド。

date
書式 説明
%Y
%m 月(01-12)
%d 日(01-31)
%H 時(00-23)
%M 分(00-59)
%a 曜日
%b 月名

hwclockコマンド

ハードウェアクロックの参照、システムクロックをハードウェアクロックにセットできるコマンド。

hwclock <オプション>
オプション 説明
-r ハードウェアクロックの表示
-s (--hctosys) ハードウェアクロックの時刻をシステムクロックに反映
-w (--systohc) システムクロックの時刻をハードウェアクロックに反映
-u UTC (Universal Coordiated Time)として反映

timedatectlコマンド

systemd採用ディレクトリビューションで使用可能な日付、時刻、タイムゾーンを管理を設定できるコマンド。

timedatectl status

11.1.3. NTPによる時刻設定

ハードウェアクロック、システムクロックともに完全に正確な時刻情報ではないのでNTPというプロトコルを通じて正確な情報を取得する。 NTPは階層構造になっており、最上位は原子時計やGPSなどが位置して、その直下にあるNTPサーバを Stratum1、その下を Stratum2 と続いていく構造となっている。

ntpdateコマンド

NTPサーバから正確な時刻取得するコマンド。

ntpdate

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の管理を行うコマンド。

chronyc --help

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 印刷システム
mail メールサービス
user ユーザーアプリケーション
local0-local7 ローカルシステム

プライオリティ

プライオリティはメッセージの重要度を表す。

重要度(降順) 説明
emerg 緊急事態
alert 早急に対処が必要
crit 深刻(システムの処理は継続できる)
err 一般的なエラー
warning 一般的な警告
notice 一般的な通知
info 一般的な情報
debug 一般的な情報
none ログを記録しない

アクション(出力先)

アクションではメッセージの出力先を指定する。

表記 説明
ファイル名 ファイルへの出力
ユーザー名 ユーザーの端末への出力
@ホスト名 リモートホストのsyslogdへの出力
/dev/console コンソールへの出力
* 全てのユーザーの端末への出力

11.2.3. ログに関するコマンド

loggerコマンド

ログメッセージ生成するコマンド。 システムログの設定の確認などに使用する。

logger [ -p <ファシリティ>.<プライオリティ> ] [ -t タグ ] <メッセージ>

syslog.infoの場合は/var/log/syslogに追記される。

systemd-catコマンド

コマンドの実行結果をジャーナルに書き込むコマンド。 /var/log/syslogに書かれる。

systemd-cat echo 'hoge'

journalctlコマンド

systemd採用システムにおいて、systemdのログ(ジャーナル)を閲覧できるコマンド。 ジャーナルは/var/log/journal/var/run/log/journalのバイナリに保存される。

journalctl
オプション 説明
-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

last

whoコマンド

ログイン中のユーザ名、ログイン端末名、ログイン日時、ログイン元IPを表示するコマンド。 参照ファイルは/var/run/utmp

who

wコマンド

whoコマンドでの情報とシステム情報も表示するコマンド。 参照ファイルは/var/run/utmp

w

lastlogコマンド

ログファイルを参照しユーザごとに最近のログイン一覧を表示するコマンド。 参照ファイルは/var/log/lastlog

lastlog

11.3. メール管理

11.3.1. メール配送の仕組み

Linuxにおいてメールの配送はMTAMDA,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. メールの配送フロー

  1. メールクライアントソフトウェア(MUA)でメール作成
  2. 送信元側のメールサーバ上のMTA(1)へ送る
  3. 宛先側のメールサーバ上のMTA(2)へ転送(相手ドメインのDNSサーバに尋ねる)
  4. MTA(2)がメールを受け取ると、MDAがメールをメールボックスに格納する
  5. 受取人は自分のメールボックスからメールを取り出す(POP,IMAPを使用)

11.3.3. MTAの起動とメールの確認

MTAプログラムの確認

LinuxシステムでどのMTAプログラムがインストールされているのかは、以下プログラムで確認可能。

netstat -atnp | grep 25

メールの送信、受信メールの確認

mailコマンドで確認可能。

mail # 受信メールの確認
mail -s <題名> <宛先ユーザー名 | 宛先メールアドレス> # メールの送信「.」で入力終了

メールの転送とエイリアス

メールを転送する場合以下の2つの方法がある.

  1. /etc/aliasesファイルに設定する方法
  2. 各ユーザーのホームディレクトリに存在する~.forwardファイルに転送先アドレスを設定する方法

あるメールアドレスに届いたメールを別のアドレスに転送する場合は/etc/aliasesファイルに設定を記述することで可能。 書式は以下の通り。

転送元ユーザー: 転送先ユーザー

11.3.4. 送信待ちメール/受信待ちメールの確認

多数のメールを送信した場合やメール送信に失敗した場合はメールキューに蓄えられる。 具体的には、送信者側のメールサーバの/var/spool/mqueueディレクトリに保存される。 情報はmailqコマンドでできる。

なお受信成功した場合は/var/spool/mailに保存される。

mailqコマンド

メールキューを一覧するコマンド。

mailq

11.4. プリンタ管理

11.4.1. CUPS

Linuxディストリビューションでのプリンタ印刷には基本的にはCUPSと呼ばれるシステムが使われる。 CUPSの主な特徴は以下の通り。

  • IPP
    • ネットワーク上のプリンタをサポート
  • PPD
    • AdobeのPPD形式のファイルでデバイスドライバの設定ができる(/etc/cups/ppd/にPDOファイルを格納される)
  • Web画面での設定
    • Webブラウザから設定可能(ポート631)
  • プリンタクラスのサポート
    • 複数のローカルプリンタを1つのクラスにグループ化

CUPSの情報は/etc/cupsディレクトリに格納され、CUPSの設定ファイルは/etc/cups/cupsd.confに保存される。 CUPSの設定方法は以下の2つある。

  • 設定ファイルを直接編集する方法
  • WebブラウザでCUPSの設定ページにアクセスして編集する方法

印刷の流れ

  1. 印刷データ受け取る
  2. スプーラが印刷データを受け付け、スケジューリングを行う
  3. プリンタが直接受け付けられないデータを中間形式に変換
  4. PPDに定義されたフィルタにより、最終の印刷データに変換する
  5. 処理した印刷データをCUPSのバックエンドに送る
  6. CUPSバックエンドは印刷データをプリンタに渡す

11.4.2. 印刷関連のコマンド

lprコマンド

ファイルや標準入力を印刷するコマンド。

lpr <オプション> ファイル名
オプション 説明
-# 部数 印刷部数を指定
-P プリンタ名 指定したプリンタに出力

lpqコマンド

プリンタキューに登録されている印刷ジョブを確認するコマンド。

lpq <オプション> <ユーザー名> <ジョブ番号>
オプション 説明
-a 全てのプリンタの情報を表示
-P プリンタ名 指定したプリンタの情報を表示

lprmコマンド

プリンタキューにある印刷ジョブを削除するコマンド。

lprm <オプション> <ジョブ番号>
オプション 説明
- 自分の印刷ジョブを全て削除
-P プリンタ名 指定したプリンタの印刷ジョブを削除