crond任务调度(周期自动执行脚本或命令)
基本操作
- crond是服务名称
service crond start #启动服务
service crond stop #关闭服务
service crond restart #重启服务
service crond reload #重载配置
service crond status #查看状态
- crontab是计划任务表
crontab -u root -e #编辑crontab内的信息,可省略指定用户,默认当前用户
crontab -l #查看crontab内的信息
crontab -ir #删除crontab内的信息,i表示显示提示信息
系统的任务调度文件位置:/etc/crontab
编辑格式
格式如下(每个字段用空格隔开):
分钟(0到59) 小时(0到23) 天(1到31) 月(1到12) 周(0到6) 命令(注意指令权限问题)
时间设定段,可以含如下特殊字符:
1、星号(*):范围内所有值;
2、逗号(,):指定一个列表范围,如:“1,2,5”;
3、中杠(-):表示一个整数范围,如:“3-5”表示“3,4,5”;
4、斜杠(/):指定间隔频率,如:“0-23/2”表示每两小时执行一次,“*/10”如果用在分钟字段,表示每十分钟执行一次。
应用实例
#例子1:编写shell脚本(适用多条指令)
vim /home/my.sh
#增加以下指令
date >> /home/mycal
cal >> /home/mycal
#命令行模式:wq,保存退出
chmod u+x /home/my.sh
crontab -e
*/1 * * * * /home/my.sh #每隔分钟执行一次
#保存退出就运行了
#例子2:(适用单一指令)
crontab -e
0 2 * * * mysqldump -u root -ppassword testdb > /home/db.bak #每天2:00执行一次
#保存退出就运行了
at任务调度(定时自动执行脚本或命令)
基本操作
- at 的守护进程 atd 会以后台模式运行,60s检查一次作业队列。如果当前时间有满足条件的命令,此刻运行并从列表消除。
- 使用 at 时,要确保 atd 进程启用
ps -ef | grep atd #检测atd是否运行
- at命令选项
at 选项 时间 #基本格式,结束输入双击 CTRL+D
at -m #当定时任务被完成后,将给用户发送邮件,即使没有标准输出
at -I #atq的别名,查看任务列表
at -d #atrm的别名,删除还未执行的任务
at -v #显示任务将被执行的时间
at -c #打印任务的内容到标准输出
at -V #显示版本信息
at -q 队列 #使用指定队列
at -f 文件 #从指定文件读入任务而不是从标准输入读入
at -t 时间参数 #以时间参数的形式提交要运行的任务
atq #查看任务列表
atrm 编号 #删除还未执行的任务
编辑格式
常用格式如下:
模糊配置:midnight,noon,teatime ,today,tomorrow
12小时制:2am,4pm
具体时间:04:00 2021-10-30
相对计时:now + 5 minutes,now + 5 hours,5pm + 5 days,2am + 5 weeks
应用实例
ps -ef | grep atd #检测atd是否运行
at 5pm + 2 days
at 5pm tomorrow
at now + 2 minutes
#结束输入双击 CTRL+D,增加job 1,job 2,job 3
atq #查看任务列表
atrm 2 #删除job 2