Linux定时任务是一种自动化工具,允许用户和系统管理员在预定的时间自动执行脚本、命令或程序。这些任务通常用于日常的系统维护、数据备份、监控和报告等。本文主要介绍一下Linux下设置定时任务的常用二种方法。
1.使用cron设置定时任务
cron是Linux中最常用的定时任务调度器。它允许用户在指定的日期和时间运行脚本和命令。使用cron设置定时任务的二种方法
1)编辑用户的crontab文件
用于单个用户设置定时任务,打开用户的cronta文件,命令如下:
crontab -e
#分 时 日 月 周 命令
/1 代表没分钟 /*后面代表每多少
在编辑sysdate.sh里面的你想要添加的脚本内容
添加完成后,保存文件退出
2)在 /etc/crontab 文件中添加任务
对于系统级的任务,可以直接在/etc/crontab文件中添加,添加方法和用户的crontab文件中添加的方法差不多,但多了一个用户的字段,格式如下:
分 时 日 月 周 用户 命令
例如,
以root每分钟运行脚本,如下,
*/1 * * * * root /home/twl/sysdate.sh
2.使用systemd定时器设置定时任务
systemd 定时器是一种替代传统 cron 的方法,用于安排定时任务。systemd 定时器由两部分组成:一个 .service
文件和一个 .timer
文件。.service
文件定义了要执行的任务,而 .timer
文件设定了何时执行这个任务。
1)创建服务文件
创建一个.service文件来定义要执行的任务。例如,
创建 /etc/systemd/system/sysdate.service文件,内容如下,
[Unit]
Description=sysdate
[Service]
Type=simple
ExecStart=/bin/bash /home/twl/sysdate.sh#后面是你要执行的脚本的绝对路径
[Install]
WantedBy=multi-user.targe
脚本添加执行权限:
chmod +x /home/twl/sysdate.sh
2)创建.timer文件
.service文件创建完成后,还需要创建一个定时器文件(.timer),例如,
创建/etc/systemd/system/sysdate.timer文件,内容如下:
[Unit]Description= SysTimer
[Timer]
OnBootSec=10
OnUnitActiveSec=1
Unit=sysdate.service
[Install]
WantedBy=multi-user.target
这里,OnBootSec=10
表示在系统启动后的10秒开始运行定时器,OnUnitActiveSec=1
表示在syadate.service启动后每隔1秒再次运行。
现在,你需要启用并启动你的服务和定时器:
sudo systemctl daemon-reload
sudo systemctl enable syadate.timer
sudo systemctl start syadate.timer
daemon-reload命令会重新加载
systemd的配置文件,
enable命令会启用定时器,使其在下次启动时自动运行,
start`命令会立即启动定时器。
最后使用tail -f /path/to/you/logfile.txt命令来查看你的文件日志更新
注意:确保 .service
和 .timer
文件的命名一致并且放置在正确的目录中,通常是 /etc/systemd/system/
。
OnCalendar 配置使用 systemd 时间格式,可以设置为具体的时间点,也可以使用其它更复杂的时间规则。
Persistent=true
表示如果错过了某次执行(比如系统未运行),下次启动时将会尽快执行该任务。如有任务的需要定时执行需要精确到秒,在基于systemd的系统上,则可以通过计时器systemd.timer
来实现精确到秒的计划任务。
总结
总的来说crontab或者systemd都可以来设置系统定时任务,两者的功能都十分强大且方法简单,但是crontab的最小单位是分,systemd的最小单位是秒,两者在需求不一样的时候使用也不一样,具体的按照用户自己的需求来使用