Cron

為什麼 Linux 每天都在同一時間重新啟動?

  • July 21, 2021

我有一個氣象站,可以將數據發送到 Raspberry PI,其中執行一個 linux 伺服器,該伺服器獲取並儲存該數據。除了一件小事,一切都很好。Raspberry 通過 USB 電纜連接到氣象站室內顯示器。顯示器設置為在開機時再現聲音。所以基本上,每天凌晨 3 點我都會被這個聲音吵醒。然後我通過 ssh 連接到 Raspberry 並輸入這個命令來訪問日誌,看看當時發生了什麼:

nano /var/log/syslog

我發現了這一行:

Jul 21 02:53:01 weatherstation CRON[25991]: (root) CMD (sudo reboot)

這每天都在同一時間重複。所以,顯然我在 crontab 中有一些東西會不斷重啟我的樹莓派。顯然,如果設備重新啟動以冷卻片刻是可以的,但在凌晨 3 點這樣做是不行的,哈哈。

然後我打開:

nano /etc/crontab

我發現了這 4 行:

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

所以沒有明確的 sudo reboot,但我懷疑 /etc/cron.daily 中的某些東西正在執行該指令。所以我打開了文件夾 cron.daily 並在裡面找到了這些文件:

apache2  apt-compat  aptitude  bsdmainutils  cracklib-runtime  dpkg  exim4-base  logrotate  man-db  passwd

唯一讓我感興趣的文件是apt-compat. 在那裡我發現了這個:

# run daily job
exec /usr/lib/apt/apt.systemd.daily

問題是,這個文件對我來說太複雜了。我不知道裡面使用的程式語言,也不知道在技術上是做什麼的。所以我只想將重啟時間從凌晨 3 點轉移到上午 10 點,但我不明白怎麼做。

謝謝大家的關注。

從日誌消息中,我們看到它是通過 cron(而不是例如 systemd 計時器)執行的,並且命令是sudo reboot.

大多數係統提供的 cron 作業都在 內的文件中/etc/cron.d/,所以這是一個可以查看的地方。

在 root 使用者的個人 crontab 中也可以有一些東西。每個使用者的 crontab 應該使用 和 來查看和編輯crontab -lcrontab -e但它們通常駐留在/var/spool/cron/crontabs/某個目錄中。(這是 Debian 上的路徑,在其他系統上可能會有所不同。)通常,你不會在那裡看到系統提供的東西。

然後是/etc/cron.daily和類似的目錄,那裡的文件只是執行檔(通常是 shell 腳本),一些工具每天/每週/每月執行一次。儘管這些可能會提供不同類型的日誌條目,因為它們不直接從 cron 執行。

在緊要關頭,您總是可以退回到grep -re "sudo reboot" /etc/ /var/等等。

相關:/etc/crontab/etc/cron.d//var/spool/cron/crontabs/root 下的文件之間的區別?我想我也會在這裡連結:如何在 CentOs7 中查看所有 cron 記錄

引用自:https://unix.stackexchange.com/questions/659369