Linux 定时任务

牧云@^-^@ 提交于 2020-02-03 02:21:28

1章 定时任务简介
cronie,Linux下的定时任务服务,服务名称为crond,用来在指定时间或周期性的执行一个指定命令。系统很多默认需要周期性执行的任务都是通过crond实现的。
一般重复且有规律的事交给定时任务

1.1 crontab命令是cron table的简写
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作) 尽量不要用
crontab [ -u username] //省略用户表表示操作当前用户的crontab

1.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/secure

1.9定时任务的相关文件

1.9.1/var/spool/cron/ 定时任务的配置文件所在目录

1.9.2/var/log/cron 中查看日志需使用含义命令(过大)
grep/egrep
less 上翻下翻f或空格,b
more
tail /tail -f
head 默认查看文件后十行

1.10 visudo /etc/sudoers

/var/spool/cron/root (root是用户名 root用户的定时任务)
一个命令+一个目录
crontab
/var/spool/cron

1.11 ll /var/log/messages /var/log/secure

rsyslog system log 系统服务可以正常记录日志服务

[root@kingedu-lnb ~]# systemctl is-active crond.service rsyslog.service
active
active
[root@kingedu-lnb ~]# systemctl is-enabled crond.service rsyslog.service
enabled
enabled

[root@kingedu-lnb ~]# systemctl start crond.service rsyslog.service
[root@kingedu-lnb ~]# systemctl enable crond.service rsyslog.service

1.12crond服务启动关闭操作(守护进程)
查看cron服务状态
运用crontab需要启动一个服务crond才行,crond服务通过crontab命令实现 。

1.13查看系统是否启用了crond服务
service crond status

1.14crond的开启和关闭
sudo service crond start //启动服务
sudo service crond stop //关闭服务
sudo service crond restart //重启服务
sudo service crond reload //重新载入配置

1.15显示脚本执行过程
bash -x
sh -x

1.16执行命令过程
1.输入一个命令
2.在PATH里面查找 是否有
3.存在 执行
4.不存在 command not found

 

第2章定时任务特殊符号

2.1 / 下划线 每隔
2.2 - 杠 例 6点至8点,十月至十二月
2.3 , 逗号 单个并合,例 1,2,3

2.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 * * * CMD

ttpd == 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.在脚本开头重新定义一下PATH
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.. /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 found

3.1java环境变量问题
遇到java的内容,都是用绝对路径
在脚本开头重新定义环境变量
python
go
java
php
tomcat
resin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!