Systemd定时任务配置(详细过程)

前言:

systemd定时器是Linux系统中的一个功能,用于调度和管理定时任务。这些定时任务可以在未来的某个或多个时间点自动执行预设的任务,如定期收集数据、发送邮件或执行其他自动化操作。

systemd定时器主要有两种类型:单调定时器和实时定时器。单调定时器是从一个特定的时间(如系统启动或服务单元执行的开始时间)开始后经过一段时间触发。而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。

systemd定时器提供了一种灵活且强大的方式来管理定时任务,可以确保任务在特定的时间点或系统启动时执行。与cron和anacron相比,systemd定时器具有更高的灵活性和可用性,允许调度到分钟粒度,并且对所有用户都可用。

在使用systemd定时器时,通常需要创建两个配置文件:一个服务单元文件(.service)和一个定时器单元文件(.timer)。服务单元文件定义了要执行的任务,而定时器单元文件则定义了任务的调度表。通过这两个文件,可以方便地设置和管理定时任务。

总的来说,systemd定时器是Linux系统中用于管理和调度定时任务的一种功能强大的工具,可以满足各种复杂的任务调度需求。(本篇作者:阎婉欣,曹紫怡,秦仪娴,易彦君 (排名不分先后))

目录

一.创建单调定时器

二.创建实时定时器

三.扩展(crontab和at定时任务)

一.创建单调定时器

1.编写任务脚本

vim mytimer.sh

#!/bin/bash
echo `date` >> /tmp/mylog.txt

还应授予该脚本执行权限,可执行以下命令来实现:

chmond -x mytimer.sh

2.编写一个配套的服务单元文件,可将其命名为boot_backup.service,保存在/etc/systemd/system目录中。

vim boot_backup.service

[Unit]
Description=Backup boot

[Service]
Type=simple
ExecStart=/bin/bash /boot/mytimer.sh

这里要将 Type 值设置为 simple(也是默认值)。如果设置为oneshot,该服务单元仅执行
次,之后就会退出,系统会关掉定时器。ExecStart定义要执行的任务。

3.编写一个定时器单元文件,可将其命名为 boot backup.timer,保存在/etc/systemd/system
目录中,设置间隔时间为3秒。

vim boot_backup.timer
[Unit]
Description=Run boot backup weekly and on boot

[Timer]
OnUnitActiveSec=3s
AccuracySec=1us
Unit=boot_backup.service

[Install]
WantedBy=multi-user.target

4.由于创建新的单元文件,执行systemctldaemon-reload 命令重新装载单元文件。

systemctl daemon-reload

5.分别执行以下命令使新建的定时器能开机启动,并启动定时器:

systemctl enable boot_backup.timer

systemctl start boot_backup.timer

启动的是.timer 文件,而不是.service 文件。因为配套的service 文件由 timer 文件启动。

6.查看定时器状态

systemctl status boot_backup.timer

7.重新打开一个远程连接查看是否成功

tail -f /tmp/mylog.txt

 每次时间间隔为3秒,单调定时器配置完成。

二.创建实时定时器

实时定时器适合按照日历时间的计划任务管理, 这里也以一个定期备份任务为例,要求隔一分钟执行一次。实现步骤与上述单调定时器一样, 只是将定时器单元文件修改即可。其内容符合实时定时器, 修改如下:

[Unit]
Description=Run boot backup weekly

[Timer]
OnCalendar=*:0/1
AccuracySec=1us
Unit=boot_backup.service

[Install]
WantedBy=multi-user.target

重新打开一个远程连接查看是否定时成功

 每隔一分钟执行一次,实时定时器配置完成。

三.扩展(crontab和at定时任务)

crontab是一个用于设置周期性被执行的指令的工具,cron是其守护进程,crond在后台运行,每一分钟检查一次是否有预定的作业需要执行。crontab文件包含送交cron守护进程的一系列作业和指令,每个用户可以拥有自己的crontab文件。
具体来说,crontab允许用户为周期性执行的任务进行时间表的设置。用户可以设定计划任务,如每天几点几分执行某个命令或脚本,或者每周几的某个时间点执行某个命令或脚本等。这样,到了设定的时间,系统会自动执行相应的任务。
1.编辑Crontab文件:用户可以使用crontab -e命令来编辑自己的定时任务;
2.保存并退出编辑器;
3.执行任务;
crontab的格式为* * * * * command,分别代表分钟、小时、日、月、周和需要执行的命令。

at命令是Linux和Unix系统中的一个命令行工具,用于在指定时间执行一次性任务。它允许用户将命令或脚本安排在未来的某个时间运行,但只执行一次。at命令的工作原理是将用户的命令或脚本添加到系统的作业队列中,然后由atd守护进程在指定时间执行这些作业。

使用at命令的基本格式是:at [时间],其中时间可以是绝对时间(如“22:30”)或相对时间(如“now + 5 minutes”)。用户可以将要执行的命令或脚本作为at命令的参数输入,或者使用重定向将命令或脚本的内容传递给at命令。

除了基本的定时功能外,at命令还支持一些高级用法,如设置重复执行的任务。通过结合使用管道和awk等命令,用户可以实现更为复杂的定时任务调度。

需要注意的是,使用at命令需要确保系统的atd守护进程正在运行,并且用户具有执行at命令的权限。在某些系统中,出于安全考虑,可能默认禁用了at命令或限制了其使用权限。因此,在使用at命令之前,用户需要确保系统环境满足相关要求。

总的来说,at命令是一个简单而实用的工具,适用于需要在特定时间执行一次性任务的场景。然而,对于需要长期、重复执行的任务或需要处理任务间依赖关系的复杂场景,可能需要考虑使用更为强大和灵活的定时任务管理工具,如systemd定时器。

综上,是System定时任务所有相关内容,如果对您有所帮助请留下您的点赞、关注与收藏。当然,如果有不妥的地方或者是在注册时遇到了问题,欢迎您在评论区留言为我们提出宝贵的意见,我们也将积极地为您解答!

  • 84
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值