1. 使用root用户清空/var/log/messages日志。要保留这个日志的最后100行。
1. 判断当前执行脚本的用户是否是root用户,普通用户没有权限执行该脚本
2. 判断该日志文件是否存在
3. 保留这个日志最近的100行内容
#第一种方法
[root@shell /scripts]# cat if-10.sh
#!/bin/bash
#1.判断当前执行脚本的用户是否是root用户
if [ "$USER" == "root" -a $UID -eq 0 ];then
#2.判断/var/log/messages文件是否存在
if [ -f /var/log/messages ];then
#保留该日志的最近100行内容
tail -100 /var/log/messages >/var/log/messages.bak && mv -f /var/log/messages.bak /var/log/messages
if [ $? -eq 0 ];then
echo "日志清空成功!最近100行内容也保存成功!"
else
echo "日志清空失败!最近100行内容也保存失败!"
fi
else
echo "/var/log/messages 文件不存在!"
exit
fi
else
echo "当前用户$USER 不是超级管理员,没有权限执行该脚本。"
fi
[root@shell /scripts]# wc -l /var/log/messages
1113 /var/log/messages
[root@shell /scripts]# mv /var/log/messages /var/log/messages.txt
[root@shell /scripts]# sh if-10.sh
/var/log/messages 文件不存在!
[root@shell /scripts]# mv /var/log/messages.txt /var/log/messages
[root@shell /scripts]#
[root@shell /scripts]# sh if-10.sh
日志清空成功!最近100行内容也保存成功!
[root@shell /scripts]# wc -l /var/log/messages
100 /var/log/messages
#第二种方法,不要使用if里面套if
2. 判断一个服务是否正常启动 sshd
1. 怎么判断一个服务是否正常启动 通过运行状态判断
2. 判断这个服务的端口号是否存在
3. 判断这个服务的进程是否存在
[root@shell /scripts]# cat if-11.sh
#!/bin/bash
#1.判断服务是否在运行状态
Server_Status=$(systemctl status $1 | awk '/Active/{print $2}')
#2.根据变量值的状态进行判断
if [ "$Server_Status" == "active" ];then
echo "服务$1 在运行中.....状态为:${Server_Status}....."
else
echo "服务$1 不在运行中....状态为:${Server_Status}....."
fi
#3.判断服务名称是否是mariadb
if [ "$1" == "mariadb" ];then
Server=mysqld
else
Server=$1
fi
netstat -lntp| grep $Server &>/dev/null
if [ $? -eq 0 ];then
echo "服务$1 端口号存在........"
else
echo "服务$1 端口号不存在......"
fi
#5.判断服务的进程是否存在
ps aux | grep $1 |grep -Ev "grep|pts" &>/dev/null
#6.根据返回值的结果进行判断
if [ $? -eq 0 ];then
echo "服务$1 进程存在......."
else
echo "服务$1 进程不存在....."
fi
#第二种
[root@shell /scripts]# cat if-11.sh
#!/bin/bash
#1.判断服务是否在运行状态
Server_Status=$(systemctl status $1 | awk '/Active/{print $2}')
#2.根据变量值的状态进行判断
if [ "$Server_Status" == "active" ];then
echo "服务$1 在运行中.....状态为:${Server_Status}....."
else
echo "服务$1 不在运行中....状态为:${Server_Status}....."
fi
#3.判断服务名称是否是mariadb
if [ "$1" == "mariadb" ];then
netstat -lntp| grep mysqld &>/dev/null
#4.根据返回值进行判断结果
if [ $? -eq 0 ];then
echo "服务mariadb 端口号存在........"
else
echo "服务mariadb 端口号不存在......"
fi
else
netstat -lntp| grep $1 &>/dev/null
if [ $? -eq 0 ];then
echo "服务$1 端口号存在........"
else
echo "服务$1 端口号不存在......"
fi
fi
#5.判断服务的进程是否存在
ps aux | grep $1 |grep -Ev "grep|pts" &>/dev/null
#6.根据返回值的结果进行判断
if [ $? -eq 0 ];then
echo "服务$1 进程存在......."
else
echo "服务$1 进程不存在....."
fi
3. 根据不同的操作系统版本进行安装yum源
[root@shell /scripts]# cat if-12.sh
#!/bin/bash
#1.定义变量,定义版本
Version=$(awk '{print $(NF-1)}' /etc/redhat-release)
#2.根据操作系统的版本号进行判断
if [ ${Version%%.*} -eq 7 ];then
echo "当前操作系统版本为7系列......"
#3.测试当前系统的网络连通情况
ping -c1 -W1 www.baidu.com &>/dev/null
#4.根据测试网络的返回值进行判断
if [ $? -ne 0 ];then
echo "当前系统的网络不可达!不能进行下载更新Yum仓库!"
exit
else
echo "移除旧的Yum仓库................"
rm -f /etc/yum.repos.d/* && echo "旧的Yum仓库移除完毕!" || echo "旧的Yum仓库移除失败!"
echo "开始更新下载Yum仓库Base源............"
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null && echo "Yum仓库的Base源更新成功!" || echo "Yum仓库的Base源更新失败!"
echo "开始更新下载Yum仓库Epel源............"
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null && echo "Yum仓库的Epel源更新成功!" || echo "Yum仓库的Epel源更新失败!"
echo "当前操作系统7系列的Yum源更新下载完毕!"
exit
fi
elif [ ${Version%%.*} -eq 6 ];then
echo "当前操作系统版本为6系列......"
#5.测试当前系统的网络连通情况
ping -c1 -W1 www.baidu.com &>/dev/null
#6.根据测试网络的返回值进行判断
if [ $? -ne 0 ];then
echo "当前系统的网络不可达!不能进行下载更新Yum仓库!"
exit
else
echo "移除旧的Yum仓库................"
rm -f /etc/yum.repos.d/* && echo "旧的Yum仓库移除完毕!" || echo "旧的Yum仓库移除失败!"
echo "开始更新下载Yum仓库Base源............"
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo &>/dev/null && echo "Yum仓库的Base源更新成功!" || echo "Yum仓库的Base源更新失败!"
echo "开始更新下载Yum仓库Epel源............"
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null && echo "Yum仓库的Epel源更新成功!" || echo "Yum仓库的Epel源更新失败!"
echo "当前操作系统6系列的Yum源更新下载完毕!"
exit
fi
else
echo "当前操作系统的版本目前不支持下载更新Yum源。"
fi