用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,才能执行,下面是从别人那拷贝过来的几个命令,不过我都试过

每五分钟执行  */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 优先。

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

Ubuntu下用crontab 部署定时任务的更多相关文章

  1. Ubuntu下使用crontab部署定时任务

    Ubuntu下使用crontab部署定时任务 安装cron apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/ ...

  2. ubuntu下在apache部署python站点

    ubuntu下在apache部署python站点 我的是ubuntu14 32为的虚拟机,默认安装的python为3.4 环境:apache + mysql + django + python3 软件 ...

  3. NodeJS项目迁移兼Ubuntu下NodeJS环境部署

    前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了.想着到底要不要续期,毕竟100/月.后面看着阿里云有个活动,800/三年.果断买下.环境部署折腾了一天,其中也遇到几个坑. 目录 一.安装 ...

  4. ubuntu下使用crontab

    创建crontab任务 参考:https://www.cnblogs.com/Icanflyssj/p/5138851.html 3. crontab常用的几个命令格式 crontab -l //显示 ...

  5. crontab部署定时任务

    1.安装cron工具:apt-getinstall cron 2.开启定时任务:crontab –e 定时任务语句格式为:执行周期+命令. 周期有5个域,分别是分,时,日(day of month), ...

  6. ubuntu下使用crontab定时器

    crontab 定时工具(周期性执行的任务列表称为Cron Table),其中每一个任务,被称为Cron Job. 可以,每分钟执行,每小时执行,每天执行,每周执行,每月执行. 检查服务 1.查看任务 ...

  7. centos和ubuntu下使用cron设置定时任务

    1.启动cron工具[ps:使用root权限] centos启动cron两种方式 a) /etc/init.d/crond start b) service crond start ubuntu启动c ...

  8. Ubuntu 下使用 Nginx 部署 .NET Core 2.0 网站

    前言 本文介绍如何在 Ubuntu 16.04 服务器上安装 .NET Core 2.0 SDK.创建项目与发布,并使用 Nginx 部署 .NET Core 2.0 Web 项目. 安装 .NET ...

  9. linux下使用crontab新建定时任务

    我安装了一个全文搜索的插件,但是需要生成索引才能使用,但是不能手动生成索引,所以说呢,我就加了一个定时任务, 一.首先vim /etc/crontab 打开文件 我根据上面的提示加了用户名,但是看到其 ...

随机推荐

  1. Docker学习(1安装docker)

    1.在安装之前首先查看系统版本,ubuntu centos6 7 安装方式并不相同,所以首先确定系统版本 #cat /etc/issue 确定系统版本  2.开始安装Docker (1)Ubuntu下 ...

  2. java中通过配置文件的方式(Jedis驱动)使用Redis

    在java中使用Redis,实际上是将Redis的一些命令封装到Jedis的实体类中,然后进行调用.

  3. python学习【第十一篇】网络编程

    一.socket的简介 socket(简称:套接字)进程间通信的一种方式,它与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通 ...

  4. C++STL容器(lower_bound,upper_bound)

    C++STL容器中有三种二分查找函数,这里分享其中的两个 这两个函数其实都可以理解为不破坏数组次序的前期下能将目标元素插入到数组的第几个位置,不过在细节上两个函数有所差异 int d[6]={0,2, ...

  5. NET Framework 4.5新特性 (一) 数据库的连接加密保护。

    NET Framework 4.5 ado.net数据库连接支持使用SecureString内存流方式保密文本.  一旦使用这类操作,文本加密是私有不能共享的,并在不再需要时从计算机内存中删除.  S ...

  6. 如何理解docker镜像build中的上下文

    参考:https://yeasy.gitbooks.io/docker_practice/content/image/build.html 理解上线文概念非常重要,不然可能碰到一些奇怪的问题. 构建镜 ...

  7. Sping Cloud 微服务框架学习

    Spring Cloud官方中文站 https://springcloud.cc

  8. code first 数据库无损迁移

    环境:vs2013+nuget Enable-Migrations -EnableAutomaticMigrations Update-Database

  9. git commit -a -m "DM 1、获取aliOssSTS值,计算签名,实现视频PUT/POST2种上传方式上传;"

    git commit -a -m "DM 1.获取aliOssSTS值,计算签名,实现视频PUT/POST2种上传方式上传:" 微信小程序的视频上传

  10. Markov Process

    w Markov Process -- from Wolfram MathWorld  http://mathworld.wolfram.com/MarkovProcess.html 谷歌背后的数学_ ...