crontab定時任務不生效問題解決

2021-10-11 04:23:52 字數 1521 閱讀 5243

導致crontab定時任務不生效問題可能的原因非常多

首先,排查一些可能會導致問題出現的簡單原因。

1.linux的時間與網際網路時間不一致

2.定時執行的.s**件無執行許可權

3.crontab程序未啟動

4.定時任務重定向日誌的路徑不存在

5.環境變數問題

6.沒有寫絕對路徑

tail -f /var/log/cron

dec 3 08:30:01test crond[21199]: (root) failed to open pam security session (拒絕許可權)

可以看到確實有報錯,但是沒有具體報錯的原因,只知道是pam驗證有問題。

通過查閱網上的文章將/etc/pam.d/crond中的session required pam_loginuid.sorequired改為sufficient可以解決。經測試,確實成功了,但是文章沒有說明原因,其他機器也是相同設定crontab卻沒有問題,說明這裡不是根本原因,這裡涉及pam模組認證的知識。

pam認證一般遵循這樣的順序:service(服務)→pam(配置檔案)→pam_*.so。pam認證首先要確定那一項服務,然後載入相應的pam的配置檔案(位於/etc/pam.d下)

pam驗證控制型別。

1、required驗證失敗時仍然繼續,但返回fail(使用者不會知道**失敗)。

2、requisite驗證失敗則立即結束整個驗證過程,返回fail。

3、sufficient驗證成功則立即返回,不再繼續,否則忽略結果並繼續。

4、optional無論驗證結果如何,均不會影響(通常用於session型別)。

可以看到這裡是通過改為sufficient驗證成功則立即返回,不再繼續來達到忽略報錯的目的,但是這樣做有一定的風險。

tail -f var/log/secure

dec 3 15:19:01 hdyy1 crond[25439]: pam_limits(crond:session): could not set limit for 'nofile': 不允許的操作

可以看到是nofile引數有問題,檢視該引數的配置檔案

cat vi /etc/security/limits.d/90-nproc.conf

* soft nproc 196605

root soft nproc unlimited

* soft nofile 19660500

* hard nofile 19660500

* soft core 512000

* hard core 512000

可以看到此時該引數值為19660500,超出了系統的最大可設定值,將引數改為196605後crontab定時任務生效。

celery定時任務不生效原因

最近有乙個新的任務需要在後台定時進行,於是使用了celery的定時器來實現,但是加了任務後,到設定的時間點時任務就是不會被觸發執行。定位了很多地方,最後發現是時間設定有問題。需求 早上7點 凌晨12點每30分鐘執行一次,於是我將任務定義成了這樣 sender.add periodic task cr...

Scheduled 定時任務不生效原因

經過一系列的排查發現,原來是測試過程中,測試先將服務啟動。然後再手動調整伺服器本地時間為22 59 00秒,等23點的時候,看定時任務是否執行。因為,spring的定時器是在服務啟動初始化的時候,便已經指定了下一次定時任務執行的時間,這時候手動去調整本地時間是沒有效果的。我們在檢視 中可以看到,sc...

crontab定時任務

今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...