Linux

如何獲取我機器上所有計劃的 cron 作業的列表?

  • October 3, 2020

我的系統管理員在我的機器上設置了一堆 cron 作業。我想確切地知道什麼時間安排了什麼。我怎樣才能得到那個清單?

根據您的 linux 系統的設置方式,您可以查看:

  • /var/spool/cron/*(使用者 crontabs)
  • /etc/crontab(系統範圍的 crontab)

此外,許多發行版具有:

  • /etc/cron.d/* 這些配置的語法與/etc/crontab
  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly,/etc/cron.monthly

這些只是包含執行檔的目錄,這些執行檔根據其目錄名稱每小時、每天、每週或每月執行一次。

最重要的是,您可以擁有 at 工作(檢查/var/spool/at/*)、anacron(/etc/anacrontab/var/spool/anacron/*)以及可能我忘記的其他人。

對於大多數 Cron(例如Vixie-Cron - Debian/Ubuntu 預設,Cronie - Fedora 預設,Solaris Cron …),您可以通過以下方式獲得目前使用者的計劃 cron 作業列表:

$ crontab -l

或通過其他使用者

# crontab -l -u juser

要獲取所有使用者的 crontab,您可以遍歷所有使用者並呼叫此命令。

或者,您可以查找假離線文件。通常,它們保存在 下/var/spool/cron,例如 vcron 的以下目錄

/var/spool/cron/crontabs

包含所有使用者的所有已配置 crontab - 除了 root 使用者,他還能夠通過系統範圍的 crontab 配置作業,該 crontab 位於

/etc/crontab

使用cronie(Fedora/CentOS 上的預設設置),還有一個.d用於系統 cron 作業的樣式配置目錄:

/etc/cron.d

(與往常一樣,該.d目錄簡化了維護屬於不同包的配置條目。)

為方便起見,大多數發行版還提供定期執行連結/儲存腳本的目錄,例如:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

這些腳本的及時執行通常通過run-parts系統 crontab 中的條目或通過anacron進行管理。

使用Systemd (例如在 Fedora、CentOS 7 上,…)可以通過計時器單元額外配置定期作業執行。啟用的系統計時器可以通過以下方式顯示:

$ systemctl list-timers

請注意,除了 root 之外的使用者可能還執行了配置了計時器的使用者 systemd 實例。例如,在 Fedora 上,預設情況下,為目前登錄的每個使用者啟動一個使用者 systemd 實例。可以通過以下方式辨識它們:

$ ps aux | grep 'systemd[ ]--user'

這些使用者計時器可以通過以下方式列出:

$ systemctl --user list-timers

發出list-timers命令的另一種方法是在通常的系統和使用者 systemd 配置目錄中搜尋計時器單元文件(模式*.timer:)和指向它們的符號連結:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
             -o -path '/home/*/.config/systemd/*' ')' \
     -name '*.timer'  2> /dev/null

(與普通服務單元一樣,通過在正確的 systemd 配置目錄中創建符號連結來啟用計時器單元。)

也可以看看:

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