如何獲取我機器上所有計劃的 cron 作業的列表?
我的系統管理員在我的機器上設置了一堆 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 配置目錄中創建符號連結來啟用計時器單元。)
也可以看看: