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

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 优先。

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

时间: 2024-08-05 10:59:25

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

ubuntu 下使用crontab定时执行java程序

题记 之前使用solr进行全文检索,涉及到检索更新问题,这里采用定时更新方法,现在使用的系统为ubuntu,因此考虑crontab. 解决思路 一.准备工具 打包java程序jar 安装crontab 二.编写crontab 脚本 过程 一.工具准备 1,制作jar包,可以通过java jar命令,也可以通过eclipse工具. 2.安装crontab ubuntu上安装比较方便: sudo apt-get install crontab 二.编写crontab脚本 1.认识crontab Cr

Ubuntu 下关于crontab的使用详解

如果碰到了需要在指定的时间运行php脚本的情况,比如定时进行网站的数据统计.自动执行数据库备份任务.定时发送email等等. 如果我们不使用Cron来执行php脚本,或许我们会采用php include的方法. 比如在index.php 中添加代码:<?php include "crontab.php"?> 当访客通过浏览器访问http://xxxx/index.php的时候,自动执行了crontab.php. 当然这只是一种思路,这种方法并不能指定时间定时运行PHP脚本,

Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)

前几天以源码的方式部署了Apache+mod_wsgi+django的项目,见我的另一个篇博客 这几天也用apt-get方式安装Apache的方式,安装了部署了一次,其中有一致的地方,也有差别的地方,再此记录一下 环境ubuntu 16.04 +apache2.4.25 +django1.8+mod_wsgi-4.5.15+python2.7 Apache.Python2.7都是以apt-get install的方式安装的 django1.8 是pip install django==1.8的方

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

1.启动cron工具[ps:使用root权限] centos启动cron两种方式 a) /etc/init.d/crond start b) service crond start ubuntu启动cron两种方式 a) /etc/init.d/cron start b) service cron start(推荐) 2.添加定时任务[每个整点执行ls命令] centos crontab -e命令打开文件 添加一行:0 * * * * ls ubuntu crontab -e命令打开文件[ps:

ubuntu下使用nginx部署Laravel

问题描述 Laravel是PHP下当今最受欢迎的web应用开发框架,github上start数远超第二名Symfony,以前我用这个框架做项目的时候通常就是扔到apache里面,然后配置.htaccess文件移除路由里面的public字样,达到Pretty URLs效果,这这两天在完善各个版本的微信墙,准备部署在azure上,结果发现以前装的是nginx,mysql这样的环境,于是乎花了一点时间研究了一下如何部署,便就有了这篇文章,废话少说,上干货: 配置环境 sudo apt-get inst

ubuntu下安装配置部署zabbix3.0——基于docker

一.系统配置 Ubuntu 16.04 LTS dockers  1.11.2 Mariadb 二.安装docker(apt方式+curl方式) 1.apt方式安装 1.1.安装https证书: $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates 1.2.安装docker 官方apt源公钥: $ sudo apt-key adv --keyserver hkp://p80.pool.sk

在ubuntu下使用gunicorn部署django程序

只是记录一下,网上教程很多: 1.修改nginx配置文件 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /home/ranvane/gwdj; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost;      access_log  /hom

linux下使用crontab创建定时任务

在linux中启动crontab服务: /etc/init.d/crond start crontab的命令格式 crontab -l 显示当前的crontab 文件(默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/roger) crontab -r 删除当前的crontab (谨慎使用此方法,因为将会把所有的计划任务全部删除) crontab -e 使用编辑器编辑当前的crontab文件 crontab 的文件格式: mi

Mac下使用crontab来实现定时任务

说明: 1.Linux和Mac下操作crontab都是一致的 2.配置文件都在/etc/crontab下,如果没有就创建. 3.测试发现直接使用crontab -e命令创建的定时任务是放在临时文件夹的,重启会删除,并且与/etc/crontab文件无关联. 实际操作: 查看 crontab 是否启动 sudo launchctl list | grep cron 检查需要的文件 $ LaunchAgents ll /etc/crontab ls: /etc/crontab: No such fi