什么是Cron和Crontab

Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本。更详细的概念和使用方法介绍请点击Cron和Crontab是什么?

现在我们要讨论的是,许多的php程序员都可以很快完成Web应用的开发,PHP代码的调试也比PERL或C语言容易很多,不过经常会碰到有php程序员会问:如何在linux系统中使用crontab来运行Php脚本?比如ubuntu crontab 定时执行php代码。

Ubuntu 如何使用Crontab定时自动执行PHP脚本

现在远方博客也碰到了需要在指定的时间运行php脚本的情况,比如定时进行网站的数据统计、自动执行数据库备份任务、定时发送email等等。

如果我们不使用Cron来执行php脚本,或许我们会采用php include的方法。比如在index.php 中添加代码:<?php include "crontab.php"?>。当访客通过浏览器访问http://farlee.info/index.php的时候,自动执行了crontab.php。当然这只是一种思路,这种方法并不能指定时间定时运行PHP脚本,同时也给index.php带来了额外的服务器消耗。而Linux Ubuntu Crontab 可以很好地完成php 定时任务,这也是写这篇关于cron的文章的目的。

然后首先想到的是和windows 系统下的计划任务一样,通过在windows中使用php的命令行模式执行计划任务实现定时自动执行php脚本,这是一个思路,另外一个思路就是直接在浏览器中访问php脚本的地址,定时自动打开浏览器访问该网址,执行php脚本。因此在Ubuntu服务器系统下,同样有类似的两种思路。下面http://farlee.info/逐步介绍使用Ubuntu Crontab定时执行PHP脚本的设置方法。

PHP 安装模式

首先我们必须先确认自己在LINUX Ubuntu 服务器上php的安装模式,以CGI 模块还是Apache模块方式安装? 如果不确定php安装模式,可以使用 phpinfo() 函数查看:将<?php phpinfo(); ?> 写在php文件中上传到网站服务器,访问该页面,就在页面顶部我们找到“Server API”,如果类似“Apache 2.0 Handler”,那么就是apache模块;否则php是CGI 模式(shell 命令行模式)。这两种不同的php安装模式,正对应于前面介绍的ubuntu crontab 定时执行php的两种解决方法。

CGI 编译

如果Server API是cgi,那么在需要cron执行的php脚本的第一行额外加入一段代码#!/usr/bin/php -q(类似PERL语法),指定服务器中php可执行程序的位置,具体步骤如下:

1. 确认Ubuntu系统已经安装了php5-cli模块,安装命令:apt-get install php5-cli。在目录 /usr/bin/php下生成 php可执行程序。

2. 编辑待定时执行的php脚本文件crontab.php,如:

#!/usr/bin/php -q

$file = "/var/www/".date('H').'_'.date('i').'_'.date('s').'.txt';

file_put_contents($file,date('Y-m-d'));

?>

3. 编辑 crontab 任务:

打开终端,输入命令:crontab -e,

Select an editor. To change later, run 'select-editor'.

1. /bin/ed

2. /bin/nano

3. /usr/bin/vim.tiny

选择一个Ubuntu编辑器后,编辑/tmp/crontab.AuN7IQ/crontab 文件:

# m h dom mon dow command

在下面添加定时执行命令:

* * * * * php /path/to/your/cron.php

5个星号分别代表定时指定每分、小时、日、月、周。如每天的下午7点执行crontab.php,命令为:

* 19 * * * php /var/www/cron/crontab.php

然后按Ctrl+O保存,Ctrl+X退出。

4. 执行以下Crontab命令行

Shell> crontab crontab

确认crontab.php的权限为可执行("chmod 755 /var/www/cron/crontab.php")。

Apache 模块

如果php安装是以 apache 模式运行的,那么在要在ubuntu服务器定时执行的php脚本开头就不用加 #!/usr/bin/php -q 这一行。php脚本在ubuntu 通过crontab的定时执行通过Lynx浏览器的自动访问来完成。

1. Lynx浏览器安装。

Lynx浏览器是一款轻便的web浏览器,使用于大部分Unix 和Linux系统环境。安装命令:sudo apt-get install lynx。

2. 编辑cron任务,命令crontab -e

* * * * * lynx -dump http://farlee.info/cron.php

注意这个地址最好用绝对地址,包含“http://”的完整url。

3. 再次执行下面的命令行:

Shell> crontab crontab

