crontab 在linux下做定时任务的命令,
1. 基本格式
* * * * * cmd
第一个表示:分钟 1-59, 每分钟用 */1
第二个表示:小时 023
第三个表示:日期1-31
第四个表示:月份1-12
第五个表示:星期几0-6(0表示星期日)
几个说明例子
*/1 * * * * /path/xx.sh 每分钟执行一次脚本
0 3 * * 5-6 /path/xx.sh 每周五,周六早上3点执行一次脚本
可以使用在线的工具来模拟测试写的crontab任务
2. crontab 命令
NAME
crontab -- maintain crontab files for individual users (V3) SYNOPSIS
crontab [-u user] file
crontab [-u user] { -l | -r | -e }
基本用法:
crontab -h 查看帮助
crontab -l 查看当前定时任务列表
crontab -r 删除当前用户下的定时任务
crontab -e 进入编辑模式添加定时任务
crontab file 添加指定配置文件到定时任务(上面使用-e命令,会在/var/spool/cron/crontabs/user 下生成当前用户名的文件)
可以此命令预先脚本生成配置文件然后添加到定时任务;
示例,测试使用的ubuntu server 14
echo "0 3 * * 1-5 /path/xx.sh" >/var/spool/cron/crontabs/user
chmod /var/spool/cron/crontabs/user
crontab /var/spool/cron/crontabs/user
service crontab restart
3. 关于定时任务在某一个时间段随机执行一次
crontab 只能设定定时任务,不能直接设定随机(有知道直接的留言告诉我)
于是想到了一个 shell脚本随机,然后生成一个随机数,把这个随机数设定在定时任务的时间上,这样每次执行一次,随机一次时间,并重新设定定时任务;任务执行完成删除当前任务,随机一数,并重新配置任务
这样就达到了在某一个时间段随执行一次任务的想法。
如下脚本逻辑
#!/bin/bash #随机数,表示随机一个30以内的数
randNum=$(($RANDOM%30)) #user 表示当前登陆的用户
#path /var/spool/cron/crontabs
#生成crontab 任务配置文件
#表示在 每周一到周五早上3点到3点30之间,随机一个时间执行一次数据备份
echo $[randNum]" 3 * * 1-5 /path/backdb.sh" > /path/user #设置可执行权限
sudo chmod 777 /path/user
#使用crontab 命令添加到定时任务
sudo crontab /path/user
#重启服务
sudo service cron restart
参考:http://www.jb51.net/LINUXjishu/151805.html