最近一个项目,须要用到一个定时任务,先说crontab的经常使用命令。php
crontab -u //设定某个用户的cron服务,通常root用户在执行这个命令的时候须要此参数 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除没个用户的cron服务 crontab -e //编辑某个用户的cron服务
接下来个人调试过程shell
(1)编辑加入本身的命令vim
crontab -e //编辑某个用户的cron服务
*/1 * * * * /usr/bin/php /var/send.php 每分钟都执行一次服务器
send.php学习
编辑以下this
<?php echo 'this is a work'; ?>
没有出现运行结果,因而乎,就去查看日志,结果在/var/log下没有发现 cron.log文件,这我就纳闷了,why?spa
通过研究发现原来日志服务器rsyslog没有开启对crontab的支持,接下来进入/etc/rsyslog.d/ 调试
cd /etc/rsyslog.d/ ls 20-ufw.conf 50-default.conf //会有连个文件
vim 50-default.conf
编辑以下:
找到 cron.* 所在行rest
# 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
更过的进阶技术能够关注公众号:进阶的脚步 回复:学习资料 有惊喜哦