设为首页 收藏本站
查看: 1160|回复: 0

[经验分享] Ubuntu下用crontab 部署定时任务

[复制链接]

尚未签到

发表于 2018-4-29 10:47:13 | 显示全部楼层 |阅读模式

  用php做了一个网站,其中一个统计工能,需要每周定时用行。想看看有什么方法,之前看别人的东西,一般有2中方式,一个是php自带的定时任务,一个是用系统
  带的,linux下的crontab和windows下的定时任务。
  之前用了php自带的定时任务工能,发现实现起来很简单,中间也没出现很多问题,同时做的时候对  ob_flush()  和 flush() 等函数不是很熟,后来又看了相关的一些文章,
  对其中的东西有了深入的了解。但是后来发现php定时任务开启后,貌似不能停止,不需要重启服务器才行。不能通过修改php文件来解决。
  后来就打算用linux下的crontab来实现。这次用的是Ubuntu来做部署系统,nginx来做服务器。此系统下自带crontab,所以不用自己安装。
  开启crontab日志
  crontab默认情况下是不执行开启日子的,所以一开始写完后,不能执行,想查看日志,却找不到。所以先开启定时任务的日志来查看
  修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf  文件中的 #cron.* 前的 # 删掉;用以下命令重启rsyslog服务:
service rsyslog restart;  然后再重启crontab服务:
service cron restart;  网上很多人说开启,停止或者重启contab服务用命令 service crond restart,执行这个命令会报出 unrecognised service ,这里吧 crond 改成 cron 就可以了。
  之后,在这个位置 /var/log/cron.log 就可以查看定时任务的文件日志文件了;
  下面这个命令还可以查看crontab的状态
service cron status;  查看运行时的日志文件,如果在日志文件中执行一条语句后出现:
  No MTA installed, discarding output
  则crontab执行脚本时是不会直接错误的信息输出,而是会以邮件的形式发送到邮箱里,需要邮件服务器了,如果没有安装邮件服务器,它就会报这个错。
  可以在每条定时脚本后面加入:
>/dev/null 2>&1  即将所有信息输入到linux系统中的空设备/dev/null中。
  即可解决No MTA installed, discarding output的问题。
  
  写定时任务
  通过如下命令,就可以开启本用户的定时文件,文件存放在 /var/spool/cron/crontabs 文件夹下
  并且以用的的名字命名的文件
crontab -e  可以通过以下命令列出某个用户cron服务的详细内容
crontab -l  我先写了个定时任务测试以下,用php写了一个功能,每分钟向数据库中写入一条数据,定时任务每分钟执行url就可以
1 *    * * *   curl  servername/Home/Test/test   >/dev/null 2>&1  curl也是Ubuntu自带的,不用另外安装。此条命令单独在命令行执行是可以的。
  在crontab中发现好像不能执行,后来发现每分钟不能这样写,分钟位要写成  */1,才能执行,下面是从别人那拷贝过来的几个命令,不过我都试过
DSC0000.gif

每五分钟执行  */5 * * * *  

  
每小时执行     0 * * * *
  

  
每天执行        0 0 * * *
  

  
每周执行       0 0 * * 0
  

  
每月执行        0 0 1 * *
  

  
每年执行       0 0 1 1 *

  在最终能用之前我还运行过以下命令,是给root赋权限。但是在我最终能运行时,我不知道这条命令有没有起作用。不过还是先写上。运行后需要重启crontab服务
crontab -u root /var/spool/cron/crontabs/root  之前不能运行的时候,看到很多人说不能运行是环境变量的问题,需要修改。不过我这次并没有遇到。不过先记下来。以后可能会用到。
  我用的是root用户写的定时任务,并且看到他人写的下面内容,下次试一下
  /etc/cron.deny 表示不能使用crontab 命令的用户
  /etc/cron.allow 表示能使用crontab的用户。
  如果两个文件同时存在,那么/etc/cron.allow 优先。
  如果两个文件都不存在,那么只有超级用户可以安排作业。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-453478-1-1.html 上篇帖子: 利用FbinstTool制作多系统(winPE+Ubuntu+CDLinux)启动U盘 下篇帖子: 双系统Ubuntu无法访问Win10磁盘分区解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表