一、cron定时任务
1.安装crond服务和crontab工具
(1)相关命令
# 清除yum缓存
yum clean all
# 更新系统的安装包到最新版本
yum update
# 安装cron服务和crontab工具[-y表示yes,没有的话需要手动输入yes]
yum install -y cronie crontabs
(2)验证crond服务
# 检查cond服务是否安装及启动:
yum list cronie && systemctl status crond
# 检查crontab工具是否安装:
yum list crontabs && which crontab && crontab -l
二、crontab 架构
1.执行步骤
# 1.新建|编辑定时任务
crontab -e
# 2.查看定时任务列表[当前用户(root)保存的计划任务]
crontab -l
#或
cat /var/spool/cron/root
# 3.重启crond进程
systemctl restart crond
# 4.查看crond状态
systemctl status crond
2.contab配置文件格式
* * * * * [username] my command
分 时 日 月 周 [执行用户名] 要运行的命令
0-59 0-23 1-31 1-12 0-6
* 取值范围内的所有数字
/ 每
- 某个区间
, 几个数的集合
3.crontab配置文件
- 系统配置文件
/etc/crontab
- 系统用户crontab配置文件保存目录[crontab -e所编辑的文件]
/var/spllo/cron/[目录]
root:/var/spppl/cron/root[文件]
user01:/var/spppl/cron/user01[文件]
# 创建用户
useradd user01
# 使用指定用户登陆系统
su - user01
4.Crontab环境变量
- 添加PATH到/etc/crontab
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_111/bin
# 可以直接在定时任务文件使用java程序
- 在执行具体任务前引入系统/用户环境变量
# [系统级别环境变量]
30 2 * * * source /etc/profile;sh /root/test.sh
# [用户级别环境变量]
30 2 * * * source ~/.bash_profile;sh /root/test.sh
(1)如何增加环境变量
# /etc/profile 或者 /root/.bash_profile
PATH=$PATH:/usr/local/jdk1.8.0_111/bin
export PATH
(2)完成执行脚本
# /root/test.sh
java -version 2> /root/script.out
(3)设置定时任务
# 先使/etc/profile生效[添加环境变量],后使用sh执行脚本文件
* * * * * source /etc/profile;sh /root/test.sh
* * * * * source /root/.bash_profile;sh /root/test.sh
三、实战
1.crontab日志
(1)cron日志保存在系统目录/var/log/cron
# 查看最近的两条cron日志
tail -n 2 /var/log/cron
2.清理系统日志
(1)系统日志的存放位置: /var/log/messages
# /var/log目录下日志[平时主要用到的日志文件]
cron -- 定时任务日志
secure -- 相关ssh服务日志
messages -- 系统总日志
firewalld -- 系统防火墙日志
lastlog -- 登录日志
# 查看当前目录下所有文件的大小
du -sh *
# 清空系统日志 [/dev/null代表一个空文件]
* 1 * * * cat /dev/null > /var/log/messages
(2)同时清理多个日志文件[使用脚本文件]
1). 文件:/root/log_clean.sh
#!/bin/sh
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/secure
2). 定时任务
# 定时执行日志清理脚本
* * * * * sh /root/log_clean.sh
3.crontab备份source code
(1)准备工作
backup -- 备份文件存放目录
script -- 脚本文件目录
www --- 网站根目录
(2)编写执行备份的脚本文件[/data/script/www_backup.sh]
#!/bin/bash
basedir = /data/backup
www_src = $basedir/www_src/$(date +%F_%H%M)
[ ! -d "$www_src" ] && mkdir -p $www_src
cd /data
tar -jpcf $www_src/www.tar.bz2 www
(3)脚本解释说明
1). basedir = /data/backup
> 定义一个变量,名称为basedir
,值为/data/backup
2). $(date +%F_%H%M)
> 获取系统的日期时间,并拼上日期(%F),再拼上小时(%H)和分钟(%M) =》 [2018-03-16_0715]
3). www_src = $basedir/www_src/$(date +%F_%H%M)
> 使用变量basedir的值,再拼接出多层目录,赋值给www_src[值为/data/backup/www_src/{当前日期时间的目录(动态)}]
4). [ ! -d "$www_src" ]
> 相当于if的判断,判断$www_src是否不是一个目录
5). tar -jpcf $www_src/www.tar.bz2 www
> 打包/data/www目录为www.tar.bz2,并放置到$www_src目录下[/data/backup/www_src/{当前日期时间的目录(动态)}/]
(4)创建定时任务
* * * * * sh /data/script/www_backup.sh
(5)重启定时任务使其生效
systemctl restart crond
(6)查看备份文件大小[被备份的原目录是wordpress系统]
# /data/backup/www_src/2018-03-16_0715/
8.4M www.tar.bz2
4.crontab在iptables上的应用
(1)应用场景:
DDOS攻击或匿名暴力破解导致系统无法正常访问
(2)解决之道:
使用crontab集成iptables,实时监控系统的网络状态,及时将可疑的ip地址加入到网络黑名单
(3)iptables简介:
iptables作为Linux下的内核防火墙,能够通过添加相应的规则,检测、修改、重定向、转发和丢弃ip数据包,从而过滤网络数据,实现保护系统网络的功能
CentOS7默认使用firewalld服务维护内核防火墙,我们需要禁用firewalld服务,并安装iptables作为系统默认防火墙。
(4)准备工作
# 查看当前firewalld进程状态
systemctl status firewalld
# 关闭并禁用firewalld
systemctl disable firewalld
systemctl stop firewalld
# 安装iptables服务
yum install iptables-services
[yes]
# 开启iptables服务
systemctl enable iptables
# 启动iptables服务
systemctl start iptables
# 验证iptables是否安装成功
iptables -V
(5)设置网络访问黑名单文件[/data/script/blacklist.txt] (每一行为一个ip地址)
(6)脚本实现[/data/script/firewall.sh]
#!/bin/bash
iptables -F
list = /data/script/blacklist.txt
for line in `cat $list`;do
iptables -I INPUT -s$line -j DROP
echo "$line is dropped into blacklist"
done
(7)脚本解释说明
1). iptables -F
> 清空iptables的所有记录
2). for line in cat $list
;do
> 对/data/script/blacklist.txt循环输出每一行
3). iptables -I INPUT -s$line -j DROP
> 添加一个input链
> -s 相当于source,将每一行的数据,传递给iptables
> -j DROP 相当于一个drop操作,将当前主机接收到的数据包进行一个丢弃操作
=》将blacklist.txt中的ip地址做一个拒绝访问的操作,使黑名单中的ip地址无法访问主机
4). echo "$line is dropped into blacklist"
> 对每一行的ip地址拒绝访问后,输出一条信息提示
(8)创建定时任务
* * * * * source /etc/profile; sh /data/script/firewall.sh
(9)查看iptables拒绝访问主机的ip列表
iptables -nvL
5.crontab在Jenkins上的扩展
(1)Jenkins:java编写的开源、持续、集成工具,最大优势就是将开发人员和运维人员完美的结合在一起。
(2)使用前提
# 安装
yum install jenkins
[y]
# 查看系统java路径
which java
# 查看系统java版本
java -version
[jenkins要求的最低版本要求配置>1.8.0_111]
(3)编辑jenkins的启动配置文件[/etc/init.d/jenkins]
[=>搜索candidates关键词]
默认调用的java目录是/usr/bin/java和/usr/lib/jvm/***/bin/java
添加java的路径
/usr/local/jdk1.8.0_111/bin/java
(4)相关命令
#启动jenkins服务
systemctl start jenkins
# 查看jenkins服务是否正常启动,并查看jenkins服务是否打开8080端口监听服务
lsof -i:8080
(5)在web网页中进行配置并使用jenkins
# 1.访问jenkins的后台地址
10.110.16.5:8080
# 2.登录密码保存在系统的目录下
/var/lib/jenkins/secrets/initialAdminPassword文件中
# 3.自定义jenkins=》安装插件
# 4.创建第一个管理员用户
# 5.创建新任务
1)构建自由风格的软件项目
2)构建触发器 => Build Periodically => 日程表[相当于crontab定时任务的时间表单] => * * * * *
3)构建 => 增加构建步骤 => Execute shell => Command[执行定时任务时执行的操作] => echo "this is a test build"