# 2020-10-04 #「systemd」- Timer:由systemd提供的定时任务

    科技2022-07-13  136

    该文章概述了在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以后,没有立即执行对应的单元,原因参考「Systemd timer not starting its service unit」一文。

    解决办法 在foo.timer单元文件的[Unit]部分加入Requires=bar.service部分。

    参考文献

     

    K4NZ / Timer:由systemd提供的定时任务Systemd 定时器教程如何使用 systemd 中的定时器linux基础命令介绍十四:定时任务systemd.timer 中文手册Systemd 定时器教程如何使用 systemd 中的定时器systemd/Timers

     

    Processed: 0.015, SQL: 8