如何查看 systemd .timer 文件正在运行什么命令?

如何查看 systemd .timer 文件正在运行什么命令?

以 phpsessionclean 时间表为例。其 cron.d 文件如下所示:

09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

它说如果系统上不存在 systemd 则运行脚本/usr/lib/php/sessionclean

如果 systemd 确实存在,则它不会运行,而是运行 systemd 计时器。该phpsessionclean.timer文件如下所示:

[Unit]
Description=Clean PHP session files every 30 mins

[Timer]
OnCalendar=*-*-* *:09,39:00
Persistent=true

[Install]
WantedBy=timers.target

我读到了有关创建您自己的 .timer 文件并创建关联的 .service 文件,其中包含您正在运行的脚本的详细信息,但在这种情况下,以及由软件包安装的其他 .timer 文件(例如 certbot、apt等)没有关联的 .service 文件。那么,我如何推断当这个计时器运行时将执行什么命令呢?

答案1

您可能找错地方了。单位可以位于多个地方。

$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
...

(您还可以在这里看到一个命令:

$ systemctl status systemd-tmpfiles-clean.service
● systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-clean.service; static)
   Active: inactive (dead) since Sun 2017-07-16 17:34:00 BST; 16h ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 28580 ExecStart=/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
 Main PID: 28580 (code=exited, status=0/SUCCESS)

要仔细检查关联的服务:

$ systemctl show -p Unit systemd-tmpfiles-clean.timer
Unit=systemd-tmpfiles-clean.service

相关内容