周期性计划任务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

相关推荐

  • systemd及awk

    1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理
    2、描述awk命令用法及示例(至少3例)
    3、描述awk函数示例(至少3例)

    Linux干货 2018-01-17
  • Linux系统管理常用命令

    系统管理工具 进程的分类: CPU-Bound:CPU密集型,非交互。特别消耗CPU的,加密解密,压缩解压 IO-Bound:IO密集型,交互。大量的硬盘读写,例如复制文件 Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pki…

    Linux干货 2017-12-18
  • LVS详解及基于LVS实现web服务器负载均衡

    前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能、高可用的服务器群集,从而以低成本实现最优的服务性能。 集群基础 集群简介 集群(Cluster)是一组相互独立…

    Linux干货 2015-06-01
  • Bash Shell编程初学基础篇之一

     Bash Shell编程初学基础篇之一 说明: 本文仅供初学Linux  Bash  shell学员参考学习,大神们如有兴趣请批评指正!!!    相信对于很多Linux初学者或者仅仅是听说Linux还没有接触过的同学会有一种神秘感或者不敢碰触的感觉,今天就帮大家揭开它的神秘面纱,其实并没有那么深不可测,只…

    Linux干货 2015-03-29
  • parted使用说明

    一.为什么使用parted命令     传统的MBR(Master Boot Record)分区方式,有一个局限:无法支持超过2TB的硬盘分区(单个分区超过2TB)。     GPT(GUID Partition Table)的分区表很好的解决了这个问题,但在Linux系统中,传…

    Linux干货 2015-04-13
  • N25第六周作业

    vim 是vi编辑的升级版,同样有三种工作模式:编辑、命令和一般 模式 #:指定行号位置 #,#:指定多少行到多少行 #,+#:指定范围,多少行开始,加#行 $:最后一行 .:当前行 .,$-1,当前行到倒数第二行 1,$:全文 %:全文 /从上往下,?:从下往上 搜索 /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行 s/要查找的内容…

    Linux干货 2017-01-11