因为我在ubuntu安装的是lamp server,所以采用第二种Apache 模块的方法就可以使用crontab定时执行php脚本代码。

ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件相关推荐

  1. utils.py 文件的理解:一些小脚本文件

    文章目录 utils.py 文件的理解:一些小脚本文件 1. 包含的函数 1.1. def to_cpu(tensor): 1.2. def load_classes(path): 加载数据集的类别 ...

  2. win7计算机找不到脚本文件夹,win7系统TXT文件打开提示找不到脚本文件的解决方法...

    很多小伙伴都遇到过win7系统TXT文件打开提示找不到脚本文件的困惑吧,一些朋友看过网上零散的win7系统TXT文件打开提示找不到脚本文件的处理方法,并没有完完全全明白win7系统TXT文件打开提示找 ...

  3. 自动执行一个php文件,使用crontab自动执行php文件

    启动linux定时服务:service crond start 查看当前定时任务: crontab -l 添加新定时任务:crontab -e 先是测试crontab对于普通任务能否执行: */1 * ...

  4. linux下新建一个脚本文件,linux下新建并启动脚本文件

    1.书写一个linux脚本文件: 2. 修改3个参数:Name,服务名称: Path:路径: Assembly:具体应用的程序: 3.进入目录/etc/init.d# (Linux启动项目): 4.将 ...

  5. shell编写mysql启动脚本文件夹_linux 编写一个shell脚本文件,实现以下功能

    展开全部 #!/bin/bash while true do cat < 启动Apache(a) 启动Mysql (m) 启动Samba (s) 启动FTP   (f) 启动DNS   (d) ...

  6. Windows 使用命令执行 sql 脚本文件

    文章目录 MySQL 数据库 方法一:使用 mysql 命令 方法二:使用 source 命令 Oracle 数据库 MySQL 数据库 方法一:使用 mysql 命令 未配置 MySQL 的环境变量 ...

  7. 【loadrunner】解决将某个脚本中.c文件移植到其他脚本文件中,无法执行,且报Error -- Unresolved symbol错误问题

    解决将某个脚本中XFZ_C2C_FBSP.c文件移植到其他脚本文件中,无法执行,报Error -- Unresolved symbol错误问题 步骤1:将XFZ_C2C_FBSP.c文件先copy至运 ...

  8. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  9. app抢购脚本如何编写_如何用1个记事本文件征服全世界?——cmd批处理脚本编写...

    电脑可以定时帮你自动处理一些重复的事务.一键实现别人多键才能实现的功能,利用常用的cmd命令可以完成这些功能,这次我们从操作层面聊一聊,如何利用这些cmd命令在记事本中编写脚本,进而实现任何自己想实现 ...

  10. 电脑计算机无法找到脚本文件夹,win10系统开机出现无法找到脚本文件的设置办法...

    win10系统使用久了,好多网友反馈说win10系统开机出现无法找到脚本文件的问题,非常不方便.有什么办法可以永久解决win10系统开机出现无法找到脚本文件的问题,面对win10系统开机出现无法找到脚 ...

最新文章

  1. 无线红外探测器01-产品简介和功能需求
  2. 万劫不复:恐怖悬疑话剧《下一个就是你》
  3. 阿里云linux主机安装qt报错:缺少libxkbcommon-x11.so.0
  4. Docker(十七)-修改Docker容器启动配置参数
  5. 2017.10.15 旅行comf 失败总结
  6. 仓库码放要求_仓储管理的全流程SOP操作示范,你们公司仓库管理规范吗?
  7. VCL组件之主要方法(Methods)和通用事件(Events)
  8. sublime自定义snippet代码片段
  9. 一个bootstrap.css的使用案例
  10. C语言关键字必备练习题
  11. Ubuntu 20.04 配置vim编辑器
  12. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试网络基础)试题及答案操作.doc...
  13. 短信工具类 SmsUtil
  14. 发射功率dBm 换算表
  15. win server 2008r2 相关设置
  16. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 C 颜料的混合 (计算几何)
  17. Android实现一键开启自由窗口、分屏、画中画模式——分屏模式
  18. 10000个小时-------马尔科姆·格拉德威尔
  19. 动态仙人掌 系列题解之一——3464: 动态仙人掌 I
  20. OpenWrt从下载到编译 -- 斐讯K2路由器

热门文章

  1. tableau实战系列(四)用条形图或环形图来呈现进度百分比
  2. Python的lambda匿名函数
  3. db2数据库还原找不到文件_DB2 还原数据库
  4. Python爬虫 - 解决动态网页信息抓取问题
  5. numpy.ma详解
  6. 【机器学习算法-python实现】Adaboost的实现(1)-单层决策树(decision stump)
  7. 第5章 线性回归算法
  8. Android Studio 分析器详解
  9. 数学建模学习笔记——主成分分析
  10. Linux服务器Zookeeper+Dubbo环境搭建