amarron2’s blog

linuxや資格関係の記事を書きます。基本自分用のメモです。

102-4. 重要なシステムサービス

  1. システム時刻を維持する
    • システムクロックとハードウェアクロックがある
      • システムクロック:カーネル内に存在する時計、「date」コマンドで確認及び変更できる
      • ハードウェアクロック:ハードウェアに内蔵されており電源オフでも動作する時計、「hwclock」コマンドで確認及び変更できる
    • 「ntpdate」コマンドでNTPサーバから正確な現在時刻を取得できる
  2. システムのログ
    • Linuxではsyslogを使って様々なイベントの記録、コンソール表示を行う
      • 「/etc/syslog.conf」がsyslogの設定ファイル(書式:ファシリティ.プライオリティ 出力先)
    • tail,grep,who,w,last等のコマンドでログを調査できる
    • 「/etc/logrotate.conf」ファイルでログローテーションの設定ができる
  3. メール転送エージェント(MTA)の基本
    • 電子メールを取り扱うソフトウェアには、「MTA」「MDA」「MUA」がある
    • 「mail」コマンドでメールの送受信が出来る
    • 「/etc/aliases」でエイリアス設定、「.forward」ファイルを変更で転送の設定が出来る
    • 「mailq」コマンドで送信待ちのメールが確認できる
  4. プリンターと印刷を管理する
    • 主なLinuxディストリビューションでは、印刷サブシステムに「CUPS」を採用している
    • 「/etc/init.d/cups start」でCUPSサービスを起動できる
    • 「lpr」コマンドでファイルの印刷
    • 「lpq」コマンドでプリントのキュー内容の表示
    • 「lprm」コマンドで印刷要求の削除

1. システム時刻を維持する

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

  • Linuxには2つの時計システムがある
    • ハードウェアクロック:ハードウェアに内蔵されていて電源がオフの状態でも動作する時計(コンピューター内の電池で動作)
    • システムクロック:カーネル内に存在する時計。Linux起動時にハードウェアクロックを参照して設定されるが、起動後は別々に動作する。
  • 動作が経過するにつれハードウェアクロックとシステムクロックに差が生まれる

システムクロック

  • 「date」コマンドでシステクロックの日時の表示(引数がある場合、システム時間を変更)
  • 「date」コマンドは、引数に「+」を付与すると指定した書式で表示される(ログファイル名に時間をつける時によく利用する)

date [MMDDhhmm[[CC]YY][.ss]]

[vagrant@localhost ~]$ date
2015年 9月  6日 日曜日 00:51:19 EST
[vagrant@localhost ~]$ date "+%Y%m%d"
20150906
[vagrant@localhost ~]$ sudo date 072019302010.20 // 2010年7月20日19時30分20秒に設定
2010年  7月 20日 火曜日 19:30:20 EDT
[vagrant@localhost ~]$

ハードウェアクロック

  • 「hwclock」コマンドでハードウェアクロックの表示及び変更が出来る

hwclock オプション

オプション 説明
-r ハードウェアクロックを表示
-w システムクロックの時刻をハードウェアクロックの時刻に設定(hwclock –systohcも同じ)
-s ハードクロックの時刻をソフトウェアクロックの時刻に設定(hwclock –hctosysも同じ)

NTPによる時刻設定

  • 正確な時刻を取得するためにIPネットワーク経由でNTP(Network Time Protocol)を使用し情報を取得する
  • 「ntpdate」コマンドでNTPサーバから正確な現在時刻を取得できる

ntpdate [オプション] NTPサーバ名

オプション 説明
-d デバックモードで実行(時刻の修正はしない)
-q NTPサーバーに日付と時刻を問い合わせる(時刻の修正はしない)
-v 詳細情報を表示
ntpdateの使用例)
[root@localhost ~]# ntpdate -v ntp.nict.jp  // ntp.nict.jp(情報通信研究機構)をシステムクロックに設定
 6 Sep 01:45:45 ntpdate[1871]: ntpdate 4.2.4p8@1.1612-o Fri Feb 22 11:23:28 UTC 2013 (1)
 6 Sep 01:45:56 ntpdate[1871]: adjust time server 133.243.238.244 offset -0.268652 sec
