linux之crontab定時執行命令走過的坑坑
Learn from one's mistakes!
經歷過坑坑,就會吃一塹長一智!錯誤使我們快速成長!
對crontab的基礎瞭解:
利用crontab可以在linux上面建立定時任務工作,該工作會被記錄到/var/spool/cron裡面去,該記錄已帳號為區分,不信你可以執行下面命令進去看下:
[root@ccw cron]# cd /var/spool/cron/
[root@ccw cron]# ls
root
crontab的執行定時任務的記錄會寫入到/var/log/cron這個檔案中,不信你可以用下面命令檢視
[root@ccw ~]# tail -f /var/log/cron
crontab的執行最低頻率是一分鐘,cron 會每分鐘去讀取一次 /etc/crontab 與 /var/spool/cron 裡面的資料內容
crontab的基本命令操作:
crontab命令主要有3個引數:
-e :編輯使用者的crontab。執行crontab -e命令後就可以在裡面編寫定時任務執行命令;例子:
執行 crontab -e
# 此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。
#分 時 日 月 周 任務的完整命令列
* * * * * /www/task.sh
-l :列出使用者的crontab的內容。
-r :刪除使用者的crontab的內容。
檢視crontab服務狀態:service crond status
手動啟動crontab服務:service crond start;一般不需要重新啟動,但有些系統比較另類,就需要了!
走坑一:linux系統時間不正常,定時任務死活執行不了
php測試指令碼執行沒錯,結果放到crontab裡面就不行了;查了N久,結果坑比,因為php測試指令碼有個時間對比,時間大於某個點(2016-12-13 9:00:00)就開始執行,由於系統時間沒跟網路時間同步是錯誤的,結果測試的時候一直小於時間點(2016-12-13 9:00:00)
跳坑方法,同步系統時間為網路時間,執行命令如下:
ntpdate cn.pool.ntp.org
hwclock -w
走坑二:環境變數引起,shell指令碼單獨執行ok,定時任務死活執行不了
寫了個備份mysql資料庫的指令碼shell,單獨執行沒任務問題;但是放到crontab執行就不行了
跳坑方法,在shell指令碼之前,執行下系統環境生效,如下:
#!/bin/sh
source /etc/profile
跳坑方法:對需要執行的指令碼執行命令:chmod +x xx.shell
走坑四:執行定時任務重複執行
跳坑方法:需要加鎖機制或者指令碼自己處理
使用linux flock 檔案鎖實現任務鎖定,解決衝突;當任務未執行完,則不會進行下一次任務執行。例子:
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/test.php'
flock命令詳解如下:
-s, --shared: 獲得一個共享鎖
-x, --exclusive: 獲得一個獨佔鎖
-u, --unlock: 移除一個鎖,通常是不需要的,指令碼執行完會自動丟棄鎖
-n, --nonblock: 如果沒有立即獲得鎖,直接失敗而不是等待
-w, --timeout: 如果沒有立即獲得鎖,等待指定時間
-o, --close: 在執行命令前關閉檔案的描述符號。用於如果命令產生子程式時會不受鎖的管控
-c, --command: 在shell中執行一個單獨的命令
-h, --help 顯示幫助
-V, --version: 顯示版本
相關文章
- Debian的定時執行命令Crontab
- Linux下的crontab定時執行任務命令詳解Linux
- Linux crontab定時執行任務 命令格式與詳細例子Linux
- Linux下用crontab定時執行PHP程式LinuxPHP
- Linux Crontab定時任務命令Linux
- linux設定crontab定時執行任務計劃Linux
- linux之 crontab 定時任務Linux
- 如何使用Linux的Crontab定時執行PHP指令碼的方法LinuxPHP指令碼
- CentOS Linux使用crontab執行定時任務詳解CentOSLinux
- Linux Crontab 定時任務 命令詳解Linux
- Linux 定時執行指令碼、命令Linux指令碼
- linux下定時執行任務的方法--crontabLinux
- Linux中crontab定時任務未執行錯誤總結Linux
- centOS crontab定時任務不執行的解決CentOS
- linux的定時任務crontabLinux
- crontab異常:shell下可以執行命令,執行crontab卻報錯
- [Linux常用命令之定時任務Crontab命令] 2018-10-12Linux
- 執行crontab最好的時間(轉)
- Crontab 定時任務命令詳解
- Linux crontab 定時任務Linux
- Linux 定時任務(crontab)Linux
- Linux - crontab(定時任務)Linux
- jmeter+nmon+crontab簡單的執行介面定時壓測JMeter
- Linux下的定時任務crontab設定Linux
- 通過Linux crontab 定期執行Oracle Procedure 指令碼LinuxOracle指令碼
- 在linux上定期執行命令、指令碼(cron,crontab,anacron)Linux指令碼
- Linux crontab 未執行排查Linux
- Linux crontab 沒有執行Linux
- 如何在linux使用crontab命令定時重啟伺服器Linux伺服器
- 命令定時重啟伺服器如何在linux使用crontab伺服器Linux
- Centos 7下利用crontab定時執行任務詳解CentOS
- centos7.2 利用crontab執行定時計劃任務CentOS
- 設定Linux關機時自動執行指定命令Linux
- Linux設定歷史命令顯示執行時間Linux
- Linux Crontab 定時任務[轉]Linux
- linux下crontab 不能執行的原因Linux
- crontab 定時
- linux定時任務的設定 crontab 配置指南Linux