linux計劃任務管理
1. crond計劃任務概述
什么是計劃任務,計劃任務類似于我們平時生活中的鬧鐘。
在Linux
系統的計劃任務服務crond
可以滿足周期性執(zhí)行任務的需求。crond
進程每分鐘會處理一次計劃任務, 計劃任務主要是做一些周期性的任務目前最主要的用途是定時備份數據
Schedule one-time tasks with at. 一次性調度執(zhí)行 at
Schedule recurring jobs with cron. 循環(huán)調度執(zhí)行 cron
Schedule recurring system jobs. 所有計劃任務執(zhí)行中的輸出都會以郵件的方式發(fā)送給指定用戶, 除非重定向
//循環(huán)調度執(zhí)行cron 進程每分鐘會處理一次計劃任務
[root@wangqing ~]# systemctl status crond
[root@wangqing ~]# ps aux |grep crond
root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n
計劃任務分為以下兩種情況:
-
系統級別的定時任務:
清理系統緩存
臨時文件清理
系統信息采集
日志文件切割 -
用戶級別的定時任務:
定時同步互聯網時間
定時備份系統配置文件
定時備份數據庫文件
2. crond配置文件詳解
文件 說明
/etc/crontab //crontab配置文件
/etc/cron.deny //該文件中所列用戶不允許使用crontab命令
/var/spool/cron/* //所有用戶定時文件都存放此目錄,文件以用戶名命名
/var/log/cron //定時任務執(zhí)行后的日志文件,可用來回溯
3. crond計劃任務管理
crond任務管理
參數 含義 指定示例
[root@wangqing ~]# crontab --help
-e 編輯crontab文件內容 crontab -e
-l 查看crontab文件內容 crontab -l
-r 刪除crontab文件內容 crontab -r
-u 管理其他用戶的計劃任務 crontab -u wangqing -l
注意: crontab {-l -e}實際上就是在操作/var/spool/cron/username
//如何進行計劃任務的備份?
crond時間含義
# Example of job definition:
# .---------------- minute (0 - 59) //分鐘
# | .------------- hour (0 - 23) //小時
# | | .---------- day of month (1 - 31) //日期
# | | | .------- month (1 - 12) OR jan,feb,mar,apr //月份
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat //星期
# | | | | |
# * * * * * command to be executed
// * 表示任意的(分、時、日、月、周)時間都執(zhí)行
// - 表示一個時間范圍段, 如5-7點
// , 表示分隔時段, 如6,0,4表示周六、日、四
// */n 表示每隔n單位時間, 如*/10 每10分鐘
crond編寫示例
00 02 * * * command
00 02 1 * * command
00 02 14 2 * command
00 02 * * 7 command
00 02 * 6 5 command
00 02 14 * 7 command
00 02 14 2 7 command
00 02 * * * command
* 02 * * * command
* * * * * command
* * 14 2 * command
*/5 * * * * command
00 02 * 1,5,8 * command
00 02 1-8 * * command
crond書寫規(guī)范
//1.為計劃任務增加必要的注釋
[root@wangqing ~]# crontab -l
##time sync
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
//2.規(guī)范計劃任務執(zhí)行腳本存放的路徑/scripts/
[root@wangqing ~]# crontab -l
##backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/dev/null
//3.執(zhí)行shell腳本任務前加/bin/sh, 腳本結尾加&>/dev/null
//調試好后應屏蔽debug輸出信息,避免產生系統垃圾占用過多inode, 如需輸出日志, 可重定向至日志文件
[root@wangqing ~]# crontab -l
####backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/tmp/www_backup.log
4. crond配置編寫實例
[root@wangqing ~]# crontab -e
#每天凌晨切割nginx日志
05 00 * * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/log/nginx.log
#每天5點備份數據庫
00 05 * * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/log/mysql.log
//注意:
1.我們所有的crond服務是運行的程序。而crontab命令用戶用來設置定時規(guī)則的命令。
2.crond服務是企業(yè)生產工作中常用的重要服務,at很少使用,可以忽略。
3.幾乎每個服務器都會用到crond服務。
5. crond計劃任務調試
- 調整任務每分鐘執(zhí)行, 檢測是否是否正常, 有些任務不要頻繁執(zhí)行
- 調整系統時間然后在檢測任務, 生產不建議直接使用此方式
- 執(zhí)行腳本, 將腳本執(zhí)行輸出寫入指定日志文件, 觀察日志內容是否正常
- 注意一些任務命令帶來的問題echo “wangqing” >>/tmp/test.log &>/dev/null
- 命令使用絕對路徑, 防止無法找到命令導致定時任務執(zhí)行故障
- 查看/var/log/cron日志進行調試
建議: 將需要定期執(zhí)行的任務寫入腳本中, 建立/scripts目錄統一存放腳本, 腳本中命令必須使用絕對路徑,手動執(zhí)行腳本檢測輸出是否正常, 然后將腳本加入計劃任務測試, 測試后無問題將腳本輸出寫入對應的日志文件中即可。文章來源:http://www.zghlxwxcb.cn/news/detail-788216.html
計劃任務添加步驟:文章來源地址http://www.zghlxwxcb.cn/news/detail-788216.html
- 手動執(zhí)行保留執(zhí)行命令的正確結果
- 編寫腳本
- 腳本需要統一路徑/scripts
- 腳本開頭建議填寫注釋信息, 包括執(zhí)行時間、周期、任務
- 腳本內容復制執(zhí)行成功的命令至腳本文件中(減少每個環(huán)節(jié)出錯幾率)
- 腳本內容盡可能的優(yōu)化, 使用一些變量或使用簡單的判斷語句
- 腳本執(zhí)行的輸出信息不要隨意打印, 可以重定向至其他位置保留或丟入黑洞
- 執(zhí)行腳本
- 使用bash執(zhí)行, 防止腳本沒有增加執(zhí)行權限(/bin/bash)
- 執(zhí)行命令以及腳本成功后并復制該命令
- 編寫計劃任務
- 加上必要的注釋信息, 人、時間、任務
- 設定計劃任務執(zhí)行的周期
- 加入執(zhí)行腳本的命令
- 調試計劃任務
- 增加任務頻率測試、調整系統時間測試(不能用于生產)
h執(zhí)行, 防止腳本沒有增加執(zhí)行權限(/bin/bash) - 執(zhí)行命令以及腳本成功后并復制該命令
- 增加任務頻率測試、調整系統時間測試(不能用于生產)
- 編寫計劃任務
- 加上必要的注釋信息, 人、時間、任務
- 設定計劃任務執(zhí)行的周期
- 加入執(zhí)行腳本的命令
- 調試計劃任務
- 增加任務頻率測試、調整系統時間測試(不能用于生產)
- 檢查環(huán)境變量問題、檢查crond服務產生日志進行排查
到了這里,關于16.linux計劃任務管理的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!