是否有一个命令或现有的脚本可以让我一次查看*NIX系统的所有调度cron作业?我希望它包括所有用户crontab,以及/etc/crontab,以及/etc/cron.d.中的任何内容如果能在/etc/ crontable中看到run-parts运行的特定命令,那就太好了。

理想情况下,我希望输出以良好的列形式,并以某种有意义的方式排序。

然后,我可以合并来自多个服务器的这些清单,以查看总体的“事件时间表”。

我本来打算自己写一个这样的脚本,但如果有人已经费心了……


当前回答

你可以写所有用户列表:

sudo crontab -u userName -l

,

你也可以去

cd /etc/cron.daily/
ls -l
cat filename

这个文件将列出时间表

cd /etc/cron.d/
ls -l
cat filename

其他回答

我喜欢上面简单的一行字回答:

$(cut -f1 -d: /etc/passwd);执行crontab -u $user -l;完成

但是Solaris没有-u标志,也不会打印正在检查的用户,你可以这样修改:

for user in $(cut -f1 -d: /etc/passwd); do echo User:$user; crontab -l $user 2>&1 | grep -v crontab; done

当一个帐户不允许使用cron等时,您将得到一个用户列表,其中没有crontab抛出的错误。注意,在Solaris中,角色也可以在/etc/passwd中(参见/etc/user_attr)。

我在下面做了一行脚本,它为我列出所有用户的所有cron作业。

cat /etc/passwd |awk -F ':' '{print $1}'|while read a;do crontab -l -u ${a} ; done

如果您使用NIS检查集群,查看用户是否有crontab条目的唯一方法是根据Matt的回答/var/spool/ crontab .

grep -v "#" -R  /var/spool/cron/tabs
for user in $(cut -f1 -d: /etc/passwd); 
do 
    echo $user; crontab -u $user -l; 
done

从ROOT用户获取列表。

for user in $(cut -f1 -d: /etc/passwd); do echo $user; sudo crontab -u $user -l; done