企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 一、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配置