目录
定时任务
定时(计划)任务:未来的某个时点执行一次任务或者是周期性的运行某个任务,任务执行结束后,会通过邮件方式通知用户
分类:
定点执行一次某任务:at,batch
周期性的运行某任务:crontab
用户及系统定时任务
crond进程定期(每分钟)检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。用户在cron表(也被称为crontab文件)指定了定时任务,crontab也就是我们常见的定时任务设置命令。Linux下的任务调度分为
两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件就是系统任务调度的配置文件。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定
制自己的计划任务。所有用户定义的crontab文件都被保存在Nar/spool/cron目录中。
用户
/var/spool/cron/:用户级任务
系统
/etc/crontab:系统计划任务的配置文件
crond:进程(守护进程,一直存在)
centos6:scrvice crond status(查看状态)
centos7:systemctl status crond(查看状态)
每分钟检查是否有要执行的任务,如果有,则自动执行该任务
mail命令
[root@localhost tmp]# yum install mailx -y 安装mail命令
mail -s 主题 收件人地址 Ctrl+d结束
mail -s 主题 收件人地址 < mailfile
echo “文件内容” | mail -s 主题 收件人地址
at命令
[root@localhost tmp]# yum install at -y 安装at命令
HH:MM 10:00
midnight noon teatime
12pm 10am
10:00 2022-4-18
now + 5 minutes
10am | 3 days
today tomorrow
启动atd:systemctl start atd
atq 查看待处理的任务
atrm 任务序号,删除任务
crond命令
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
时间表示**(分 时 日 月 周)
**
minute 0-59
hour 0-23
day 1-31
mouth 1-12 (也可用英文表示jan)
week 0-6 1-7 (也可用英文表示sun)
1、特定值
2、* 代表 每…(每小时,每月…)
3、离散值 #,#,#,#
4、连续的值 #-#
5、指定步长 /#每隔#(要能整除)
eg:每年的4月17日下午4点01分执行echo 111
1 16 17 4 * echo 111
示例1、每月1号4点重启网络服务 0 4 1 * *
示例2、每隔1小时,重启网络服务 * */1 * * *
示例3、每天晚上10点打包压缩/etc/目录 0 10 * * *
示例4、每周一的9点到17点的第15分钟和45分钟输出hello world 15,45 9-17 * * 1
示例5、每分钟执行一次 */15 * * * *
示例6、每周1到周五的9点到17点整点重启网络服务 0 9-17 * * mon-fir
示例7、每隔三天的早上8点整执行重启网络服务 0 8 */3 * *
crontab
-e:编辑任务
-l:列出所有任务
-r:移除所有任务
-i:交互 与-r搭配使用 移除时有提示
-u:指定用户执行
commond > /dev/null
commond &> /dev/null
如果commond带有%,需要对其进行转义
commond使用脚本代替
定时任务的制定规范
1、定时任务执行的脚本,应当存放在指定位置,便于维护和定期备份
2、添加定时任务前应当做好备注
3、执行脚本前,加上/bin/bash /bin/sh,脚本应该指定绝对路径
4、定时任务书写时需要尽量避免标准输出和标准错误输出 结尾加上 &>/dev/null 2>&1
5、能用简单命令完成的也要写在脚本里
6、指定用户执行定时任务