高效利用crontab:Linux定时任务调度实践
删除 crontab 中的危险参数
为了避免误操作导致危险的 crontab 命令执行,可以通过创建一个名为 safecron 的脚本,并在其中移除 crontab 命令中的 -r 参数。以下是具体步骤:
创建 safecron 脚本并添加执行权限:
2. 在 /etc/bashrc 文件中添加 safecron 的别名:
工作中应用示例
1. 每10分钟检查 MySQL 主从同步:
*/10 * * * * /bin/bash /usr/local/bin/monitor/mysql_check_slave.sh > /dev/null 2>&1
2. 每天重启 nsca 服务
* * */1 * * /etc/init.d/nsca restart
3. 每天的20时50分删除指定目录下30天前的文件:
50 20 * * * find /var/log/rsyncxk015log/ -type f -ctime +30 -delete /dev/null 2>&1
4. 每月的1、11、21、31日的6点30分执行一次 ls 命令:
30 6 */10 * * ls
5. 周一到周五每天的16点0分执行一次自定义的 svn 日备份脚本:
0 16 * * 1-5 /bin/bash /usr/local/bin/shell/svn_hotcopy.sh day > /dev/null 2>&1
6. 每月1号17点0分执行一次自定义的 svn 月备份脚本:
0 17 1 * * /bin/bash /usr/local/bin/shell/svn_hotcopy.sh month > /dev/null 2>&1
7. 每隔两周,在周6的22点30分执行一次mysql完全备份,注意%在crontab下要转义
30 22 * * 6 [ $(/usr/bin/expr $(/bin/date +\%W) % 2) -eq 1 ] && /usr/local/bin/backup_shell/mysql_fullback.sh
8. 每个月,在最后一周的周6的22点30分执行一次mysql完全备份,注意%在crontab下要转义
30 22 * * 6 [ $(date -d "+7 days" +\%d) -gt 23 ] && /usr/local/bin/backup_shell/mysql_fullback.sh30 22 * * 6 [ $(date -d "+7 days" +\%d) -lt 14 ] && /usr/local/bin/cron_mysql_feeds_db.sh &> /tmp/cron_mysql_feeds_db.log
9. 每个月,在第一周的周6的22点30分执行一次mysql完全备份
30 22 * * 6 [ $(date -d "+7 days" +\%d) -lt 14 ] && /usr/local/bin/cron_mysql_feeds_db.sh &> /tmp/cron_mysql_feeds_db.log
10. 一个随机时间执行脚本 如签到 . 下面例子依赖atd 服务
0 7 * * * source /etc/profile && /bin/echo '/usr/local/bin/casperjs /root/51ca.js' | at now + $(shuf -i 2-59 -n 1) min