高效利用crontab:Linux定時任務(wù)調(diào)度實踐
刪除 crontab 中的危險參數(shù)
為了避免誤操作導(dǎo)致危險的 crontab 命令執(zhí)行,可以通過創(chuàng)建一個名為 safecron 的腳本,并在其中移除 crontab 命令中的 -r 參數(shù)。以下是具體步驟:
創(chuàng)建 safecron 腳本并添加執(zhí)行權(quán)限:
2. 在 /etc/bashrc 文件中添加 safecron 的別名:
工作中應(yīng)用示例
1. 每10分鐘檢查 MySQL 主從同步:
*/10?*?*?*?*?/bin/bash?/usr/local/bin/monitor/mysql_check_slave.sh?>?/dev/null?2>&1
2. 每天重啟 nsca 服務(wù)
*?*?*/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分執(zhí)行一次 ls 命令:
30?6?*/10?*?*?ls
5. 周一到周五每天的16點0分執(zhí)行一次自定義的 svn 日備份腳本:
0?16?*?*?1-5????/bin/bash?/usr/local/bin/shell/svn_hotcopy.sh?day??>?/dev/null?2>&1
6. 每月1號17點0分執(zhí)行一次自定義的 svn 月備份腳本:
0?17?1?*?*?? /bin/bash?/usr/local/bin/shell/svn_hotcopy.sh?month?>?/dev/null?2>&1
7.??每隔兩周,在周6的22點30分執(zhí)行一次mysql完全備份,注意%在crontab下要轉(zhuǎn)義
30 22 * * 6 [ $(/usr/bin/expr $(/bin/date +\%W) % 2) -eq 1 ] && /usr/local/bin/backup_shell/mysql_fullback.sh
8.??每個月,在最后一周的周6的22點30分執(zhí)行一次mysql完全備份,注意%在crontab下要轉(zhuǎn)義
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分執(zhí)行一次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.??一個隨機時間執(zhí)行腳本 如簽到 . 下面例子依賴atd 服務(wù)
0 7 * * * source /etc/profile && /bin/echo '/usr/local/bin/casperjs /root/51ca.js' | at now + $(shuf -i 2-59 -n 1) min