crontab的安装和使用

cron工具简介:

  cron是Linux系统中最有用的工具之一,cron作业是在指定时间到来时被调度执行的作业
  最常见的自动化系统管理和自动维护工作,比如每天发出的按计划完成了备份的通知,或者是按计划定时清理/tmp/目录的通知。还有很多Web应用程序也需要执行定时作业。
  Cron本身是一个守护进程,在后台运行,通过配置文件“crontab”来根据时间调度指定的作业执行。
  crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs

一、cron 服务的启动与关闭

1、ubuntu安装cron

安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l

2、centOS安装cron

centOSs安装cron:
(1)vixie-cron 软件包是 cron 的主程序;
(2)crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

yum install vixie-cron
yum install crontabs

配置:

service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态

在CentOS系统中加入开机自动启动:

chkconfig --level 345 crond on

二、使用

1、启动Cron服务
service cron start
2、使用Cron帮助

如果cron工作正常,那么你可以使用man命令查看其手册描述的详细用法。(退出按下q键或h键)

man crontab
3、命令格式
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
4、命令功能

  通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

5、对Cron作业进行列表显示
crontab -l	#列出当前用户计划的cron作业
crontab -l -u username	#列出指定用户的cron作业
6、编辑Cron作业

第一次进入的时候要选择编辑器,选择后你可以配置新cron作业了,一般是选3

crontab -e	#添加一个新cron作业,或者是编辑现有的cron作业

例:

* * * * * echo "test crontab is work or not" >> /var/www/html/testcrontab.txt	#每分钟输出

Cron表达式详解参考https://blog.csdn.net/longgeaisisi/article/details/90400969

7、移除Cron作业
crontab -r	#移除已经计划的cron作业
crontab -ir	#移除所有已计划的cron作业,且无需再次确认

附:

-u user:用来设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
8、用Crontab计划任务

  除了通过配置文件来处理计划cron作业之外,还有别的方法可以做到。如果你查看/etc目录,你会发现有这样的目录:cron.daily、cron.hourly、cron.monthly等等。因此,把cron脚本放入这些目录中,那么系统会根据这些目录名定时执行这些作业脚本的。

9、crontab 文件格式

crontab文件格式

*表示任何时候都匹配,代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
"a,b,c" 表示a或者b或者c 执行命令,可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
"a-b" 表示a到b之间执行命令,可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
"*/a" 表示每 a分钟(小时等) 执行一次,可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
crontab 不能编辑系统级的 任务

三、crontab 的配置文件

文件说明
/etc/crontab全局配置文件
/etc/cron.d这个目录用来存放任何要执行的crontab文件或脚本
/etc/cron.deny该文件中所列用户不允许使用crontab命令
/etc/cron.allow该文件中所列用户允许使用crontab命令
/var/spool/cron/所有用户crontab文件存放的目录,以用户名命名,比如你是root 用户,那么当你添加任务是,就会在该路径下有一个root文件。
/var/log/croncrontab 的日志文件

四、注意

1、环境变量
环境变量的值,在crontab 文件中获取不到,所以要注意,可以写脚本
2、%
crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%

59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh 

3、新创建的cron作业,不会马上执行,至少要过2分钟才执行。如果重启cron服务则会马上执行。


参考:
https://blog.csdn.net/longgeaisisi/article/details/90477975

在Ubuntu 14.04使用cron实现作业自动化

https://blog.csdn.net/qq_32923745/article/details/78286385

https://blog.csdn.net/leonnew/article/details/78599073

Linux定时计划反弹shell

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页