「systemd」- Timer:由systemd提供的定时任务 @20210312

本文概述了在systemd中使用Timer设置精确到秒的定时任务方法。不同于Cron仅能控制到分钟级别,systemd的Timer提供了更高的时间精度。通过创建Timer单元文件并指定Service单元来执行具体任务,实现开机自启动等功能。

该文章概述了在systemd中使用Timer来设置定时任务的方法,并提及了一些细节上的东西。

!!!这篇文章是一个概要,而不是一份详细的教程。

在Linux中,任务调度器Cron广为认知。但是Cron的粒度只能控制到分钟,不能到秒,但是systemd的Timer可以。

第一步、创建单元文件

创建Timer单元文件。假设以mytimer.timer为文件名,格式大体如下:

[Unit]
Description=Runs mytimer every hour

[Timer]
OnUnitActiveSec=1h
Unit=mytimer.service

[Install]
WantedBy=multi-user.target

如上所示,在systemd的Timer单元文件中,它并不包含具体要执行的命令,而是指定了一个要执行的Service单元。比如,上面的mytimer.service单元,该Service单元文件中包含了具体要执行的任务,所以你要先创建Service单元文件。这里就不再展开。

该mytimer.tiemr文件要放在/etc/systemd/system目录中。

第二步、启动定时任务

同样的,执行sytemctl start mytimer.timer来启动定时任务。

如果要开机自启动,则可以执行systemctl enable mytimer.timer命令。

常见问题

#1 定时任务没有立即启动

执行systemctl start foo.timer以后,没有立即执行对应的单元,原因参考「

12月 15 14:30:41 localhost.localdomain systemd[1]: mdcheck_start.timer lacks value setting. Refusing. 12月 15 14:30:41 localhost.localdomain polkitd[835]: Registered Authentication Agent for unix-process:4824:164580 (system bus nam 12月 15 14:30:41 localhost.localdomain systemd[1]: Stopping MySQL Server... -- Subject: Unit mysqld.service has begun shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has begun shutting down. 12月 15 14:30:42 localhost.localdomain systemd[1]: Stopped MySQL Server. -- Subject: Unit mysqld.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has finished shutting down. 12月 15 14:30:42 localhost.localdomain systemd[1]: Starting MySQL Server... -- Subject: Unit mysqld.service has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has begun starting up. 12月 15 14:30:51 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE 12月 15 14:30:51 localhost.localdomain systemd[1]: Failed to start MySQL Server. -- Subject: Unit mysqld.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has failed. -- -- The result is failed. 12月 15 14:30:51 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 12月 15 14:30:51 localhost.localdomain systemd[1]: mysqld.service failed. 12月 15 14:30:51 localhost.localdomain polkitd[835]: Unregistered Authentication Agent for unix-process:4824:164580 (system bus n
最新发布
12-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值