目录
2.编写一个配套的服务单元文件,可将其命名为boot_backup.service,保存在/etc/systemd/system目录下
3.编写一个定时器单元文件,可将其命名为 boot_backup.timer,保存在/etc/systemd/system目录中。
4.由于创建的是新的单元文件执行systemctl daemon-reload 命令重新装载单元文件
linux定时任务是什么
Linux定时任务是一种自动化工具,允许用户和系统管理员在预定的时间自动执行脚本、命令或程序。这些任务通常用于日常的系统维护、数据备份、监控和报告等
一.crontab服务
Crontab介绍:
Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
创建crontab定时器
1.创建shell脚本
2.编写定时任务
打开crontab编写定时任务
crontab -e
编入五个星号这里表示每分钟执行一次
crontab
是 Unix、Linux 和类 Unix 系统中的一个命令,用于设置周期性被执行的任务。crontab
文件中的每一行都代表一项任务,其格式如下:
* * * * * command-to-be-executed
- - - - -
| | | | |
| | | | +---- Day of the week (0 - 7) [Both 0 and 7 represent Sunday]
| | | +------ Month (1 - 12)
| | +-------- Day of the month (1 - 31)
| +---------- Hour (0 - 23)
+------------ Minute (0 - 59)
3.查看定时任务
crontab -l
4.启动服务和查看状态
systemctl start crond
systemctl status crond
5.使用tail查看日志
tail -f /tmp/yy.txt
tail -f /tmp/yy.txt
注意:此处为一分钟输出一次
这里你如果执行不成功的话,可能是你编的那个.sh没有执行权限
chmod +x yuan.sh
给它赋予执行权限
at命令
Linux at 命令是做一些定时操作,例如在0点启动某个服务。在windows系统中,windows提供了计划任务功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务。 通过’添加任务计划’的一步步引导,则可建立一个定时执行的任务
使用AT命令时,用户需要指定任务的执行时间,并输入要执行的命令或脚本。系统会将该任务添加到作业队列中,并在指定的时间自动执行。需要注意的是,AT命令只执行一次任务,不会重复执行。
at命令演示
一分钟后将在线用户写道user.txt文件中
at> who >> user.txt #CTRL+D退出
查看
输出时间到指定位置
查看
systemd服务(单调定时和实时定时)
systemd 定时器是一种替代传统 cron 的方法,用于安排定时任务。 systemd 定时器由两部分组成:一个.service 文件和一个.timer 文件。.service 文件定义了要执行的任务,而.timer 文件设定了何时执行这个任务。
定时器前言:
Timer定时器是一种用于定时执行任务的工具。它依赖时钟源进行计数,当达到预设值时触发事件。Timer定时器在多个领域广泛应用,如嵌入式系统、通信和自动化。它简单易用,但需注意任务执行方式可能是串行的。总体而言,Timer定时器是实现定时处理任务的有效手段。本文就会教大家如何使用timer定时器。
而定时器又分两种,分别为单调定时器与实时定时器,但本质并没有什么区别,只是单元文件不一样。
该处直接利用上述所自定义服务进行定时服务作为例子
单调定时:
1.编写任务脚本文件
vim /home/boot_backup
内容如下:
#!/bin/bash
echo `date` >> /tmp/mylog.txt
2.编写一个配套的服务单元文件,可将其命名为boot_backup.service,保存在/etc/systemd/system目录下
cd /etc/systemd/system
vim boot_backup.service
内容如下:
[Unit]
Description=Backup boot
[service]
Type=simple
ExecStart=/home/boot_backup
这里的ExecStart=为你创建的脚本文件路径 (我这里是 /home/boot_backup)
3.编写一个定时器单元文件,可将其命名为 boot_backup.timer,保存在/etc/systemd/system目录中。
内容如下:
vim boot_backup.timer
[Unit]
Description=Run boot backup weekly and on boot
[Timer]
OnUnitAcctiveSec=3s
AccuracySec=1us
[Install]
WantedBy=multi-user.target
这里的意思是三秒刷新一次
4.由于创建的是新的单元文件执行systemctl daemon-reload 命令重新装载单元文件
systemctl daemon-reload
5.分别执行以下命令是新建的定时器能开机启动,并启动定时器
systemctl enable boot_backup.timer
systemctl start boot_backup.timer
systemctl enable boot_backup.service
6.执行tail -f /tmp/mylog.txt
这里的/tmp/mylog.txt是开头我们开头脚本文件里写入的
实时定时:
实时定时器适合按照日历时间的计划任务管理,这里也以一个定期备份任务为例,要求
每周执行一次(如时间为周日 2 点),且上次未执行就立即执行。实现步骤与上述单调定时器
一样,只是将定时器单元文件(也就是后缀为.timer)修改即可。其内容符合实时定时器,修改如下:
[Unit]
Description--Run boot backup weekly
[Timer]
OnCalendarsun,02:00
Persistent--true
[Install]
WantedBy--multi-usectarget