使用linux下的crontab定时任务跑定时脚本

tags:定时任务 定时脚本 crontab linux定时脚本 linux


引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的。我们这次就来说一下定时脚本的那些事,其实网上教程多得很,我就来蹭一下热度吧。

crond

我们经常用windows,但是估计很多人都不知道windows下面有一个计划任务,可以定时的执行一些任务。其实windows下面有好多小功能,对于程序员来说很有用,比如创建一个批处理可以帮助我们一次性打开我们需要的所有环境软件,定时任务可以定时备份数据库等等。

同样的 在linux下也有用来周期性执行任务的工具,它就是crond。它会随linux一起安装,并默认自动启动。它定时执行的最小粒度是1分钟,也就是说crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

它的代码如下

  1. #crontab -u <-l, -r, -e>
  2. Options:
  3. -u <user> define user //指定一个用户
  4. -e edit user's crontab //编辑某个用户的任务
  5. -l list user's crontab //列出某个用户的任务计划
  6. -r delete user's crontab //删除某个用户的任务
  7. -i prompt before deleting
  8. -n <host> set host in cluster to run users' crontabs
  9. -c get host in cluster to run users' crontabs
  10. -s selinux context
  11. -x <mask> enable debugging

检查服务是否在运行


  1. sevice crond status //如果输出的有个"active(running)"(这两个单词是绿色的,上面一行还有个小绿点)证明正在运行中
  2. sevice crond start //如果没有运行这个命令可以启动
  3. service crond stop //关闭服务
  4. service crond restart //重启服务
  5. service crond reload //重新载入配置

创建一个定时任务

可以通过crontab -e命令来编辑定时任务,也可以直接编辑文件。文件位置有两个

  1. 系统配置文件(主配置文件)位置 /etc/crontab
  2. 用户配置文件位置/var/spool/cron,文件名和此用户同名,此用户的cron信息都记录在这个文件中

    打开后大概这个样子

  1. SHELL=/bin/bash
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3. MAILTO=root
  4. # For details see man 4 crontabs
  5. # Example of job definition:
  6. # .---------------- minute (0 - 59)
  7. # | .------------- hour (0 - 23)
  8. # | | .---------- day of month (1 - 31)
  9. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  10. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  11. # | | | | |
  12. # * * * * * user-name command to be executed

不得不佩服人家用文档都能写出图片的效果来。看上图已经很明白了

格式为:

分 小时 每个月的哪一天 月 每周的哪一天 用户名(可省略) 要执行的命令

  • “*” 代表取值范围内的数字
  • “/” 代表”每”
  • “-” 代表从某个数字到某个数字
  • “,” 分开几个离散的数字

    比如我们拿定时执行pwd和一个php脚本来说明

  1. 20 6 * * * pwd 每天的 6:20 执行pwd命令
  2. 20 6 8 6 * pwd 每年的686:20执行pwd命令
  3. 20 6 * * 0 pwd 每星期日的6:20执行pwd命令//注:国外周日是第一天 0表示星期天,1表示星期1,或按照上面代码中写引文。
  4. //字符用法
  5. 20 3 10,20 * * pwd 每月10号及20号的320执行pwd命令(注:“,”用来连接多个不连续的时段)
  6. 25 8-10 * * * pwd 每天8-10点的第25分钟执行pwd命令(注:“-”用来连接连续的时段)
  7. */15 * * * * pwd 15分钟执行一次pwd命令 (每个小时的第15 20 45 60分钟执行pwd命令)
  8. 20 6 */10 * * pwd 每个月中,每隔106:20执行一次pwd命令(这个好像用的很少,每隔几天的不知道怎么写,实在不行可以多建立几个,我也没用到过,如果有用到多的欢迎补充)
  9. 下面来一个执行php脚本的例子(敲黑板,划重点了)
  10. //和命令行中执行php文件是一样的(如果你用的是框架 还支持路由哦)脚本里面想干啥就干啥
  11. */15 * * * * /opt/app/php-5.5/bin/php /data/www/我是项目目录/index.php 我是脚本目录/我是执行的文件

