浅谈 linux 例行性工作 crontab (linux定时任务)

定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起。

今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好。大家就将就看吧,

首先 简单介绍一下linux 例行性工作 两种方式,

主要有两种:

  1. at   (和下面一样,只是它只定时执行一次就结束)
  2. crontab

演示定时执行php程序将数据插入数据库:

一个案例表:blog

 1 CREATE TABLE `blog` (
 2   `blog_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 3   `blog_title` varchar(200) NOT NULL DEFAULT ‘‘ COMMENT ‘标题‘,
 4   `blog_content` text NOT NULL COMMENT ‘内容‘,
 5   `blog_time` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘时间‘,
 6   `uid` int(10) unsigned NOT NULL COMMENT ‘用户id‘,
 7   `cat_id` int(10) unsigned NOT NULL COMMENT ‘分类‘,
 8   `blog_look` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘浏览量‘,
 9   PRIMARY KEY (`blog_id`),
10   KEY `blog_time` (`blog_time`),
11   KEY `uid` (`uid`),
12   KEY `blog_look` (`blog_look`),
13   KEY `cat_id` (`cat_id`)
14 ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT=‘文章表‘ 

一个php文件:/www/123.php (请无视链接数据库面向过程函数,仅供演示)

      1 <?php
      2
      3 $connect = mysql_connect(‘localhost‘,‘root‘,‘12315Smm‘);
      4 mysql_select_db(‘mydb‘,$connect);
      5 mysql_query(‘set names utf8‘,$connect);
      6 $time=time();
      7 $sql="INSERT INTO `blog` VALUES (null, ‘我是标题‘, ‘我是内容‘,{$time}, ‘1‘, ‘1‘, ‘0‘)";
      8 mysql_query($sql,$connect);
      9
     10 

执行  php /www/123.php  先插入一条数据测试代码是否正确。(ps : php是否加入环境变量, 可以执行php -v 测试 ,如没有请找到php程序位置执行,如 /usr/local/php/bin/php  /www/123.php)

还有在执行时,可能会有提示错误:

PHP Warning: Module ‘xxxx‘ already loaded in Unknown on line 0   ps:(xxxx 代表一些模块名如curl,redis)

原因

有两种方法来加载在PHP中大多数扩展。一种是直接编译扩展到PHP二进制文件。另一种是通过一个ini文件动态加载的共享扩展。这些错误表明,动态扩展正在通过.ini文件加载,即使它们已经被编译到PHP二进制文件。

解决方法:

要解决此问题,您必须编辑你的php.ini(或extensions.ini文件)文件和注释掉那些已经编译的扩展。例如,修改完成后,因为编译安装的模块不需要引入

例:extension=redis.so 改为   ;extension=redis.so

执行 php -v 可以看到提示没有了

设置定时任务 :

命令:crontab -e

添加定时任务,这里添加一条,如多条,每条任务换行,

前面的   “*/1  *  *  *  *  ”   分别代表 :分钟,时,日,月,星期。

  • *      代表任意时刻,
  • */1   代表没分钟执行一次,
  • /usr/local/php/bin/php    执行的程序php (注意,这里不能用环境变量,必须绝对路劲,否则失败!
  • /www/123.php       要执行的代码或文件

:wq 保存就OK;

查看效果;

自动插入成功,

其他执行的方式 同理,

大半夜写的不容易,转载请注明出处!!有不足之处还请大神指点。

时间: 2024-12-18 12:03:17

浅谈 linux 例行性工作 crontab (linux定时任务)的相关文章

Linux例行性工作排程 (crontab)

crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过crond这个工业级程序去调度就行了,crond的可靠性,健壮性,是毫无疑问的. 使用者的配置 使用者想要创建循环型工作排程

linux例行性工作排程

1.例行性排程有两中方式: 1)每隔一定周期就要来办的事项,用crontab指令实现 2)突发性的,就是这次做完后,就没有了用at指令实现,不过这个需要atd服务的支持 2.linux常见的例行性任务有: 1)进行登录档的轮替:linux会将系统所发生的各种信息都记录下来,这就是登录档,随着系统的运行这些登录档会越来越大,导致系统读写效能下降,因此就需要将这些数据按时间的新旧分别存放,这就是登录档的轮替任务 2)登录文件分析:如果系统发生了软件问题,硬件错误,资源安全问题等,绝大部分的错误都会被

Linux:例行性工作

什么是例行性工作? 其实对于例行性工作而言就是在当前环境下周期性进行的必须工作. 在Linux下,有2种例行性工作种类: 一种是突发性,做完以后就没有的那种 at:at是个可以处理仅执行一次就结束调度的命令,不过要执行at,必须要有atd这个服务. 在某些Linux版本中这个服务项目不是默认开启的,所以我们需要对这个服务进行开启. 另外一种是例行性的,就是每隔一定的周期要来办的事项: crontab:crontab这个命令锁设置的工作将会循环一直进行下去.可循环的时间为分钟.小时.每周.每月或每

chapter16:例行性工作(crontab)之二:循环执行的例行性工作调度

循环执行的例行性工作调度是由cron(crond)这个系统服务来控制的,这个服务是系统默认启动的.Linux也提供用户控制例行性工作调度的命令crontab. 一.用户设置 为了安全起见,我们可以限制能够使用crontab的用户.同at类似,用两个文件进行设置,/etc/cron.allow,/etc/cron.deny. 当用户使用crontab这个命令的来新建工作调度后,工作就会被记录到/var/spool/cron里面.而且是以帐号来作为判别的.如chuiyuan在使用这个从后,工作会记录

chapter16:例行性工作(crontab)之一:什么是例行性工作与实际运行单一工作调度

一.什么是工作高度各类:at,cron Linux中,有两种工作高度功能, (1)at:可以处理只执行一次就结束的命令,不过要执行at时,要有atd的支持,CentOS中是自带的. (2)crontab:设置的工作将会一直循环进行下去,crontab除了可以使用命令行执行外,还可以修改/etc/crontab来支持.让crontab生效的服务则是crond这个服务. 那么LINUX中有那些例行性工作呢? 进行日志文件轮替(log rotate) 日志分析logwatch的任务 新建locate的

【鸟哥的Linux私房菜】 第16章 例行性工作(crontab)

在这章中主要讲述了两个命令at(batch) 和 crontab, 其中batch可以理解为at的一种特殊执行方式. at: 是个可以处理仅执行一次就结束调度的命令,需要atd服务: crontab: 它所设置的工作会一直循环执行下去:需要crond 服务: 仅执行一次的工作调度 : at 1. 打开atd服务   # /etc/init.d/atd restart  //重启atd服务    # chkconfig atd on   // 加入开机启动 2. at的运行方式   执行逻辑:事实

第十六章、例行性工作排程 (crontab)

1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: /etc/at.deny 2.2 实际运行单一工作排程: at, atq & atrm, batch 3. 循环运行的例行性工作排程 3.1 使用者的配置: /etc/cron.deny, crontab 3.2 系统的配置档: /etc/crontab 3.3 一些注意事项 4. 可唤醒停机期

磁盘配额、例行性工作与认识系统服务-(Linux笔记)

第一部分 磁盘配额 1.quotacheck:扫描文件系统并新建quota的配置文件 quotacheck [-avugfM] -a:扫描所有在/etc/mtab,含有quota支持的文件系统 -u:针对用户扫描文件与目录的使用情况,新建aquota.user -g:针对用户组扫描文件与目录的使用情况,新建aquota.group -v:显示扫描过程 2.quotaon:启动quota服务 quotaon [-avug] 3.quotaoff:关闭quota服务 quotaoff [-a] 关闭

磁盘配额、例行性工作、系统服务-(Linux笔记)

第一部分 磁盘配额 1.quotacheck:扫描文件系统并新建quota的配置文件 quotacheck [-avugfM] -a:扫描所有在/etc/mtab,含有quota支持的文件系统 -u:针对用户扫描文件与目录的使用情况,新建aquota.user -g:针对用户组扫描文件与目录的使用情况,新建aquota.group -v:显示扫描过程 2.quotaon:启动quota服务 quotaon [-avug] 3.quotaoff:关闭quota服务 quotaoff [-a] 关闭