一、Cron服务
1)概念介绍

cron是服务名称。 crond是后台进程,用来执行脚本,在系统中一直会运行。
crontab是一个工具,用来管理定时任务列表,定制好的计划任务,需要启动crond服务(系统默认安装),crond服务是通过crontab命令实现。

2)crontab工作

运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)。
cron执行时,要读取三个地方的配置文件:一是/etc/crontab,二是/etc/cron.d目录下的所有文件,三是每个用户的配置文件一般位于/var/spool/cron目录下

3)运行日志查看

a、cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可查看命令执行的状态
b、标准输出,错误输出重定向到crod.log(可自行定义) ,在执行命令后面增加 >>/opt/cron.log 2>&1
c、如果不需要日志,避免产生垃圾文件可以改成(linux的回收站)>>/dev/null 2>&1

二、cron服务启动

[root@CentOS7-0001 /]# /sbin/service crond status     //查看状态
[root@CentOS7-0001 /]# /sbin/service crond start     //启动
[root@CentOS7-0001 /]# /sbin/service crond stop      //停止
[root@CentOS7-0001 /]# /sbin/service crond restart    //重启
[root@CentOS7-0001 /]# /sbin/service crond reload    //重载

默认不会开机启动,如需开机启动在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start
即可。 CentOS7的rc.local不具备执行权限,需要授权

[root@CentOS7-0001 /]# chmod +x /etc/rc.d/rc.local

三、cron的三种配置方式

系统级:编辑 /etc/crontab文件,添加执行命令 用户级 :执行 crontab -e 命令,然后添加上图中的最后一条语句保存即可。
不同点 : /etc/crontab为系统级任务,多用户均可访问执行,而crontab -e是用户自定义的定时任务,不是多用户共享的,所以比较推荐使用这种方式

1、用户级任务crontab -e(常用)

执行 crontab -e 命令,然后最后添加一条语句保存即可。 查看当前用户的cron配置,使用 crontab -l
编辑当前用户的cron配置,使用 crontab -e 删除当前用户的cron配置,使用 crontab -r

示例:
*/5 * * * * /opt/software/rsyncfile.sh >/dev/null 2>&1
0 2 1 4 * /opt/software/rsyncfile_day.sh >/dev/null 2>&1

2、系统级任务(少用)

如果是『系统性任务』时,就要编辑 /etc/crontab 这个文件,crontab -e 这个 crontab 其实是
/usr/bin/crontab 这个运行档,但是 /etc/crontab 可是一个『纯文字档』,必须用 root
的身份编辑一下这个文件。直接编辑/etc/crontab文件,添加执行命令。但是一般不建议这样做,/etc/cron.d目录就是为了解决这种问题而创建的。
例如,增加一项定时的备份任务,我们可以这样处理:在/etc/cron.d目录下新建文件backup.sh,内容如下: * 1 * * *
root /sbin/mon_zetc_logtar.sh >> /dev/null 2>&1
cron进程执行时,就会自动扫描该目录下的所有文件,按照文件中的时间设定执行后面的命令。

3.用户级任务/var/spool/cron/(少用)

直接将运行的程序写在用户的配置文件里边.比如像让zhanhj用户执行一个cron任务
可以在/var/spool/cron/目录下边创建一个文件zhanhj,将* 1 * * *
/usr/local/etc/rc.d/lighttpd restart 写入zhanhj文件,保存退出即可
注意zhanhj是一个文件,不是目录。

四、扩展权限设置(少用)

1)拒绝用户使用crontab任务 在/etc/cron.deny中添加要拒绝的用户名
2)允许用户访问crontab任务在/etc/cron.allow中添加要拒绝的用户名
在/etc/cron.allow中添加要允许的用户名,格式如下: /etc/cron.allow优先于/etc/cron.deny配置

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