cron定時器

使用crontab命令的方式執行定時器

所有用戶都可以使用,普通用戶也只能為自己設置計劃任務。然后自動寫入/var/spool/cron/usename,使用命令增刪改后自動重啟服務,會有語法檢查

使用

# 修改crontab文件,如果不存在則創建
crontab -e 
# 顯示crontab文件
crontab -l
# 刪除文件
crontab -r
# 刪除前提醒用戶

參數說明

[minute] [hour] [day-of-month] [month] [day-of-week] [full-path-to-shell-script]

參數 參數值 備注
minute 0-59
hour 0-23
day-of-month 0-31
month 1-12 1是一月
day-of-week 0-7 周日可以是0或者7

語法說明

標識 說明 備注
* 代表所有的取值范圍內的數字 就是所有的意思
/ 代表每一定時間間隔 */10 * * * * 表示每10分執行一次
- 代表區間范圍,是閉區間
, 分散的數字 可以不連續
  • 0-23/2 * * * 表示 在0~23點內每2小時執行一次

log

日志在/var/log/cron

Crontab 示例

  1. 在 12:01 a.m 運行,即每天凌晨過一分鐘。這是一個恰當的進行備份的時間,因為此時系統負載不大。
1 0 * * * /root/bin/backup.sh
  1. 每個工作日(Mon – Fri) 11:59 p.m 都進行備份作業。
59 11 * * 1,2,3,4,5 echo "日志記錄" >> /tmp/log.txt

下面例子與上面的例子效果一樣:

59 11 * * 1-5 echo "日志記錄" >> /tmp/log.txt
  1. 每5分鐘運行一次命令
*/5 * * * * /root/bin/check-status.sh
  1. 每個月的第一天 1:10 p.m 運行
10 13 1 * * /root/bin/full-backup.sh
  1. 每個工作日 11 p.m 運行。
0 23 * * 1-5 /root/bin/incremental-backup.sh

修改/etc/crontab方法執行定時器

只有root用戶能用,這種方法更加方便與直接直接給其他用戶設置計劃任務,而且還可以指定執行shell等等,推薦這種方法。需要手動重啟,沒有語法檢查

crontab -e修改語法格式不一樣, 多一個 user 指定

# centOS 7

$ systemctl restart crond.service

執行crontab時遇到的問題

  1. 執行shell腳本,定時器執行了,但是腳本不生效

原因:環境變量問題,我們在登錄狀態執行腳本可以成功的原因是環境變量已經加載,系統登陸時會自動加載各種環境配置文件,所以我們要手動在.sh文件的#! /bin/bash下添加

#! /bin/bash
source /etc/profile
source ~/.bash_profile

# 執行的命令...
  1. 里面涉及路徑的最好都是絕對路徑
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容