Linux系统定时任务

在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务。

  1. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

使用命令/etc/init.d/crond status检查服务是否处于运行状态,

使用命令/etc/init.d/crond start 启动定时任务

使用命令chkconfig crond on 设置开机启动

[root@localhost ~]# /etc/init.d/crond status

crond is stopped

[root@localhost ~]# /etc/init.d/crond start

Starting crond: [ OK ]

[root@localhost ~]# chkconfig crond on

[root@localhost ~]#
  1. 定时任务的写法

crontab -e    编辑定时任务

crontab -l 查看定时任务

*    *    *    *    *    cmd

minute hour day month week command

分    时    日    月    周    +    执行的命令

*/    表示间隔

,    表示和

  • 表示多少到多少
  1. 定时任务的取值范围,可以使用命令cat /etc/crontab查看相应配置

[root@localhost ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

每个时间参数的取值范围为0-59,0-23,1-31,1-12,0-6(7相当于0)

  1. 注意事项

a.    定时任务使用命令时最好使用绝对路径

b.    每个定时任务(脚本等)一定要加注释(君子协议)

c.    特殊符号需要转义如:

* * * * * echo "`date +\%F\ \%T`" >>/tmp/time.txt

d.    最好不要让执行的命令有输出,如果避免不了有输出,就定向到空(黑洞)

避免的做法:

*/1 * * * * /usr/sbin/ntpdate ntp5.aliyun.com >/dev/null 2>/dev/null

*/1 * * * * /usr/sbin/ntpdate ntp5.aliyun.com &>/dev/null

标准输出    1>(默认为标准输出)

错误输出    2>

黑洞:/dev/null 重定向到黑洞中的内容全部消失

e.    定时任务中严禁使用相对路径

f.    尽量使用crontab -e来添加定时任务

crontab -e定时任务的文件路径实际就是/var/spool/cron/root可以换在此文件中编辑

原因是:crontab带语法检查出现错误时会报错,适合做定时任务测试

g、    注意:定时任务的命令在编辑之前一定要在命令行先测试成功后再用

5、定时任务举例

1)每隔一分钟追加输出重定向1234567到a.txt

*/1 * * * * echo 1234567 >>/tmp/a.txt

[root@localhost ~]# crontab -e

crontab: installing new crontab

[root@localhost ~]# crontab -l

*/1 * * * * echo 1234567 >>/tmp/a.txt

2)每隔两小时每十分钟重启一下sshd服务

10 */2 * * * /etc/init.d/sshd restart

3)每周三下午六点整echo jiaozuoye

00 18 * * 3 echo jiaozuoye

4)每天下午的两点和四点整echo 京东秒杀

00 14,16 * * * echo "京东秒杀"

5)每年的3月,6月,11月的1-7号的早上八点到晚上八点echo "大酬宾"

00 8-20 1-7 3,6,11 * echo 大酬宾

6)#上课

30 9 * * 0 /oldboy.sh &>/dev/null

方法一:

echo '#上课

> 30 9 * * 0 /oldboy.sh &>/dev/null>>/var/spool/cron/root

方法二:

echo -e '#上课\n30 9 * * 0 /oldboy.sh &>/dev/null' >>/var/spool/cron/root

6、在定时任务的创建过程中,如果系统开启了postfix邮件服务,则每创建成功一个定时任务都会收到一封邮件

/etc/init.d/postfix start 启动邮件服务

mail    查看邮件

U 31 Cron Daemon Sun Apr 1 16:05 24/768 "Cr"

U表示未看    最下面可查看邮件数量

输入数字查看某一封邮件

输入q退出

mailq     查看未发生的邮件队列

>/var/spool/mail/root 清空系统邮件

每个用户的邮件都放在/var/spool/mail下以用户名命名的目录下面

博主原创文章,转载请务必注明出处

Linux学习之九-Linux系统定时任务的更多相关文章

  1. Linux学习之二-Linux系统的目录结构

    Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...

  2. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  3. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  4. linux学习书籍推荐linux学习书籍推荐

    引用地址:http://www.cnblogs.com/notepi/archive/2013/06/15/3137103.html Linux 学习书目推荐 Linux基础 1.<Linux与 ...

  5. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  6. linux学习之九 学习过程总结

    ~写在前面 首先非常感谢孟老师的悉心讲解,使用这种新颖的教学方式(MOOC课堂+博客),也感到非常有幸随着老师的思路对linux的内核进行了初步的系统学习.结合代码和gdb调试工具跟踪分析对linux ...

  7. Linux学习之Centos(三)------系统文件目录及含义详解

    Linux学习之Centos 之三------文件目录及含义 在了解了每个文件的相关种类与属性,以及了解了如何更改文件属性/权限的相关信息后,再来要了解的就是, 为什么每套Linux distribu ...

  8. Linux学习之十-Linux系统时间

    Linux系统时间 1.date命令用于查看以及修改Linux系统的时间,关于date命令的详细帮助文档如下 [root@localhost ~]# date --help Usage: date [ ...

  9. Linux学习笔记(21) Linux日志管理

    1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...

随机推荐

  1. Python3之类和实例

    面向对象的重要概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如学生类Student,而实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法,单各自的数据可能 ...

  2. 第十五章 单点登录——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个 ...

  3. SVN安装使用【转】

    SVN使用教程总结   SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Sub ...

  4. leetcode903 Valid Permutations for DI Sequence

    思路: dp[i][j]表示到第i + 1个位置为止,并且以剩下的所有数字中第j + 1小的数字为结尾所有的合法序列数. 实现: class Solution { public: int numPer ...

  5. docker中使用Mysql8+phpmyadmin

    现在基本装这套都用docker了,有一些小坑在里面,简单说一下. 运行mysql比较简单,参考mysql⭐Docker Official Images,需要注意不要忘记暴露端口给phpmyadmin用 ...

  6. Quartz.Net入门 - Net作业调度

    背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...

  7. Linux内核编译、安装流程

    原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...

  8. [转载]Oracle触发器详解

    转载自http://blog.csdn.net/indexman/article/details/8023740/ 触发器是许多关系数据库系统都提供的一项技术.在oracle系统里,触发器类似过程和函 ...

  9. 给出一个javascript的Helloworld例子

    1.基础知识:Helloworld:例 1.1<html><head>    <!--  如果你用notepad建立一个txt之后你再改为html,一定在存时,要存成ut ...

  10. SQL,NoSQL和NewSQL

    一:概念 SQL(Structured Query Language):数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...