1. 程式人生 > >記一次LINUX-CRONTAB失敗的排查案例

記一次LINUX-CRONTAB失敗的排查案例

一段時間 執行 linu linux-c 權限 排查 左右 完成 進行

在LINUX中,使用crontab來做計劃任務是一件很常見的事。本文記錄一次排查過程

故障描述

在crontab 設置計劃任務,每天淩晨3點執行腳本

conrtab(3點)tomcat用戶--執行腳本(推送備文件-->目標服務器||同時將過程寫入LOG記錄)

然而在第二天例常檢查後,發現計劃任務沒有達到預期效果

排查步驟

首先檢查計劃任務是否執行

/var/log/cron如下:

Jan 30 03:00:01 z00w00-host CROND[2375]: (tomcat) CMD (/usr/bin/run-parts /usr/share/tomcat/tomcat_backup)
Jan 30 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[2375]: starting autosyrc.sh
Jan 30 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[2395]: finished autosyrc.sh

主機名我進行了加工,其他基本保持不變

通過日誌可以看出在淩晨3點的時候計劃任務確實忠實的開始了,但是僅僅1秒鐘就結束了任務,這顯然是不正常的,因為是推送文件,按照經驗判斷,至少需要一段時間。

Feb  1 03:00:01 z00w00-host CROND[20514]: (tomcat) CMD (/usr/bin/run-parts /usr/share/tomcat/tomcat_backup)
Feb  1 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[20514]: starting autosyrc.sh
Feb  1 03:04:02 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[20615]: finished autosyrc.sh

以上是我解決問題後在今天抓取的日誌,可以看到正常腳本執行推送文件應該是在4分鐘左右。

是腳本邏輯問題嗎?

實際上腳本編寫完成後,我就在交互式終端中執行了一下,是正常運行的。 另外又檢查了一下腳本,這個腳本是在我原來的腳本基礎上改的,只是修改了一些變量,邏輯本身沒有什麽太大問題。

是執行權限的問題

還記得我開頭說的嗎?腳本進行推送文件,同時將過程寫入日誌。問題就出在這裏

原來,我修改腳本後,為了當時驗證效果,將原日誌文件rsync.log 進行了重命名 在人工執行的時候rsync.log 被重建了。由於我是root用戶執行,所以rsync.log的屬主變成了root,而計劃任務中,我的執行用戶是tomcat。由於文件屬主發生變化,tomcat無法寫入root屬主的rsync.log,導致腳本在計劃任務中秒執行但實際上沒有按預期來達到目標。

排查中也發現日誌文件時間沒有任何變化。

解決的辦法

分析後查看文件屬主,果然如此。修改屬主後,修改計劃任務,驗證執行,故障解除。

修改前的屬主

-rwxr-xr-x 1 tomcat tomcat 1.5K Jan 29 14:55 autosyrc.sh
-rw-r--r-- 1 root root 164K Jan  31 14:55 rsync.log

修改後的屬主

-rwxr-xr-x 1 tomcat tomcat 1.5K Jan 29 14:55 autosyrc.sh
-rw-r--r-- 1 tomcat tomcat 164K Feb  1 03:04 rsync.log

問題解決,打完收工

記一次LINUX-CRONTAB失敗的排查案例