cron运行检讨
crond做事的启动及关闭通过service crond status查看crond做事是否被开启。
cron做事状态检讨

上图表明当前系统中,crond做事正在运行,其他的几个指令如下
# 开启crond做事service crond start# 关闭crond做事service crond stop# 重启crond做事service crond restart# 检讨crond状态service crond status# 重新载入配置service crond reload
crond配置文件
crond的配置文件紧张存储于以下三个位置:
/var/spool/cron/目录下。该目录下存储了所有用户(包括root用户)的crontab任务的配置文件,每个配置文件以创建者的用户名命名,如:/var/spool/cron/root配置文件为root用户创建的crontab任务。/etc/crontab文件。该文件一样平常用来卖力安排系统管理员制订的掩护系统以及其他任务的crontab配置文件。查看该文件,如下crontab文件
从这里和上面检讨crond状态的信息对应,可以看到发送邮件到root是失落败的,此处可以通过配置真实email地址实现信息发送功能。
其下的Example先容了指令配置的格式,常见的配置办法如下
# 每小时的1分实行的任务,即一小时实行一次01 root run-parts /etc/crons/cron.hourly# 每天2点1分实行的任务,即一天实行一次01 2 root run-parts /etc/crons/cron.daily# 周日2点1分实行任务,即每周实行一次01 2 0 root run-parts /etc/crons/cron.weekly# 每月1号2点1分实行任务,即每月之星一次01 2 1 root run-parts /etc/crons/monthly
前面5个数字用于制订任务实行韶光及周期,接着的是root表示实行的级别是root身份,也可以变动其他用户身份。run-parts后面接的是一个文件信息,是一个目录内/etc/crons/cron.hourly的所有可实行文件。即所有定义在cron.hourly中的实行任务,都会在每一小时的第一分钟实行。
/etc/cron.d/目录。这个目录用来存放任何要实行的crontab文件或脚本。crontab格式定义crontab的定义格式如下。最开始的五个用于描述韶光和周期,是最为主要的定义,之后便是要定期实行的命令。
command
对韶光周期的阐明如下表格
项目
取值范围
含义
第一个
0~59
一小时中的第几分钟
第二个
0~23
一天中的第几个小时
第三个
1~31
一月当中的第几天
第四个
1-12
一年当中的第几个月
第五个
0~6
一周当中的星期几(0为周日)
大略的例子
# 每小时的第2分钟实行export.sh任务2 /bin/sh export.sh# 每小时0分实行export.sh,相称于每小时实行一次0 /bin/sh export.sh# 每天凌晨4.20分实行export.sh任务20 4 /bin/sh export.sh# 每月12号凌晨4点20分实行export.sh任务20 4 12 /bin/sh export.sh# 每年7月12号凌晨4点20分实行export.sh任务,一年实行一次20 4 12 7 /bin/sh export.sh# 每周一凌晨4点20分实行export.sh任务20 4 1 /bin/sh export.sh# 除了单一的数值配置外,cron还支持一个项目配置多个数值,每个项目的多数值以,分割,两个项目之间以空格分隔,格式不能缺点# 6月12月的凌晨4点和下午4点的20分、25分、35分实行export.sh任务20,25,35 4,16 6,12 /bin/sh export.sh# 每一个项目,还可以利用/2的格式,表示每隔多久实行一次# 每两小时实行一次export.sh任务0 /2 /bin/sh export.sh
创建crontab任务crontab -e 用于编辑某一用户的cron做事
首先创建一个脚本,打印一行信息(脚本位置:/data/sh/hello.sh),如下
#!/bin/shecho "hello, this is a task.[$(date +'%F %H:%M:%S')]" >> /data/sh/log.log
通过crontab -e,并添加实行该脚本的任务,每分钟实行一次。
crontab -e# 每分钟实行一次/1 /bin/sh /data/sh/hello.sh
保存后,监控/data/sh/log.log文件,会每分钟打印一越日记信息
hello, this is a task.[2021-08-11 14:06:01]hello, this is a task.[2021-08-11 14:07:01]
crontab -l列出某一用户的所有cron做事详情列表信息
crontab -l# /1 /bin/sh /data/sh/hello.sh
cron做事列表
crontab -r 删除用户的cron做事# crontab -r 将删除当前用户的所有cron做事crontab -r# 查询用户做事crontab -l# no crontab for root
crontab -r将删除所有任务,因此须要谨慎利用,一样平常情形下,可以通过编辑删除某一个不须要的任务,不会利用删除功能。
crontab运用示例当前业务压力较大,一个基于java的web程序,并发能力不敷,数据查询IO压力较大,会导致用户做事无法正常利用。一方面开拓职员对该运用进行优化,其余一方面须要开拓监控程序监测web运用是否能够正常相应,当无法正常相应时,重启做事,临时办理系统无法相应问题。
定制监控tomcat状态脚本,当创造状态不为200时,则重启tomcat,保存至/data/sh/boot.sh#!/bin/sh# 监控tomcat进程,挂了实行重启操作# 做事器名称server_name=运用做事平台# tomcat启动脚本地址tomcat_start=/opt/tomcat/bin/startup.sh# 定义所要监控的页面地址或接口地址req_url=http://www.abc.com/# 日志输出定义get_response_code=/data/sh/logstomcat_check_log=/data/sh/logs/check.logcheck(){ # 获取tomcat的进程id tomcat_id=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}') echo "[i]$tomcat_id." echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]" if [ -n "$tomcat_id" ];then echo "[info]tomcat进程ID为:$tomcat_id." # 获取返回状态码 response_code=$(curl -s -o $get_response_code -m 10 --connect-timeout 10 $req_url -w %{http_code}) if [ $response_code -eq 200 ];then echo "[info] 返回码为$response_code,tomcat做事正常." else echo "[error] tomcat访问出错" echo "[error] 开始重启tomcat" kill -9 $tomcat_id sleep 5s $tomcat_start fi else echo "[error] 进程不存在, tomcat自动重启..." $tomcat_start fi echo "-----------------"}check>>$tomcat_check_log
创建crontab任务,每10分钟监测一次tomcat状态
crontab -e/10 /bin/sh /data/sh/boot.sh
以上流程完成后,即可监控tail -f /data/sh/logs/check.log日志,间隔10分钟监测做事状态,200时打印功能正常,当状态不为200时,则自动重启tomcat。