sudo crontab -e
工作有日志,但是在哪里? 我搜索了google,发现了一些建议,以查找
/var/log
(其中我看不到名称中带有“ cron”的任何内容)并编辑了我也没有的文件/etc/syslog.conf
。#1 楼
在默认安装中,cron作业会记录到/var/log/syslog
通过运行
grep CRON /var/log/syslog
,您只能在该日志文件中看到cron作业。 >
如果您没有重新配置任何内容,则条目将在其中。
#2 楼
您可以创建一个cron.log文件,使其仅包含显示在syslog中的CRON条目。请注意,如果遵循以下说明,CRON作业仍将显示在系统日志中。打开文件
/etc/rsyslog.d/50-default.conf
查找以以下内容开头的行:
#cron.*
取消注释该行,保存文件,然后重新启动rsyslog:
sudo service rsyslog restart
现在您应该在这里看到cron日志文件:
/var/log/cron.log
Cron活动现在将被记录到该文件中(除了syslog)。
请注意,在cron.log中,您将看到有关cron在/etc/cron.hourly、cron.daily等中运行脚本的条目。像这样:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
但是,除非您在/etc/cron.daily或/etc/cron.hourly中实际运行了哪些脚本,否则您将看不到更多信息,除非这些脚本将输出定向到cron.log(或者可能定向到其他一些日志文件)。
如果要验证crontab是否正在运行并且不必在cron.log或syslog中进行搜索,请创建一个crontab来将输出重定向到您选择的日志文件-类似:
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
这会将运行脚本的所有标准输出和错误重定向到指定的日志文件。
评论
我认为,这个答案将来会更好。因此,您的syslog文件更加清晰。
– shgnInc
2013年12月22日8:36
要同时从系统日志中排除cron日志,您可以将*。*; auth,authpriv.none-/ var / log / syslog行更改为*。*; auth,authpriv.none,cron.none-/ var / log / syslog 。
–科恩。
14年2月13日在11:35
在我们的CentOS 6上,cron。*在/etc/rsyslog.conf中定义,而我在rsyslog.d文件夹中为空。
–朱伟
2014-09-17 3:35
2>&1代表什么?
–约翰·乔(John Joe)
17 Mar 21 '17在2:41
@JohnJoe 2>&1用于将stderr转发到stdout,这样您还将获得stderr到日志文件。
– Sampo Sarrala-codidact.org
17年7月25日在12:38
#3 楼
在这种情况下,有时对其进行连续监视可能会很有用:tail -f /var/log/syslog | grep CRON
评论
好吧,您可能想使用-F,它将在文件名更改后跟随文件,以便在文件被截断/移动到例如/var/log/syslog.1.gz,您仍在遵循当前的/ var / log / syslog文件。根据man文档,这与运行tail xxxx -f --retry相同
–莫莫
2014年12月17日在22:24
#4 楼
您也可以将单个cronjobs的输出定向到自己的日志中,以提高可读性,您只需要将date的输出附加到某个地方即可。 0 15 * * * /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
评论
是的,但是如果此行由于语法错误而无法运行,则不会在指定的输出日志中写入任何内容。
–猛禽
15年7月24日在2:37
您可以通过在指定日志文件后附加2>&1来解决此问题。最好的做法是先测试您的cronjob,然后再将它们添加到crontab中,然后在第一次计划运行时出现,以确保crontab的格式正确。
–安德鲁·迈耶(Andrew Meyer)
2015年7月24日在16:04
如果daily-backup.log文件不存在,CRON会自动创建它。
–那霸布山S N
19/12/23在9:51
#5 楼
如果您的系统上安装了systemd
,则可以使用journalctl
命令显示cron作业日志。例如,在我的Ubuntu 17.10上:
journalctl -u cron.service
#6 楼
这是一个很老的问题,但是这些答案似乎都不令人满意。首先使您的cron作业每分钟运行一次,然后以非守护程序的身份运行cron(暂时,只要杀死可能已经存在的任何crond)测试日志记录:
crond -nx test
并查看流过终端的程序执行日志。
评论
无法在14.04上运行-未找到命令“ crond”,您的意思是:从软件包“ cron”发出的命令“ cron”(主)
– G-。
17年7月6日在9:40
今天在Ubuntu 18.04上出现相同的错误
– Nam G VU
4月25日12:30
#7 楼
journalctl -t CROND
来自
journalctl
手册: -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.
This parameter can be specified multiple times.
#8 楼
默认情况下在/var/log/syslog
中。 但是可以将其设置为创建单独的cron.log,这更有用。
此常见问题解答描述了该过程:
16.04 :如何让cron创建cron.log并对其进行实时监视?
在此答案中,还包含创建
wcron
命令以显示其接近实时的指令。另外,它还链接到另一个答案,如何更改cron日志级别?
,其中显示了如何更改日志级别以包括更多的不仅仅是工作开始-级别15也将显示错误和结束时间。
#9 楼
如前所述,cron作业已记录到/var/log/syslog
您可以将syslog通过管道传输到grep并过滤出CRON日志,例如
less /var/log/syslog | grep CRON
您可以像这样搜索您的crontab日志
less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>
您可以搜索存储在gz文件中的crontab历史日志,像这样
less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>
拥有日志记录机制一直被认为是很好的,您可以为服务器快速设置ELK,也可以尝试使用logz。
#10 楼
您可以将cron
的输出重定向到一个临时文件。例如:
00 11 07 * * /bin/bash /home/ubuntu/command.sh > /tmp/output 2>&1
错误和正常输出,都将被重定向到同一文件
#11 楼
检查包含压缩日志文件的syslog文件中的所有与CRON相关的日志,方法如下:#12 楼
视系统类型和版本而定。但是在许多情况下,您必须确定目标crontab规则运行的时间基础。因此,例如,如果您正在搜索每日crontab规则的相关日志,那么您会在以下位置找到每天分为一个文件的日志:$ ls -ltrh /var/log/cron-*
然后获取日志文件。
评论
如果未安装MTA,则cron只会丢弃作业输出。
–巴里·凯利(Barry Kelly)
13年11月18日在23:19
cron日志可能位于/ var / log /目录中的另一个文件中。检查cron.log或等效文件。
–Navigatron
2014年1月31日上午10:21
这不会给我这份工作的成果。它仅给出通用消息,说明cron已处理。
–碎肉
2015年12月12日,0:34
在AWS上是/ var / log / cron
–tsukimi
17年2月4日在1:23
@shadi,您还可以grep -i CRON搜索不区分大小写的内容
– nafg
17年4月24日在2:08