1、 crontab命令概念
crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。
crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许
用户拥有自己的crontab文件。
2、检查是否安装了crontab,如果提示未安装请自行安装,crontab安装包在系统光盘里面的pacekage文件夹,也可以进入此网站找 http://rpmfind.net/ 相对应的crontab安装包。
3、 crontab服务启动与关闭。
情况一:正常情况(系统有service命令)
重启服务命令:[root@centos6 /]# service crond restart
启动服务命令:[root@centos6 /]# service crond start
停止服务命令:[root@centos6 /]# service crond stop
情况二:当linux发行的版本没有service这个命令时候,用如下命令进行停止启动:
停止服务:[root@centos6 /]# /etc/init.d/cron空格stop
启动服务:[root@centos6 /]# /etc/init.d/cron空格start
4、 全局配置文件:
crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。
cron.daily是每天执行一次的job
cron.weekly是每个星期执行一次的job
cron.monthly是每月执行一次的job
cron.hourly是每个小时执行一次的job
cron.d是系统自动定期需要做的任务
crontab是设定定时任务执行文件
cron.deny文件就是用于控制不让哪些用户使用Crontab的功能
5、 用户配置文件:
每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.
6、 crontab文件格式:
* * * * * command
minute hour day month week command
分 时 天 月 星期 命令
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
7、 特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
8、在home目录下编写一个test.sh脚本,脚本功能是把/home下ifcfg-eth0这个文本复制到/mnt目录下。
9、运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。
10、查询当前用户定时任务或删除当前用户定时任务。
11、设置crond开机自动启动。
12、实例:
标记:crontab还可以支持系统重启自动执行任务 @reboot /home/test.sh
---------------------
编辑指定用户定时任务
crontab -uroot -e
crontab定时任务不执行的原因
1、重启crontab若是遇见“You (cloudlogin) are not allowed to use this program (crontab) See crontab(1) for more information ”
则切换到root用户,再使用命令
#crontab -u 用户名 命令
然后再重启
2、若是做完了crontab -e添加完任务,并且任务也存在,但是却没有按照任务指定时间执行,则检查
1)查看日志
日志文件位置
默认情况下,crontab中执行的日志写在/var/log下,如:
crontab的日志比较简单,当crond执行任务失败时会给用户发一封邮件。恰巧在我们的一台服务器上发现一个任务没有正常执行,而且crond发邮件也失败了。
通过看mail的日志,看到是磁盘空间不足造成的。
2)查看crontab 是否启动成功,检测crontab 服务是否启动,
/etc/init.d/crond status
没启动则要用下面命令
/etc/init.d/crond start
3)查看命令中操作的文件是否存在,当前用户是否有操作该文件的权限
我这里用的是cloudlogin用户设置
查看命令中操作的文件是否存在,并且当前用户是否有操作该文件的权限
若是没有则要赋予权限或者更换用户(请参看文章 crontab的两种配置方式进行配置)
4)若不是上面原因,则重启下crond服务,命令为
使用 /etc/init.d/crond restart
或者service crond restart(Centos7下为systemctl restart crond)
注意:配置完后都需要重启下crontab使之生效