[root@localhost ~]# date
2015年  9月  6日 日曜日 01:46:01 EDT
[root@localhost ~]# hwclock 
2015年09月06日 05時46分03秒  -0.157601 秒
[root@localhost ~]# hwclock -w               // システムクロックの時刻をハードウェアクロックの時刻に設定
[root@localhost ~]# hwclock 
2015年09月06日 01時47分53秒  -0.804416 秒
[root@localhost ~]# 

2. システムのログ

  • Linuxではsyslogを使って様々なイベントの記録、コンソール表示を行う

syslog

  • 「/etc/syslog.conf」がsyslogの設定ファイル(centOSの場合、rsyslog.conf)
  • 「syslog」コマンドと「dmesg」コマンド
    • syslog:各アプリケーションやOSが出力するログ
    • dmesg:システム起動直後に、起動時のメッセージ(リングバッファの内容)
  • CentOS 6以降は「rsyslog」が採用されている場合がある(「/etc/rsyslog.conf」が設定ファイル)
syslog.confの書式)
cron.*     /var/log/cron
①    ②    ③
①ファシリティ:メッセージの出力元、カーネル実行中のプロセス、「*」で全てを設定できる
②プライオリティ:メッセージの優先度、プライオリティを低くするとログも少なくなる、「*」で全てのプライオリティを選択できる
③出力先:メッセージの出力先、ログファイルに出力したい場合ファイル名をフルパスで指定、ネットワーク上のリモートホストに送信したい場合「@」を使ってホストを指定、「*」を使うと全てのユーザーに通知する
  • ファシリティ
ファシリティ 説明
auth, authpriv 承認システム
cron cron
deamon 各種デーモン
kern カーネル
lpr 印刷システム
mail メールシステム
syslog syslog機能
local0~local7 独自の設定
  • プライオリティ
プライオリティ 説明
emerg 非常に危険な状態
alert 危険な状態
crit 危険な状態
err 一般的なエラー
warning システム警告
notice システム重要通知
info システム情報
debug デバッグ情報
none ファシリティ無効(メッセージを送らない)
  • 出力先
出力先 説明
ファイル名 ファイルに出力
@ホスト名 リモートホストsyslogdに出力
ユーザー名 ユーザー端末に出力
/dev/console コンソールに出力
* 全てのユーザー端末に出力
  • 「logger」コマンドでログメッセージを生成できる

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

ログの調査

  • 「tail」コマンドでログファイルを監視できる
  • grep」コマンド併用で特定のメッセージを調べられる
  • 「who」コマンドでログイン中のユーザーが調べられる
  • 「w」コマンドでログイン中のユーザー及びシステム情報も調べられる
  • 「last」コマンドで最近ログインしたユーザー一覧を表示します
ログファイル コマンド 説明
/var/log/messages less,tail,grep 一般的なシステム関連のメッセージ
/var/log/secure less,tail,grep セキュリティに関するメッセージ
/var/log/wtmp last 最近ログインしたユーザー
/var/run/utmp who,w ログイン中のユーザー
/var/log/lastlog lastlog ユーザーごとのログイン情報
ログの書式)
Nov  9 06:46:59 localhost kernel: starting
①               ②        ③      ④
①日時
②出力元ホスト名
③メッセージ出力元
④メッセージ
grepの例)
[root@localhost ~]# grep eth0 /var/log/messages
Nov  9 05:33:05 localhost kernel: e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 08:00:27:9a:38:87

ログファイルのローテーション

  • 一つのログファイルに追記すると容量が肥大化していく
  • 「ローテーション機能」を使うと古くなったログを切り分け肥大化を防げる
    • 「/var/log/message」ファイルは「/var/log/message.1」にコピーされ、「/var/log/message」が新に作成される(順次に「.2」ファイルが作成されていく)
  • 「logrotateユーティリティ」でローテーション機能は提供される
  • 「/etc/logrotate.conf」ファイルでlogrotateの設定ができる
