本博客将会介绍两种实现timer的使用方式:
systemd定时器和cron工具的用法
第一种方式:使用cron设置定时任务
使用cron设置定时任务可以提高工作效率,减少人为错误,确保任务按时执行,并且方便监控和管理任务的执行情况
1、编辑用户的cronta文件
编辑用户的crontab文件通常是为了设置定时任务。Crontab是一个用于在特定时间间隔执行指定任务的工具。通过编辑用户的crontab文件,可以添加、修改或删除定时任务,以便定期执行特定的命令或脚本。
crontab -l # 查看当前用户的crontab文件内容
crontab -e # 编辑当前用户的crontab文件
在编辑用户的crontab文件时,可以按照特定的格式添加定时任务。每一行代表一个定时任务,格式一般为:
分钟 小时 日期 月份 星期 要执行的命令
第二种方式:使用systemd定时器
使用systemd定时器可以更好地管理系统中的定时任务,提高系统的效率和可靠
一、systemd可以使用定时器(Timers)来实现定期执行任务的功能。
要使用system的定时器,关键是要创建一个定时器单元文件和一个配套的服务单元文件,然后启动这些单元即可
1.创建单调定时器
单调定时器适合按照相对时间的计划任务管理,这里以每三秒执行写入hello world文件为例,要求开机后立即开始执行。
(1)编写一个定时器单元文件,将其命名为Hello.imer,保存在/etc/systemd/system 目录中。
内容如下:
[Unit]
Description=Run boot backup weekly and on boot [Timer]
OnBootSec=1s
OnUnitActiveSec=13s
[Install
WantedBy=multi-user.target
(2)编写一个配套的服务单元文件,可将其命名为boot_backup.service,保存在/etc/systemd /system目录中。内容如下:
[Unit]
Description=Backup boot [Service]
Type-simple
ExecStart=/usr/local/bin/Hello
这里注意,要将Type值设置为simple(也是默认值)。如果设置为oneshot, 该服务单元仅执行一次,之后就会退出,系统会关掉定时器。ExecStart定义要执行的任务。
此处的“ExecStart=”后面接任务脚本路径。
查看/etc/systemd/system下的两个Hello单元文件是否写好
(3)编写任务脚本文件,内容如下:
#!/usr/bin/bash
echo "Hello world" > /usr/local/bin/Hello (/path to Hello)
还应授予该脚本执行权限,可执行以下命令来实现:
chmod +x /usr/local/Hello
(4)由于创建新的单元文件,执行systemctl daemon-reload命令重新装载单元文件。
(5)分别执行以下命令使新建的定时器能开机启动,并启动定时器:
systemctl enable boot _backup.timer
systemctl start boot backup.timer
启动的是.timer文件,而不是.service文件。因为配套的service文件由timer文件启动。
可以执行以下命令列出定时器:
systemct list-timers