Linuc102メモ⑬システムサービス
システム時刻とハードウェア時刻
ハードウェア時刻=ハードに内蔵された時計が表示する時刻。
この時計は、電源オフの状態でも動作する。システム時刻=LInuxカーネル内の時計が表示する時刻。
date
システム時刻を参照して現在時刻を表示。
root@Ubuntu-LInuc:/home/ken# date
2023年 8月 12日 土曜日 20:37:34 JST
root@Ubuntu-LInuc:/home/ken# date +%Y
2023
hwclock
ハードウェア時刻の参照や設定を行う。
root@Ubuntu-LInuc:/home/ken# hwclock
2023-08-12 20:39:27.996341+09:00
timedatectl
systemdを採用したディストリビューションで日付と時刻、タイムゾーンを管理。
root@Ubuntu-LInuc:/home/ken# timedatectl status
Local time: 土 2023-08-12 20:43:58 JST
Universal time: 土 2023-08-12 11:43:58 UTC
RTC time: 土 2023-08-12 11:43:58
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
timedatcl set-timezone タイムゾーン
root@Ubuntu-LInuc:/etc# timedatectl set-timezone Asia/Tokyo
root@Ubuntu-LInuc:/etc# timedatectl
Local time: 日 2023-08-13 11:27:54 JST
Universal time: 日 2023-08-13 02:27:54 UTC
RTC time: 日 2023-08-13 02:27:54
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
タイムゾーン
地域ごとに区分された標準時間帯を指す。
日本はグリニッジ標準時(UTC)より9時間早い時間帯になっている。
タイムゾーンの情報は以下ファイルに格納されている。
root@Ubuntu-LInuc:/usr/share/zoneinfo# ls
Africa Cuba GMT+0 Japan NZ-CHAT Turkey
America EET GMT-0 Kwajalein Pacific tzdata.zi
Antarctica Egypt GMT0 leapseconds Poland UCT
Arctic Eire Greenwich leap-seconds.list Portugal Universal
Asia EST Hongkong Libya posix US
Atlantic EST5EDT HST localtime posixrules UTC
Australia Etc Iceland MET PRC WET
Brazil Europe Indian Mexico PST8PDT W-SU
Canada Factory Iran MST right zone1970.tab
CET GB iso3166.tab MST7MDT ROC zone.tab
Chile GB-Eire Israel Navajo ROK Zulu
CST6CDT GMT Jamaica NZ Singapore
tzconfig
「/etc/localtime」と「/etc/timezone」ファイルをまとめて設定できるコマンド。
NTPによる時刻設定
ハードウェア時刻もシステム時刻も正確さに欠ける
ネットワーク経由でクロックを同期するNTPを使い、ネット上にあるNTPサーバから正確な時刻を取得するのがベスト!
ntpdate
NTPサーバから正確な時刻を取得する。
root@Ubuntu-LInuc:/usr/share/zoneinfo# ntpdate time1.google.com
12 Aug 20:55:56 ntpdate[28320]: adjust time server 216.239.35.0 offset +0.005841 sec
ntpq
NTPサーバの状態を照会できる。
root@Ubuntu-LInuc:/usr/share/zoneinfo# ntpq -p localhost
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 +0.000 0.000
Chrony
ntpd/ntpdateの代替となるサーバ/クライアントソフトウェア。
デーモンプロセス「chronyd」
クライアントコマンド「crynonyc」
RHEL7やCentOS7以降では標準の時刻同期システム。
chronyc
chronyc activity NTPサーバのオンライン/オフラインの数を表示
root@Ubuntu-LInuc:/usr/share/zoneinfo# chronyc activity
200 OK
8 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
システムログの設定
PCの動作状況の記録をログという。
Linuxではsyslog使っていだけど、現在のディストリビューションではryslog使うようになった。
rsyslog
設定ファイルは、/etc/rsyslog.confファイルおよびrsyslog.dディレクトリ以下のファイルで行う。
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
ファシリティ
ログメッセージの生成元のプログラムは、メッセージにタグ付けをする
タグにはファシリティとプライオリティがある
ファシリティの種類(一部)
auth,authpriv 認証システム(login)による出力
cron cronによる出力
kern カーネルによる出力
プライオリティ
メッセージの重要度を表す
プライオリティを低くすればするほどログとして出力される情報量が多くなる
プライオリティの種類(一部)
emerg 緊急事態
alert 早急に対処が必要な事態
crit システムの処理は継続できるものの深刻な事態
err 一般的なエラー
none ログを記録しない
出力先
メッセージの出力先は、ログファイルやユーザや端末、他のホストなどを選択できる。
これをアクションフィールドとよぶ。
/var/log/messages ログファイルに出力
/dev/tty1 コンソール(tty1)に出力
ためしにmessagesの中身をのぞいてみた
Aug 7 06:02:14 CentOS7 NetworkManager[697]: <info> [1691413334.9379] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:02:14 CentOS7 NetworkManager[697]: <info> [1691413334.9393] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:05:59 CentOS7 NetworkManager[697]: <info> [1691413559.5792] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:05:59 CentOS7 NetworkManager[697]: <info> [1691413559.5794] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:06:47 CentOS7 NetworkManager[697]: <info> [1691413607.0658] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:06:47 CentOS7 NetworkManager[697]: <info> [1691413607.0660] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:07:03 CentOS7 NetworkManager[697]: <info> [1691413623.0234] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:07:03 CentOS7 NetworkManager[697]: <info> [1691413623.0244] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:07:18 CentOS7 NetworkManager[697]: <info> [1691413638.9948] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:07:18 CentOS7 NetworkManager[697]: <info> [1691413638.9961] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 7 06:10:01 CentOS7 systemd: Started Session 1933 of user root.
logger
ログメッセージを生成するコマンド。
試しにメッセージを生成してみた。
[root@CentOS7 log]# logger -p syslog.info -t Test "looger testcat messages"
生成したメッセージを確認してみた。
[root@CentOS7 log]# cat messages
Aug 12 20:13:04 CentOS7 NetworkManager[697]: <info> [1691896384.9593] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 12 20:13:04 CentOS7 NetworkManager[697]: <info> [1691896384.9606] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 12 20:13:51 CentOS7 Test: looger testcat messages
systemd-cat
コマンドの実行結果をジャーナルに書き込むことができる
[root@CentOS7 log]# systemd-cat uptime
[root@CentOS7 log]# journalctl -xe
8月 12 20:19:59 CentOS7 NetworkManager[697]: <info> [1691896799.0225] policy:
8月 12 20:20:01 CentOS7 uptime[6624]: 20:20:01 up 14 days, 5:58, 2 users, lo
ログの調査
システムの利用状況やソフトウェアの動作に異常がないかを確認。
tail -f
ファイルの追記を監視するため、待機する。
追記があった場合は、追記の分を表示する。
[root@CentOS7 log]# tail -f messages
et-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 12 23:09:19 CentOS7 NetworkManager[697]: <info> [1691906959.0983] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 12 23:09:19 CentOS7 NetworkManager[697]: <info> [1691906959.0984] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
Aug 12 23:10:01 CentOS7 systemd: Started Session 2452 of user root.
grep 「文字列」「ファイル名」
[root@CentOS7 log]# grep ene messages
Aug 8 18:32:28 CentOS7 NetworkManager[697]: <info> [1691544748.0965] device (ens33): DHCPv6 lease renewal requested
Aug 11 06:39:45 CentOS7 NetworkManager[697]: <info> [1691761185.1190] device (ens33): DHCPv6 lease renewal requested
journalctl
systemdのログ(ジャーナル)を閲覧。
[root@CentOS7 log]# journalctl -f
-- Logs begin at 日 2023-07-16 07:32:22 PDT. --
8月 12 23:09:19 CentOS7 NetworkManager[697]: <info> [1691906959.0983] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:09:19 CentOS7 NetworkManager[697]: <info> [1691906959.0984] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:10:01 CentOS7 systemd[1]: Started Session 2452 of user root.
8月 12 23:10:01 CentOS7 CROND[16329]: (root) CMD (/usr/lib64/sa/sa1 1 1)
8月 12 23:12:47 CentOS7 NetworkManager[697]: <info> [1691907167.5600] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:12:47 CentOS7 NetworkManager[697]: <info> [1691907167.5602] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:13:13 CentOS7 NetworkManager[697]: <info> [1691907193.1514] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:13:13 CentOS7 NetworkManager[697]: <info> [1691907193.1518] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:13:29 CentOS7 NetworkManager[697]: <info> [1691907209.1137] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
8月 12 23:13:29 CentOS7 NetworkManager[697]: <info> [1691907209.1139] policy: set-hostname: current hostname was changed outside NetworkManager: 'CentOS7'
ログファイルのローテーション
ログファイルは放置していると容量が肥大化していくのを防ぐための機能
ある一定までラインまで容量がたまったら、そのファイルを保存して、別ファイルを作成する。ファイル1、ファイル2といった具合に増えていく。
規定されたファイル数に到達したら、一番古いファイルは削除される
logrotateユーティリティが提供している機能
logrotateコマンドを使用すると直ちに指定ファイルのログローテーションを実施できる
メール管理
メール配送の仕組み
クライアント:MUA(Mail User Agent)
メールサーバ:MTA①
メールサーバ:MTA②→MDA→メールボックス→POPサーバ
クライアント:MUA
MTAとメールキューの管理(mailq)
システムによってどのMTAプログラムを使用しているか異なる
netstatを使えばどのプログラムを使用しているか分かる
[root@CentOS7 log]# netstat -atnp | grep 25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1388/master
tcp6 0 0 ::1:25 :::* LISTEN 1388/master
masterはPostfixの中心的なデーモンである。
送信待ちのメールはメールキューに蓄積される
メールキューの内容を表示するコマンドはmailq
[root@CentOS7 log]# mailq
Mail queue is empty
メールの送信と確認
mail [-s 題名][宛先メールアドレスorホスト名]
mailコマンドで引数なしで実行するとメールボックスに届いてるメールを確認できる
メールの転送とエイリアス
/etc/aliasesファイルを利用すると。メールアドレスの別名(エイリアス)を設定できる
newaliasesコマンドを使うことで有効にできる
各ユーザのホームディレクトリに.forwardファイルを用意し、その中に転送先メールアドレスを記載することで、転送できる。
一時的に転送したいときなどに使う。
この記事が気に入ったらサポートをしてみませんか?