是否有一个命令或现有的脚本可以让我一次查看*NIX系统的所有调度cron作业?我希望它包括所有用户crontab,以及/etc/crontab,以及/etc/cron.d.中的任何内容如果能在/etc/ crontable中看到run-parts运行的特定命令,那就太好了。
理想情况下,我希望输出以良好的列形式,并以某种有意义的方式排序。
然后,我可以合并来自多个服务器的这些清单,以查看总体的“事件时间表”。
我本来打算自己写一个这样的脚本,但如果有人已经费心了……
是否有一个命令或现有的脚本可以让我一次查看*NIX系统的所有调度cron作业?我希望它包括所有用户crontab,以及/etc/crontab,以及/etc/cron.d.中的任何内容如果能在/etc/ crontable中看到run-parts运行的特定命令,那就太好了。
理想情况下,我希望输出以良好的列形式,并以某种有意义的方式排序。
然后,我可以合并来自多个服务器的这些清单,以查看总体的“事件时间表”。
我本来打算自己写一个这样的脚本,但如果有人已经费心了……
当前回答
下面剥离了不使用crontab的用户的注释、空行和错误。剩下的就是一个清晰的用户列表和他们的工作。
注意,在第二行中使用了sudo。如果你已经是根用户了,移除它。
for USER in $(cut -f1 -d: /etc/passwd); do \
USERTAB="$(sudo crontab -u "$USER" -l 2>&1)"; \
FILTERED="$(echo "$USERTAB"| grep -vE '^#|^$|no crontab for|cannot use this program')"; \
if ! test -z "$FILTERED"; then \
echo "# ------ $(tput bold)$USER$(tput sgr0) ------"; \
echo "$FILTERED"; \
echo ""; \
fi; \
done
示例输出:
# ------ root ------
0 */6 * * * /usr/local/bin/disk-space-notify.sh
45 3 * * * /opt/mysql-backups/mysql-backups.sh
5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade
# ------ sammy ------
55 * * * * wget -O - -q -t 1 https://www.example.com/cron.php > /dev/null
我在Ubuntu(12到16)和Red Hat(5到7)上使用这个。
其他回答
这取决于您的cron版本。在FreeBSD上使用Vixie cron,我可以做这样的事情:
(cd /var/cron/tabs && grep -vH ^# *)
如果我想要更多的制表符分隔,我可能会这样做:
(cd /var/cron/tabs && grep -vH ^# * | sed "s/:/ /")
这是sed替换部分中的一个文字制表符。
在/etc/passwd中遍历用户并为每个用户执行crontab -l -u $user可能更独立于系统。
如果您使用NIS检查集群,查看用户是否有crontab条目的唯一方法是根据Matt的回答/var/spool/ crontab .
grep -v "#" -R /var/spool/cron/tabs
以@Kyle为基础
for user in $(tail -n +11 /etc/passwd | cut -f1 -d:); do echo $user; crontab -u $user -l; done
为了避免/etc/passwd顶部的注释,
在macosx上
for user in $(dscl . -list /users | cut -f1 -d:); do echo $user; crontab -u $user -l; done
getent passwd | cut -d: -f1 | perl -e'while(<>){chomp;$l = `crontab -u $_ -l 2>/dev/null`;print "$_\n$l\n" if $l}'
这避免了直接与passwd混淆,跳过没有cron条目的用户,对于那些有cron条目的用户,它会打印出用户名以及crontab。
主要是把这个放在这里,虽然这样我可以找到它,以防我需要再次搜索它。
向yukondude表示歉意和感谢。
我已经试着总结了时间设置以便于阅读,尽管这不是一个完美的工作,而且我不会碰“每周五”或“只有周一”的东西。
这是版本10 -现在:
runs much much faster has optional progress characters so you could improve the speed further. uses a divider line to separate header and output. outputs in a compact format when all timing intervals uencountered can be summarised. Accepts Jan...Dec descriptors for months-of-the-year Accepts Mon...Sun descriptors for days-of-the-week tries to handle debian-style dummying-up of anacron when it is missing tries to deal with crontab lines which run a file after pre-testing executability using "[ -x ... ]" tries to deal with crontab lines which run a file after pre-testing executability using "command -v" allows the use of interval spans and lists. supports run-parts usage in user-specific /var/spool crontab files.
我现在在这里发布完整的脚本。
https://gist.github.com/myshkin-uk/d667116d3e2d689f23f18f6cd3c71107