查看日志

/var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log动态观察,也可以用cat或者导出文件查看均可

简单教程到此结束,如果需要更高级的应用,就需要自己动手了。

  1. ---还有一句老话,欢迎评论交流

使用linux下的crontab定时任务跑定时脚本的更多相关文章

  1. linux 下的 crontab 定时任务工具

    以下内容转自:https://www.cnblogs.com/longjshz/p/5779215.html 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep c ...

  2. MySQL定时备份之使用Linux下的crontab定时备份实例

    这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下   复制代码代码如下: ##################################### ...

  3. Linux命令之Crontab定时任务,利用Crontab定时执行spark任务

    Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...

  4. linux下使用crontab实现定时PHP计划任务失败的原因分析

    这篇文章主要介绍了linux下使用crontab实现定时PHP计划任务失败的原因分析,需要的朋友可以参考下   很多人在linux下使用crontab实现PHP执行定时任务却未能成功,不能生成缓存.本 ...

  5. linux下使用crontab定时备份MYSQL数据库的方法:

    摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...

  6. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  7. linux下应用crontab对mysql数据库进行定时备份

    linux下应用crontab对mysql数据库进行定时备份 @(编程) mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份. 我写了一个mysqlbackup. ...

  8. LINUX下使用crontab进行RMAN备份实验

    之前写了脚本,手动执行可以,使用crontab总是无法运行成功,今天下午花了两个小时实验,完成如下: 注意事项:脚本完成首先手动执行,确定可以正常执行. 在crontab中使用,要注意以下几点: 1. ...

  9. linux下的crontab服务

    linux下的crontab服务:1.crontab 是用来让使用者在固定时间或固定间隔执行程序之用在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现.以某一频率执行任务linux缺 ...

随机推荐

  1. 芝麻HTTP:非关系型数据库存储

    NoSQL,全称Not Only SQL,意为不仅仅是SQL,泛指非关系型数据库.NoSQL是基于键值对的,而且不需要经过SQL层的解析,数据之间没有耦合性,性能非常高. 非关系型数据库又可细分如下. ...

  2. js模块编写

    js模块编写 编写模块obj.js //obj.js 'use strict'; //引入模块 const dkplus = require('dkplus.js'); !(function(){ / ...

  3. ThreadLocal原理

    ThreadLocal类可以看作是当前线程的一个局部变量,只有当前线程可以访问,因此是线程安全的. ThreadLocal内部维护了一个ThreadLocalMap类,ThreadLocalMap是一 ...

  4. 【CJOJ1372】【洛谷2730】【USACO 3.2.5】魔板

    题面 Description 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色 ...

  5. MyBatis映射器元素

     映射器是MyBatis最强大的工具,也是我们使用MyBatis时用的最多的工具,映射器中主要有增删改查四大元素,来满足不同场景的需要: 下面是主要元素的介绍:         select:查询语句 ...

  6. NancyFX 第十一章 Bootstrapping

    本章我们将深入Nancy的内部,对Nancy的内部组件进行修改和调整. 那什么是bootstrap哪?字典里是这么介绍的: 一般而言,处于引导中(bootstrapping)是在终端用户可以使用之前开 ...

  7. Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)

    1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...

  8. QT自定义控件插件化简要概述

    1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要 ...

  9. Linux Centos 下安装软件 三种方式(转)

    Linux学习的路还很远呢,各位码农,新年快乐哈! 1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz). 2)另一种是软件的可执行程序 ...

  10. The summary of Interview

    面试汇总 运维工程师日常工作内容 自我介绍对公司的了解 系统管理员的职责 进行系统资源管理.设备管理.系统性能管理.安全管理和系统性能监测: 管理的对象 服务器.用户.服务器的进程及系统的各种资源等. ...