1章 定时任务简介
cronie,Linux下的定时任务服务,服务名称为crond,用来在指定时间或周期性的执行一个指定命令。系统很多默认需要周期性执行的任务都是通过crond实现的。一般重复且有规律的事交给定时任务1.1 crontab命令是cron table的简写
-e (编辑工作表) -l (列出工作表里的命令)-r (删除工作作) 尽量不要用 crontab [ -u username] //省略用户表表示操作当前用户的crontab1.2编写定时任务命令crontab (不推荐使用)
root用户编写 vim /etc/crontab 1.3 ps -ef |grep crond 查询当前定时任务 1.4复制和打包压缩进程 cpu占用率太高会卡,所以要在业务低谷期进行1.5rpm -ql cronie 可以rpm查看安装包的内容在哪个文件中1.6* * * * * 对应 分时日月周 此处有坑 ** 00 1
1.7定时任务分别存放地点,黑名单
/etc/cron.hourly/ 系统每小时运行这里面的内容一次/etc/cron.daily/ 系统每天运行这里面的内容一次/etc/cron.weekly/ 系统每周运行这里面的内容一次/etc/cron.monthly/ 系统每月运行这里面的内容一次/etc/cron.deny 定时任务的黑名单/etc/cron.tab 定时任务的配置文件之一1.8系统定时任务 +logrotate命令 完成对日志的日志切割/日志轮询/var/log/cron/var/log/messages/var/log/secure1.9定时任务的相关文件
1.9.1/var/spool/cron/ 定时任务的配置文件所在目录
1.9.2/var/log/cron 中查看日志需使用含义命令(过大)
grep/egrep less 上翻下翻f或空格,bmoretail /tail -fhead 默认查看文件后十行1.10 visudo /etc/sudoers
/var/spool/cron/root (root是用户名 root用户的定时任务) 一个命令+一个目录 crontab /var/spool/cron1.11 ll /var/log/messages /var/log/secure
rsyslog system log 系统服务可以正常记录日志服务
[root@kingedu-lnb ~]# systemctl is-active crond.service rsyslog.service activeactive[root@kingedu-lnb ~]# systemctl is-enabled crond.service rsyslog.service enabledenabled[root@kingedu-lnb ~]# systemctl start crond.service rsyslog.service
[root@kingedu-lnb ~]# systemctl enable crond.service rsyslog.service1.12crond服务启动关闭操作(守护进程)
查看cron服务状态 运用crontab需要启动一个服务crond才行,crond服务通过crontab命令实现 。1.13查看系统是否启用了crond服务
service crond status1.14crond的开启和关闭
sudo service crond start //启动服务sudo service crond stop //关闭服务sudo service crond restart //重启服务sudo service crond reload //重新载入配置1.15显示脚本执行过程
bash -x sh -x1.16执行命令过程
1.输入一个命令 2.在PATH里面查找 是否有 3.存在 执行4.不存在 command not found
第2章定时任务特殊符号
2.1 / 下划线 每隔
2.2 - 杠 例 6点至8点,十月至十二月2.3 , 逗号 单个并合,例 1,2,32.4每天的上午7点到上午11点 每2小时运行CMD命令
分 时 日 月 周00 07-11/2 * * * CMD * 07-11/2 * * * CMD 07,09,11 00 06-12/2 * 11 * /usr/bin/httpd.sh 00 07-11/2 * * * CMD 00 07,09,11 * * * CMDttpd == apache Linux httpd命令是Apache HTTP服务器程序。
httpd为Apache HTTP服务器程序。直接执行程序可启动服务器的服务。nginx nginx第3章定时任务9句箴言 第一:定时任务规则之前加注释,谁在什么时间做什么第二:使用脚本代替命令行定时任务
超过两条命令用脚本第三:定时任务中的date命令 %百分号有特殊含义,要加 \
第四:运行脚本一定要用/bin/sh或sh
/bin/sh 或者 sh /king/king.sh 文件644 rw-r--r-- king.sh(默认无x权)第五:定时任务中-命令或脚本结果邮件定向到黑洞或追加到文件中
不记录信息 >/dev/null 2>&1 记录执行过程 >>/king/king.txt 2>&1 2>&1 代表不管标准输出还是错误输出都要如何删除大量小文件 ls *.txt | xargs rm第六:尽量避免不必要的程序及命令输出
第七:打包压缩使用相对路径(切换到目标目录的上一级打包目标)
cd /tar zvhf /... tar.gz etc/第八:定时任务中脚本中的程序文件尽量用绝对路径
不加绝对路径用户的定时任务默认存放用户家目录下系统的定时任务默认放在跟下第九:系统与命令位置有关的环境变量问题环境变量: PS1 LANG PATH 路径 存放命令目录 定时任务运行脚本的时候可以识别的PATH只有/usr/bin和/bin第九 解决方法:1.在脚本开头重新定义一下PATHexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin2.. /etc/profole . 相当于source/dev/null 黑洞 定时任务邮件必须定向到空 >>/dev/null 2>&1
不记录任何信息 >/dev/null 2>&1 ===&>/dev/null === 1>/dev/null 2>/dev/null 记录执行过程 >>/tmp/king.txt 2>&1 == &>>/tmp/king.txt == >>/tmp/king.txt 2>>/tmp/king.txt没有定向到空案例
【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/king 2>&1,时间长了很容易导致硬盘inode空间被占满,从而系统服务不正常。# 定时任务不断给你发邮件
# 邮件服务关闭 # 定时任务不断给你发邮件 发不出去会堆积临时存放起来 /var/spool/postfix/maildrop/ systemctl stop postfix.service 临时关闭 systemctl disable postfix.service 禁止开机自启动Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
显示脚本执行过程
bash -x sh -x执行命令过程
1.输入一个命令 2.在PATH里面查找 是否有 3.存在 执行4.不存在 command not found3.1java环境变量问题
遇到java的内容,都是用绝对路径 在脚本开头重新定义环境变量 python go java php tomcat resin