总体结构是这样的,daily-timer.timer
设定每天半夜 2 点随机延迟 3600 秒触发daily-timer.target
,多个.service
服务单元设定[Install]
为WantedBy=daily-timer.target
。
各.service
服务单元的[Service]
的Type=oneshot
,为了顺序而不是并发启动,在[Unit]
中设定After=
。
现在的情况是其中一个self-backup.service
,是排在最后启动的,实际却静默不启动,没有错误日志。其它几个服务都成功。
先贴上这个服务的配置。
$ systemctl cat self-backup.service
# /etc/systemd/system/self-backup.service
[Unit]
Description=Self Backup
Requires=mnt-nas2.mount
After=mnt-nas2.mount
After=reboot4.service
[Service]
Type=oneshot
ExecStart=/root/sh/backup/self-backup.sh
[Install]
WantedBy=daily-timer.target
日志空空如也。
$ sudo journalctl --unit=self-backup.service
$ sudo journalctl --priority=err --unit=self-backup.service
$ sudo journalctl --priority=debug --unit=self-backup.service
没有启动或没启动的任何日志。
尝试手动启动这一个服务是成功的,也会有日志记录。
$ sudo systemctl start self-backup.service
$ sudo journalctl --unit=self-backup.service
但就是无法被 Timer 触发。
$ sudo systemctl list-dependenies self-backup.service
self-backup.service
● ├─mnt-nas2.mount
● ├─system.slice
● └─sysinit.target
● ├─apparmor.service
● ├─blk-availability.service
● ├─dev-hugepages.mount
● ├─dev-mqueue.mount
● ├─keyboard-setup.service
● ├─kmod-static-nodes.service
● ├─lvm2-lvmpolld.socket
● ├─lvm2-monitor.service
● ├─nftables.service
● ├─proc-sys-fs-binfmt_misc.automount
● ├─sys-fs-fuse-connections.mount
● ├─sys-kernel-config.mount
● ├─sys-kernel-debug.mount
● ├─systemd-ask-password-console.path
● ├─systemd-binfmt.service
● ├─systemd-hwdb-update.service
● ├─systemd-journal-flush.service
● ├─systemd-journald.service
● ├─systemd-machine-id-commit.service
● ├─systemd-modules-load.service
● ├─systemd-random-seed.service
● ├─systemd-sysctl.service
● ├─systemd-sysusers.service
● ├─systemd-timesyncd.service
● ├─systemd-tmpfiles-setup-dev.service
● ├─systemd-tmpfiles-setup.service
● ├─systemd-udev-trigger.service
● ├─systemd-udevd.service
● ├─systemd-update-utmp.service
● ├─cryptsetup.target
● ├─local-fs.target
● │ ├─-.mount
● │ ├─boot.mount
● │ ├─systemd-fsck-root.service
● │ └─systemd-remount-fs.service
● └─swap.target
● └─dev-mapper-vestro\x2d\x2dvg\x2dswap_1.swap
可以确定self-backup.service
是被daily-timer.target
所依赖的,在/etc/systemd/system/daily-timer.target.wants/
目录下有所有需要触发的服务单元的软连接。
小结:
各位彦祖,请教这可能是什么问题导致的,其次遇到这种问题用什么办法来排错和调试?谢谢
1
jasonyang9 OP 折腾了半天发现是依赖`Requires=mnt-nas2.mount`在用`.target`触发时不会满足,不会自动挂载文件系统。而在手动执行`systemctl start self-backup.service`时却能够加载。是 BUG 么?
|
2
julyclyde 2021-05-08 17:55:02 +08:00
给 systemd 开详细日志试试
|