linux计划任务

crontab

crontab: (cron table)周期性执行任务的工具
系统服务CROND:每分钟都会从配置文件刷新定时任务

# 检查crontab工具是否安装
crontab -l

# 查看crond服务是否启动
service crond status

# 若未安装,则(centos7最小化安装时,已自带cron)
yum install vixie-cron
yum install crontabs

示例:每分钟执行

# 逻辑计划任务列表
crontab -e
# 在最后添加下面一行
# */1 * * * * date >> /tmp/date.txt

crontab配置格式

* * * * * command
分钟 小时 日期 月份 星期(0或7表示星期天) 命令

* 表示任何时间都匹配
A,B,C 表示A或B或C时间执行命令
A-B 表示A到B之间执行命令
*/A 表示每A分钟(小时等)执行一次命令

# 每晚的21:30重启apahce
30 21 * * * service httpd restart
# 每月1、10、22日的4:45重启apache
45 4 1,10,22 * * service htppd restart
# 每月1到10日的4:45重启apacche
45 4 1-10 * * service httpd restart

# 每隔两分钟重启apache
*/2 * * * * service httpd restart
# 在每奇数分钟重启apache
1-59/2 * * * * service httpd restart

晚上11点到早上7点这间,每隔一小时重启apache
0 23-7/1 * * * service httpd restart

# 每天18:00到23:00之间每隔30分钟重启apache
0,30 18-23 * * * service httpd restart
0-59/30 18-23 * * * service httpd restart

crontab执行日志

# 计划任务执行日志文件,会每天自动备份
ll /var/log/cron*
# 查看任务执行日志
tail -f /var/log/cron

实cron际执行任务cat /var/spool/cron/用户名

crontab 常见错误

# 1. 环境变量
# 环境变量在计划任务命令中,是不起作用的

# 2. 第三和第五个域之间执行的是 “或” 操作,即日期或星期
# 3. 命令行中的 % 需要加上 

# 四月的第一个星期日早晨1:59分运行
# 错误写法:59 1 1-7 4 0 /root/a.sh
59 1 1-7 4 * test `date +\%w` -eq 0 && a.sh

# 4. 分钟设置误用  
# 两个小时运行一次,注意第一个为具体分钟数
0 */2 * * * date

秒级定时的实现

crontab中最小只能设置到每分钟执行一个命令
通过sleep命令的配合,可以实现秒级的计划任务

crontab -e
*/1 * * * * date >> /tmp/date.log
*/1 * * * * sleep 30s;date >> /tmp/date.log
原文地址:https://www.cnblogs.com/chencye/p/6235303.html