
Ubuntu日本語フォーラム
ログインしていません。
環境:Ubuntu16.4
rsyslogのバックアップが作成される仕組みについて学習したいと思っています。
現在、rsyslogのサービスが常住しており、/var/log/syslogにログが出力されています。
また、syslog.1、syslog.2.gzといったログのバックアップもちゃんと作成されています。
logrotateというサービスでログのバックアップが行われるようなのですが、logrotateのサービスは現在動いていません。それなのに、どうしてバックアップが作成されているのが、分からない状態です。
どなたか教えて頂けませんでしょうか。
オフライン
mikan_mikan による投稿:
logrotateというサービスでログのバックアップが行われるようなのですが、logrotateのサービスは現在動いていません。それなのに、どうしてバックアップが作成されているのが、分からない状態です。
ログローテーションは logrotate.service が
/usr/sbin/logrotate /etc/logrotate.conf
というコマンドラインを実行することで実現しています。
logrotate.serviceは oneshotタイプなので一度実行した後は停止しています。
Ubuntuが起動したときにsystemdが timers.targetを通して logrotate.timer
を動かしています。
logrotate.timer は 定期的に logrotate.service をスタートさせます。
$ systemctl cat logrotate.service # /lib/systemd/system/logrotate.service [Unit] Description=Rotate log files Documentation=man:logrotate(8) man:logrotate.conf(5) ConditionACPower=true [Service] Type=oneshot ExecStart=/usr/sbin/logrotate /etc/logrotate.conf # performance options Nice=19 IOSchedulingClass=best-effort IOSchedulingPriority=7 # hardening options # details: https://www.freedesktop.org/software/systemd/man/systemd.exec.html # no ProtectHome for userdir logs # no PrivateNetwork for mail deliviery # no ProtectKernelTunables for working SELinux with systemd older than 235 # no MemoryDenyWriteExecute for gzip on i686 PrivateDevices=true PrivateTmp=true ProtectControlGroups=true ProtectKernelModules=true ProtectSystem=full RestrictRealtime=true
$ systemctl cat logrotate.timer # /lib/systemd/system/logrotate.timer [Unit] Description=Daily rotation of log files Documentation=man:logrotate(8) man:logrotate.conf(5) [Timer] OnCalendar=daily AccuracySec=12h Persistent=true [Install] WantedBy=timers.target
$ systemctl status logrotate.service ● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) TriggeredBy: ● logrotate.timer Docs: man:logrotate(8) man:logrotate.conf(5)
$ systemctl status logrotate.timer ● logrotate.timer - Daily rotation of log files Loaded: loaded (/lib/systemd/system/logrotate.timer; enabled; vendor preset: enabled) Active: active (waiting) since Wed 2020-12-02 16:47:39 JST; 4h 32min ago Trigger: Thu 2020-12-03 01:47:28 JST; 4h 26min left Triggers: ● logrotate.service Docs: man:logrotate(8) man:logrotate.conf(5) 12月 02 16:47:39 focal systemd[1]: Started Daily rotation of log files.
$ systemctl list-dependencies logrotate.timer --reverse logrotate.timer ● └─timers.target ● └─basic.target ● └─multi-user.target ● └─graphical.target
$ systemctl list-timers --no-pager --full NEXT LEFT LAST PASSED UNIT ACTIVATES Thu 2020-12-03 00:55:50 JST 3h 30min left Tue 2020-12-01 00:53:25 JST 1 day 20h ago motd-news.timer motd-news.service Thu 2020-12-03 01:47:28 JST 4h 21min left Tue 2020-12-01 00:00:20 JST 1 day 21h ago logrotate.timer logrotate.service Thu 2020-12-03 01:47:28 JST 4h 21min left Tue 2020-12-01 00:00:20 JST 1 day 21h ago man-db.timer man-db.service Thu 2020-12-03 01:49:51 JST 4h 24min left Tue 2020-12-01 10:56:38 JST 1 day 10h ago anacron.timer anacron.service Thu 2020-12-03 01:58:47 JST 4h 33min left Tue 2020-12-01 06:08:04 JST 1 day 15h ago apt-daily-upgrade.timer apt-daily-upgrade.service Thu 2020-12-03 03:46:08 JST 6h left Mon 2020-11-30 23:47:42 JST 1 day 21h ago apt-daily.timer apt-daily.service Thu 2020-12-03 07:55:30 JST 10h left Tue 2020-12-01 08:20:06 JST 1 day 13h ago fwupd-refresh.timer fwupd-refresh.service Thu 2020-12-03 17:03:16 JST 19h left Wed 2020-12-02 17:03:16 JST 4h 22min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Sun 2020-12-06 03:10:52 JST 3 days left Sun 2020-11-29 03:11:18 JST 3 days ago e2scrub_all.timer e2scrub_all.service Mon 2020-12-07 00:00:00 JST 4 days left Mon 2020-11-30 01:40:50 JST 2 days ago fstrim.timer fstrim.service 10 timers listed. Pass --all to see loaded but inactive timers, too.
オフライン
すみません。 私の返信した #1 は間違ってました
#1に書いたのは Ubuntu 20.04 LTSでの動作でしたが、 Ubuntu 16.04 LTSを調べたら
違う仕組みで動いてました。
Ubuntu 16.04 LTSでは systemd の利用がまだあまり進んでなく、anacronによって
logrotateを動かしてます。
* 下記のようなイベントで anacronが呼ばれます。
Ubuntuを起動したとき
サスペンドから復帰したとき
時刻 07:30 になったとき
* anacronは日付をチェックして1日に1回 cron.dailyの ジョブを実行します。
* /etc/cron.daily/logrotate が ログファイルの置き換えを実行します。
$ find /lib/systemd -name *anacron* /lib/systemd/system/anacron-resume.service /lib/systemd/system/anacron.service $ find /etc/systemd -name *anacron* /etc/systemd/system/hibernate.target.wants/anacron-resume.service /etc/systemd/system/hybrid-sleep.target.wants/anacron-resume.service /etc/systemd/system/multi-user.target.wants/anacron.service /etc/systemd/system/suspend.target.wants/anacron-resume.service $ cat /etc/cron.d/anacron # /etc/cron.d/anacron: crontab entries for the anacron package SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 30 7 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
$ cat /etc/cron.daily/logrotate #!/bin/sh # Clean non existent log file entries from status file cd /var/lib/logrotate test -e status || touch status head -1 status > status.clean sed 's/"//g' status | while read logfile date do [ -e "$logfile" ] && echo "\"$logfile\" $date" done >> status.clean mv status.clean status test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate /etc/logrotate.conf
cron.daily のジョブが開始してから ログファイルが切り替えが行われ、
新しい方のログファイルに cron.dailyの終了が記録されます。
$ zgrep -Hn cron.daily /var/log/syslog.2.gz; grep -Hn cron.daily /var/log/syslog{.1,} /var/log/syslog.2.gz:1:Feb 18 12:55:10 ubuntu anacron[895]: Job `cron.daily' terminated /var/log/syslog.2.gz:158:May 6 13:42:01 ubuntu anacron[897]: Will run job `cron.daily' in 5 min. /var/log/syslog.2.gz:1690:May 6 13:47:00 ubuntu anacron[897]: Job `cron.daily' started /var/log/syslog.2.gz:1691:May 6 13:47:00 ubuntu anacron[2005]: Updated timestamp for job `cron.daily' to 2020-05-06 /var/log/syslog.1:2:May 6 13:47:57 ubuntu anacron[897]: Job `cron.daily' terminated /var/log/syslog.1:184:Dec 4 13:52:04 ubuntu anacron[884]: Will run job `cron.daily' in 5 min. /var/log/syslog.1:2107:Dec 4 14:09:59 ubuntu anacron[884]: Job `cron.daily' started /var/log/syslog.1:2108:Dec 4 14:09:59 ubuntu anacron[2570]: Updated timestamp for job `cron.daily' to 2020-12-04 /var/log/syslog:93:Dec 4 14:10:52 ubuntu anacron[884]: Job `cron.daily' terminated
オフライン
#3
elliptic による投稿:
すみません。 私の返信した #1 は間違ってました
#1に書いたのは Ubuntu 20.04 LTSでの動作でしたが、 Ubuntu 16.04 LTSを調べたら
違う仕組みで動いてました。
更に誤記。 #1と書いたのは #2の間違いです。
オフライン