Ubuntu下用crontab 部署定时任务

前端之家收集整理的这篇文章主要介绍了Ubuntu下用crontab 部署定时任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


  用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服务:

servicersyslogrestart;

  然后再重启crontab服务:

servicecronrestart;

  网上很多人说开启,停止或者重启contab服务用命令 service crond restart,执行这个命令会报出 unrecognised service,这里吧 crond 改成 cron 就可以了。

  之后,在这个位置/var/log/cron.log 就可以查看定时任务的文件日志文件了;

  下面这个命令还可以查看crontab的状态

servicecronstatus;

  查看运行时的日志文件,如果在日志文件中执行一条语句后出现:

  No MTA installed,discarding output
  则crontab执行脚本时是不会直接错误的信息输出,而是会以邮件的形式发送到邮箱里,需要邮件服务器了,如果没有安装邮件服务器,它就会报这个错。

  可以在每条定时脚本后面加入:

>/dev/null2>&1

  即将所有信息输入到linux系统中的空设备/dev/null中。

  即可解决No MTA installed,discarding output的问题。

写定时任务

  通过如下命令,就可以开启本用户的定时文件文件存放在 /var/spool/cron/crontabs 文件夹下

并且以用的的名字命名的文件

crontab-e

  可以通过以下命令列出某个用户cron服务的详细内容

crontab-l

  我先写了个定时任务测试以下,用PHP写了一个功能,每分钟向数据库中写入一条数据,定时任务每分钟执行url就可以

1****curlservername/Home/Test/test>/dev/null2>&1

  curl也是Ubuntu自带的,不用另外安装。此条命令单独在命令行执行是可以的。

  在crontab中发现好像不能执行,后来发现每分钟不能这样写,分钟位要写成 */1,才能执行,下面是从别人那拷贝过来的几个命令,不过我都试过

复制<a href=代码" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://common.cnblogs.com/images/copycode.gif">

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

每小时执行0****

每天执行00***

每周执行00**0

每月执行001**

每年执行0011*

复制<a href=代码" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://common.cnblogs.com/images/copycode.gif">

  在最终能用之前我还运行过以下命令,是给root赋权限。但是在我最终能运行时,我不知道这条命令有没有起作用。不过还是先写上。运行后需要重启crontab服务

crontab-uroot/var/spool/cron/crontabs/root

  之前不能运行的时候,看到很多人说不能运行是环境变量的问题,需要修改。不过我这次并没有遇到。不过先记下来。以后可能会用到。

  我用的是root用户写的定时任务,并且看到他人写的下面内容,下次试一下

  /etc/cron.deny表示不能使用crontab命令的用户

  /etc/cron.allow表示能使用crontab的用户

  如果两个文件同时存在,那么/etc/cron.allow优先。

  如果两个文件都不存在,那么只有超级用户可以安排作业。

猜你在找的Ubuntu相关文章