我的系统管理员已在我的计算机上设置了一堆cron作业。我想确切地知道什么时间安排。如何获得该清单?

评论

这不是问题的答案,而只是关于最佳实践的说明。可以将它们配置为root或apache或其他用户的按用户cron作业,但是一个应使用/ etc / crontab或(最好在大多数发行版中)/etc/cron.d和/ etc / cron。[时间范围]。 br />
stackoverflow.com/questions/134906/…

我在以下位置发布了一个脚本,该脚本可以在一定程度上实现该脚本的自动化:-stackoverflow.com/questions/134906/…它并不完美,但可能满足了90%的需求。这是不使用bash编写内容的一个很好的例子。

#1 楼

根据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

这些只是目录,其中包含根据其目录名称按小时,每日,每周或每月执行的可执行文件。

最重要的是,您可以在工作中使用(请检查/var/spool/at/*),anacron(/etc/anacrontab/var/spool/anacron/*)以及其他我可能忘记的东西。

评论


谢谢,我在/etc/cron.daily中找到了它们。日常文件如何工作?日常工作什么时间开始?在我的机器上,它们似乎在中午左右运行,但是它想告诉我的系统管理员如何将其更改为午夜。

–坦率
2011年2月7日在21:21

从/ etc / crontab中调用cron.daily,例如在我的Ubuntu系统上,它是:25 6 * * * root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily),表示上午6:25。

–柯
2011-2-8在1:20



如果您想要更多的数据点,也可以从我的RHEL5系统上的/ etc / crontab中调用cron.daily。

–jsbillings
2011年2月8日在13:34

在较新的Fedora(可能还没有看过RHEL6)上,cronie守护程序照顾使用/ etc / anacrontab中配置的用户。

–mattdm
2011-2-8 15:48

有时它也在/ var / cron中。

– CMCDragonkai
2014年6月30日在2:57

#2 楼

对于大多数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用户,该root用户也可以通过系统级crontab来配置作业。位于

/etc/crontab


使用cronie(Fedora / CentOS上的默认设置),还有一个用于系统cron作业的.d样式配置目录:

/etc/cron.d


(和往常一样,.d目录简化了维护不同包中的配置条目的过程。)

为了方便起见,大多数发行版还提供了链接/存储的脚本会定期执行,例如:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly


这些脚本的及时执行通常通过系统crontab中的run-parts条目或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 config目录中创建符号链接来启用计时器单元。)

另请参见:


ArchWiki有关Cron的文章
有关Systemd计时器的ArchWiki文章


评论


我没有投票。但是我只是尝试了crontab -l -u root(因为我想了解那些在root下运行的cronjob),它说我没有使用-u的特权。

–坦率
2011-2-7 21:00



然后您必须以足够的权限调用它-即以root用户身份。

–maxschlepzig
2011-2-7 21:02

仍未完成-一些版本的cron从/etc/cron.d和/ etc / cron运行作业。{每天,每小时,每月,每周}没有从/ etc / crontab调用的帮助程序。

–mattdm
2011-2-8 15:43

@maxschlepzig-但并非总是如此。问题是“我如何获得所有cron工作清单”;答案是“嗯,这里有一些”不是答案。

–mattdm
2011年2月8日在17:20

@maxschlepzig — Fedora和RHEL6中附带的cronie不引用/ etc / crontab中的那些,而是使用/ etc / anacrontab。我可能会误以为在任何配置文件中都没有引用这些的实际实现。 (但是后来,我也没有投票。...我只是在说。)

–mattdm
2011-09-15 20:28

#3 楼





crontab -u用户名-l;


列出所有用户的所有cron

以超级用户身份运行

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done


评论


OP要求提供所有cron作业的列表。

– Drav Sloan
15年8月4日在11:59

由于某些原因,它不显示/etc/cron.d/作业。

–贾姆希德
16年11月2日在23:28

没用“ www数据无crontab”。但是用户名www-data存在。

– mishanon
17-10-11在7:19

#4 楼

您可以使用以下命令列出所有cron作业(我正在使用更多内容来列出输出中的位置):
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' | less

或不加注释:
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' \
   | grep "^\s*[^#]"

crontab具有用于运行每小时,每天,每周和每月以cron。为单位的脚本-您可以列出以下内容:
ls /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly