存储在 /etc/cron.d 中的 cron 作业可以工作,但在 RHEL4 中不能使用 crontab -l 显示

存储在 /etc/cron.d 中的 cron 作业可以工作,但在 RHEL4 中不能使用 crontab -l 显示

我以为我理解 cron 但看来我不理解。

我在 Red Hat Enterprise Linux v.4 上使用 cron

我们通过将 cron 作业存储在 /etc/cron.d 中来组织它们。它们都归 root 所有。 (在 .cron 文件中的 cron 规范中有根)

当存储在那里时,如果编码正确,作业就会运行。

然而,即使以 root 身份登录

crontab -l

不会在 /etc/cron.d 中列出作业,即使它们实际上正在运行。

我不明白什么?我对此所做的每次网络搜索都告诉我这crontab -l是要运行的命令。但它并未列出正在运行的所有作业。

更新: 由于不清楚,我的问题确实是

什么命令可以让您查看计划为给定用户运行的所有 cron 作业?

您可以找到许多资料来源说crontab -l是该命令,但事实显然并非如此。

答案1

如中所述手动的

crontab -l

列出当前用户的 crontab

/var/spool/cron/root

如果你碰巧是root。

crontab -u other -l

对于其他一些用户。编辑 crontab 为

crontab -e

格式为

#.---------------- minute (0 - 59)
#|      .------------- hour (0 - 23)
#|      |       .---------- day of month (1 - 31)
#|      |       |       .------- month (1 - 12) OR jan,feb,mar,apr ...
#|      |       |       |       .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat
#|      |       |       |       |
#*      *       *       *       *       the command to be executed

0       */2     *       *       *       /every2h.sh

除此之外还有

find  /etc/cron* -type f

不建议使用它,因为它用于分发 cron 作业。所有这些文件都以 root 身份运行,并且默认情况下其他用户不可写入。

答案2

根据man crontab,可以-u选择附加用户名。

要显示用户的预定作业,用法是:

crontab -l -u username

并且您需要具有超级用户权限才能使用它。如果您不是用户root,则使用它作为:

sudo crontab -l -u username

并且,根据man crond/etc/crontab,没有命令显示拥有该作业的用户。作业的所有者保存在具有以下结构的文件中:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

因此,我认为您必须在每个文件中查找用户名或编写 bash 脚本来选择并列出它们。

另外,检查这个问题:/etc/cron.d 和 /var/spool/cron 有什么区别?

答案3

cat /etc/cron.d/* 似乎为部署在那里的那些项目显示了crontab -l与通过 crontab 部署的那些项目相同类型的列表。

相关内容