博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 定时任务
阅读量:7051 次
发布时间:2019-06-28

本文共 3468 字,大约阅读时间需要 11 分钟。

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

转载于:https://www.cnblogs.com/59111618qq/p/10083539.html

你可能感兴趣的文章
SpringMVC之访问静态文件
查看>>
【java设计模式】之 模板方法(Template Method)模式
查看>>
小米手机会不会更好
查看>>
atitit.Sealink2000国际海运信息管理系统
查看>>
android面试总结01 activity生命周期
查看>>
Java 实现策略(Strategy)模式
查看>>
Ubuntu离线安装Sogou拼音(附老版本安装&输入法自启动)
查看>>
springmvc结合base64存取图片到mysql
查看>>
深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow
查看>>
linux 抓包 tcpdump 简单应用
查看>>
mongodb官网文档阅读笔记:与写性能相关的几个因素
查看>>
PHP处理时间格式
查看>>
BestCoder Round #11 (Div. 2)
查看>>
JAVA入门[20]-Spring Data JPA简单示例
查看>>
Python: The _imagingft C module is not installed错误的解决
查看>>
HTTP请求报文和HTTP响应报文
查看>>
第3课 - 初识程序的灵魂
查看>>
WordPress插件扫描工具plecost
查看>>
【PDF】Java操作PDF之iText超入门
查看>>
PHP:第五章——字符串过滤函数
查看>>