Linux 定时任务

Posted king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 定时任务相关的知识,希望对你有一定的参考价值。

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 系统服务可以正常记录日志服务

[[email protected] ~]# systemctl is-active crond.service rsyslog.service
active
active
[[email protected] ~]# systemctl is-enabled crond.service rsyslog.service
enabled
enabled

[[email protected] ~]# systemctl start crond.service rsyslog.service
[[email protected] ~]# 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
















































































































以上是关于Linux 定时任务的主要内容,如果未能解决你的问题,请参考以下文章

linux设置定时任务

Linux设置定时任务

linux 系统定时任务 服务 详解

linux 系统定时任务 服务 详解

linux 下cron定时任务为啥没执行

linux如何创建PHP定时任务