/etc/logrotate.confの一部抜粋)
# ローテーション周期は1周間とする
weekly
# バックアップログを4週間保存する
rotate 4
# ローテーションさせたら空のログファイルを作成する
create
# ログファイルを圧縮する
#compress

3. メール転送エージェント(MTA)の基本

メール配送の仕組み

  • 電子メールを取り扱うソフトウェアには、「MTA」「MDA」「MUA」がある
  • メール配送に使われるMTAはSMTPプロトコルでメッセージをやりとりするためSMTPサーバーとも呼ばれる

f:id:Amarron:20150830155228p:plain

MTAの起動

  • システムによって、インストールされているMTAプログラムは異なる
  • 25番ポートを開いているソフトウェアを調べると稼働しているMTAが確認できる
  • SMTPサーバー(MTA)には、「sendmail」「Postfix」「qmail」「exim」などがある
    • 「/etc/init.d/sendmail start」で起動が出来る(postfixやexim4の場合は、sendmailの部分を変更)
MTA 設定ファイル 転送設定ファイル エイリアス設定用ファイル
Postfix main.cf、master.cf ~/.forward
qmail defaultdomainなど多数 ~/.qmail
exim4 exim4.conf.template ~/.forward /etc/aliasesに設定
sendmail sendmail.cf ~/.forward
MTAプログラムの確認)
# netstat -atnp | grep 25
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3986/exim4
sendmailを起動方法)
# /etc/init.d/sendmail start
sendmail を起動中:                                         [  OK  ]
sm-client を起動中:                                        [  OK  ]

メールの送受信

  • 「mail」コマンドでメールの送受信が出来る
    • 引数ありで実行するとメールを送信できる
    • 引数なしで実行すると受信メールを確認できる
  • 「/var/spool/mqueue/」に送信待ちのメールが蓄えられる(メールキュー)
    • 「mailq」コマンドで送信待ちのメールが確認できる(mailコマンドで送信が成功したか確認できる)
  • 「/var/spool/mail/」に受信メールが格納される

mail [-s 題名] [宛先メールアドレスもしくはユーザー名]

[vagrant@localhost ~]$ mail -s test you@examle.com
Hello Test! # 本文を入力
.           # 「.」で入力終了
EOT
[vagrant@localhost ~]$

メールの転送

  • 「/etc/aliases」ファイルを変更して転送できる(設定後に「newaliases」コマンドで反映する)
  • 「~/.forward」ファイルを作成でも転送できる(一時的に転送したい場合やユーザ個人の管理で転送したい場合に使用する)
/etc/aliasesの記述例)
# rootに届いたメールをadmin,lpicに転送(rootにはメールが届かなくなる)
root:admin,lpic
.forwardの記述例)
# 自分に届いたメールをyou@examle.comに転送
you@examle.com

4. プリンターと印刷を管理する

印刷の仕組み

  • 主なLinuxディストリビューションでは、印刷サブシステムに「CUPS」を採用している
  • CUPSの特徴は次の4つ
    1. IPPの採用:プロトコルにIPP(Internet Printing Protocol)を採用しインターネット経由で印刷も可能
    2. PPDファイルサポート:AdobeのPPD形式ファイルでデバイスドライバの設定可能
    3. Webベースで設定可能:Webブラウザから設定できるツールが組み込まれている
    4. プリンタクラスのサポート:複数のプリンタを1台のプリンタに見せる機能
  • 「/etc/init.d/cups start」でCUPSサービスを起動できる
  • 「/etc/cups/printers.conf」がCUPSのプリンタ設定ファイル

印刷関連コマンド

  • 「lpr」コマンドでファイルを印刷できる
  • 「lpq」コマンドでプリントのキューの内容を表示できる
  • 「lprm」コマンドで印刷要求を削除できる

lpr [オプション] [ファイル名]

オプション 説明
-# 部数 印刷部数を指定
-P プリンター名 印刷プリンターを指定

lpq [オプション] [ユーザー名] [ジョブ番号]

オプション 説明
-P プリンター名 プリンターを指定

lprm [オプション] [ジョブ番号]

オプション 説明
-P プリンター名 プリンターを指定
- 自分の全印刷ジョブを削除

使用した教材

LPIC101,102