周期性计划任务crond讲解

crond是Linux或者unix系统的作业调度程序。运用它,在设定的时间段周期性执行某个命令或脚本。下文的例子均在centos 7.3上测试。
一、crond组件
如果centos7.3最小化安装,不一定存在crond服务,需要手动安装,安装之后手动启动并设置以后自行开机启动。
主要有cronie、cronie-anacron、crontabs三个程序包。
cronie: 主程序包,提供crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务
crontabs:包含CentOS提供系统维护任务
二、安装crond服务,简单设置
1、查看是不是安装cron服务:
[root@local ~]# rpm -qa cronie
2、不显示自动安装crond服务包,如果没有此服务包,则显示Error: Nothing to do
[root@local ~]# yum install cronie -y >/dev/null
[root@local ~]# rpm -qa cronie
cronie-1.4.11-14.el7_2.1.x86_64
3、查看是不是启用crond启用
[root@local ~]# systemctl status crond
crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: inactive (dead)
4、启动crond服务
[root@local ~]# systemctl start crond.service
5、检查crond状态
[root@local ~]# systemctl status crond
crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since Sun 2017-03-26 17:50:16 CST; 3s ago
Main PID: 12895 (crond)
CGroup: /system.slice/crond.service
└─12895 /usr/sbin/crond -n
6、检查服务是不是开机自动动激活
[root@localhost ~]# systemctl is-enabled crond.service
enabled
如果不是则使用以下命令设置当前系统运行级别开机自动激活。
[root@localhost ~]# systemctl enable crond.service
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
三、crond用户作业
讲解一些在运维工作中基本的使用,如何通过命令方式添加周期性任务。
1、查看当前用户存在的周期性任务
[root@localhost ~]# crontab -l
no crontab for root
当前用户root没有周期性任务
2、单个添加当前用户的周期性任务
[root@localhost ~]# crontab
输入命令crontab回车后,等待用户输入周期性任务,输入格式为:
# 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
举个栗子:
* * * * * root /usr/bin/date >> /mnt/abc.txt
输入后回车等待输入下一个计划任务,如果结束按Ctrl+D结束
每分钟把时间当前时间追加输出至/mnt/abc.txt文件中,abc.txt文件事先存在。
[root@localhost mnt]# cat abc.txt
Sun Mar 26 12:16:01 EDT 2017
Sun Mar 26 12:17:01 EDT 2017
Sun Mar 26 12:18:01 EDT 2017
Sun Mar 26 12:19:01 EDT 2017
Sun Mar 26 12:20:01 EDT 2017
3、修改当前用户的周期性任务
[root@localhost ~]# crontab -e
回车之后会以vi方式打开当前用户的所有周期性任务,此时可以添加或删除、更改当前用户的所有周期性任务。
*/2 * * * * root /usr/bin/date >> /mnt/abc.txt
修改为每两分钟显示当前时间追加至/mnt/abc.txt中。
[root@localhost mnt]# crontab -l
*/2 * * * * root /usr/bin/date >> /mnt/abc.txt
4、删除当前用户的周期性任务
[root@localhost mnt]# crontab -r
[root@localhost mnt]# crontab -l
no crontab for root
5、交互式模式移除指定任务
[root@localhost mnt]# crontab -i
同-r一同使用
6、补充:时间格式表示
 时间表示法:
(1) 特定值
给定时间点有效取值范围内的值
(2) *
给定时间点上有效取值范围内的所有值
表示“每…”
(3) 离散取值
#,#,#
(4) 连续取值
#-#
(5) 在指定时间范围上,定义步长
/#: #即为步长
特殊时间字段表示:
 @reboot Run once after reboot.
 @yearly 0 0 1 1 *
 @annually 0 0 1 1 *
 @monthly 0 0 1 * *
 @weekly 0 0 * * 0
 @daily 0 0 * * *
 @hourly 0 * * * *
四、crontab权限管理
cront通过/etc/cront.{allow,deny}两个文件,进行权限管理,控制用户是否能执行cront任务,系统默认创建/etc/cront.deny文件,不存在/etc/cront.allow:
/etc/cront.allow 存在,则/etc/cront.deny不生效,只有文件定义的使用者才能使用 crontab 命令 ,没有在这个文件中的使用者则不能使用,即使没有写在cront.deny 当中;
/etc/cront.allow 不存在, /etc/cront.deny 生效,系统 cront.deny文件定义的使用者不能使用 cront ,而没有在这个 cront.deny 文件中的使用者则可使用 crontab 命令;
如果两个文件都不存在,只有 root 可以使用 crontab 命令 。
即白名单优先管理权限,默认没有/etc/cron.allow文件,只要创建,仅列出的允许,其他都拒绝。
以上仅讲解crond服务一部分功能,未讲解系统的周期性任务如何配置,自定义系统的周期性任务等。

原创文章,作者:chenbin,如若转载,请注明出处:http://www.178linux.com/71931

(1)
chenbinchenbin
上一篇 2017-03-27
下一篇 2017-03-27

相关推荐

  • apache工作模式及虚拟主机的配置

    apache的工作模式 MPM 名词解释MPM   Multipath Process Module 多道处理模块。Linux中常使用prefork worker event三种MPM 即apache常用的三种工作模式。 prefork prefork为多进程模型,每个进程响应一个请求。其工作过程简单说来就是一个主进程:负责生成n个 子进程(子进程…

    Linux干货 2016-07-02
  • 软件包管理利器之一&RPM

      概述:我们知道使用源代码进行软件编译可以具有定制化的设置,但对于Linux distribution的发行商来说,则有软件管理不易的问题,毕竟不是每个人对于操作系统都非常的熟悉,不是每个人都会进行源代码编译的,因此如果能够将软件现在相同的硬件与操作系统上编译好才发行的话,如果再加上简易的安装/删除/管理等机制,则对于软件管理会简单的多…

    Linux干货 2016-08-24
  • grep的使用,正则表达式

    文本处理grep     grep :根据模式去搜索文本,并将匹配到的文本显示出来 pattern(模式):文本字符和正则表达式的元字符组合而成的匹配条件 正则表达式:(REGular EXPression)正则表达式就是处理字符串的方法,通过一些特殊字符的辅助,让用户轻松方便的达到查找、删除、修改特定字符串的处理程序 grep 的用法     name: …

    Linux干货 2017-11-25
  • bind的安装实现

    首先介绍一下我的测试环境:centos 7+入网(为了试行一下自己的安装文档,才装的虚拟机) 1> yum install bind bind-chroot -y     因为刚刚安装的虚拟机,这里我就不检查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干货 2016-03-20
  • N25第八周博客作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;     不在线的主使用红色显示; #!/bin/bash trap ‘mytrap’ INT mytra…

    Linux干货 2017-02-26
  • 第十三周作业

    “1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; …

    Linux干货 2017-08-13