NIXシステムのスケジュールされたcronジョブを一度に見ることができるコマンドまたは既存のスクリプトはありますか?私は、/etc/crontab
や/etc/cron.d
にあるものと同様に、すべてのユーザーcrontabを含むようにしたいと思います。また、/etc/crontab
にあるrun-parts
によって実行された特定のコマンドを見ることができればいいなと思います。
理想的には、出力をきれいなカラム形式にして、意味のある方法で並べたいものです。
そうすれば、複数のサーバーからこれらのリストをマージして、全体的な "schedule of events." を表示することができます;
このようなスクリプトを自分で書こうと思ったのですが、もし誰かがすでにそのようなことを行っていたら...。
rootで実行する必要がありますが:
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
は各ユーザーのcrontabをリストアップしてループします。 クロンタブはそれぞれのユーザーが所有しているので、そのユーザーかrootでなければ他のユーザーのクロンタブを見ることはできません。
**を編集してください。
もし、あるクーロンタブがどのユーザーのものかを知りたい場合は、echo $user
を使用してください。
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
結局、スクリプトを書くことにしました(bashスクリプトの細かい点を独学で勉強しようとしているので、Perlのようなものをここで見かけないのはそのためです)。単純なものではありませんが、私が必要としていることのほとんどを実現しています。Kyle's suggestion for looking up individual users' crontab, but also dealing with /etc/crontab
(including the scripts launched by run-parts
in /etc/cron.hourly
, /etc/cron.daily
, etc.) and the jobs in the /etc/cron.d
directory.それらをすべて取り込んで、以下のような表示に統合します:
mi h d m w user command
09,39 * * * * root [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
47 */8 * * * root rsync -axE --delete --ignore-errors / /mirror/ >/dev/null
17 1 * * * root /etc/cron.daily/apt
17 1 * * * root /etc/cron.daily/aptitude
17 1 * * * root /etc/cron.daily/find
17 1 * * * root /etc/cron.daily/logrotate
17 1 * * * root /etc/cron.daily/man-db
17 1 * * * root /etc/cron.daily/ntp
17 1 * * * root /etc/cron.daily/standard
17 1 * * * root /etc/cron.daily/sysklogd
27 2 * * 7 root /etc/cron.weekly/man-db
27 2 * * 7 root /etc/cron.weekly/sysklogd
13 3 * * * archiver /usr/local/bin/offsite-backup 2>&1
32 3 1 * * root /etc/cron.monthly/standard
36 4 * * * yukon /home/yukon/bin/do-daily-stuff
5 5 * * * archiver /usr/local/bin/update-logs >/dev/null
これはユーザーを表示し、1日のスケジュールを見ることができるように、時間と分単位でソートしていることに注意してください。
今のところ、Ubuntu, Debian, Red Hat ASでテストしています。