crontab定时任务的设置
crontab就是设置定时任务(反复执行),在需要定时执行或检查的程序,工作中经常使用,比如对mysql数据库备份,大多数时候的使用都是配合shell脚本,用crontab定时调用shell脚本来执行
crontab -e
编辑crontab定时任务
crontab -l
查询crontab任务
crontab -r
删除当前用户所有的crontab任务
service crond restart
重启任务调度
每小时的每分钟都执行一次ls -l /etc/ > /tmp/to.txt
先crontab -e 再写入*/1 * * * * ls -l /etc/ > /tmp/to.txt(注意星号之间有空格)
分钟 -- 小时 -- 天数 -- 月份 -- 星期几
crontab特殊符号的说明
*
代表任何时间,比如第一个*就代表一个小时内的每分钟都执行一次
,
代表不连续的时间,可以用逗号分隔开,如0 8,12,16 * * * 命令
就是指在每天的8点0分,12点0分,16点0分都执行一次命令
-
代表连续的时间范围,如0 5 * * 1-6 命令
就是每周一到周六的5点0分执行命令
*/n
代表每隔多久执行一次,如*/5 * * * * 命令
就是每隔5分钟执行一次命令
crontab与shell脚本的实用案例
每隔1分钟,将当前日期和日历都追加到/home/mycal中
#首先编写一个shell脚本
vim /home/my.sh
cal>>/home/mycal
date>>/home/mycal
#保存退出,再给shell脚本赋予执行权限
chmod u+x /home/my.sh
crontab -e
*/1 * * * * /home/my.sh
at定时任务
at定时任务是一次性的定时计划任务,只执行一次,at有一个后台程序atd
默认情况下,atd会每60秒检查任务队列,有任务时,会检查任务运行时间,如果时间与at定时任务匹配则执行
在使用at命令时,要保证atd进程的启动,可以使用ps -ef|grep atd
检测atd是否运行
同时atp
命令可以查看系统中有没有正在执行的at任务
删除at定时任务atrm
atrm 编号
先用atp查看编号,再用atrm来删除
at命令格式:
at 选项 时间
在命令写完之后按两次Ctrl+d结束at命令的输入
在2023.1.5的05:00执行任务
在2分钟之后执行任务
删除2号任务