首页 > 代码库 > Ubuntu系统下crontab的使用

Ubuntu系统下crontab的使用

最近一个项目,需要用到一个定时任务,先说crontab的常用命令。


crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务

接下来我的调试过程

(1)编辑加入自己的命令

crontab -e  //编辑某个用户的cron服务

*/1 * * * * /usr/bin/php   /var/send.php   每分钟都执行一次

send.php

编辑如下

<?php
    echo this is a work;
?>

没有出现运行结果,于是乎,就去查看日志,结果在/var/log下没有发现 cron.log文件,这我就纳闷了,why?

经过研究发现原来日志服务器rsyslog没有开启对crontab的支持,接下来进入/etc/rsyslog.d/ 

cd /etc/rsyslog.d/
ls
20-ufw.conf  50-default.conf //会有连个文件
vim 50-default.conf
编辑如下:

找到 cron.* 所在行

#  Default rules for rsyslog.
#
#            For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*            /var/log/auth.log
*.*;auth,authpriv.none        -/var/log/syslog
cron.*                /var/log/cron.log
#daemon.*            -/var/log/daemon.log
kern.*                -/var/log/kern.log
#lpr.*                -/var/log/lpr.log
mail.*                -/var/log/mail.log
#user.*                -/var/log/user.log

去掉前面的#。ok,接下来 使用命令cron restart重启,啊哟,报错了,

cron: can’t lock /var/run/crond.pid, otherpid may be

解决方案:

rm /var/run/crond.pid
ps -A | grep cron
kill 进程ID

然后继续 cron restart,Ok了,但是还没还结果,现在我们可以看看日志啦。

tail /var/log/cron.log

发现错误如下:

 (CRON) info (No MTA installed, discarding output)

出错原因:

报错的主要原因是没有配置邮件服务器.

有两个原因会导致这个错误发生:

 1,当你执行命令是shell脚本时

  解决方案:在每条命令后面加上:

  >/dev/null 2>&1

 2,当你向窗口输出时,因为内容的输出是cron通过邮件发送的

  解决方案:将输出内容导入一个文件 >> /tmp/test.txt

 
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Monaco; color: #f4f4f4; background-color: rgba(0, 0, 0, 0.85) } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Monaco; color: #f4f4f4; background-color: rgba(0, 0, 0, 0.85) } span.s1 { }</style>

Ubuntu系统下crontab的使用