一、文件管理
文件管理是Linux运维工作中的重要一环,Shell脚本可以快速方便地完成文件的管理。以下为文件管理方面的Shell脚本实例:
1. 查找文件
#!/bin/bash
# 查找当前目录以及子目录下所有扩展名为.c的文件
find . -name "*.c"
上述脚本使用find命令查找当前目录下以及子目录下所有扩展名为.c的文件。find命令可以快速定位某个特定类型的文件,并且可以使用通配符进行模糊匹配。可以根据需要调整查找路径和文件类型。
2. 删除指定文件
#!/bin/bash
# 删除当前目录下所有扩展名为.log的文件
rm -f *.log
上述脚本使用rm命令删除当前目录下所有扩展名为.log的文件。rm命令可以快速方便地删除某个特定类型的文件。
3. 文件备份
#!/bin/bash
# 将当前目录下所有扩展名为.c的文件备份到bak目录,并在备份文件名后面加上日期时间戳
bakdir="./bak"
if [ ! -d $bakdir ]; then
mkdir $bakdir
fi
for file in `ls *.c`
do
cp $file $bakdir/${file}_$(date +%Y%m%d%H%M%S)
done
上述脚本将当前目录下所有扩展名为.c的文件备份到bak目录,并在备份文件名后面加上日期时间戳。使用if判断备份目录是否存在,如果不存在则创建目录。使用for循环遍历符合条件的文件,然后使用cp命令进行备份。可以根据需要调整备份路径和备份文件名格式。
二、进程管理
进程管理是Linux运维工作中的另一个重要方面,Shell脚本可以方便地管理Linux系统中的进程。以下为进程管理方面的Shell脚本实例:
1. 查看指定进程的CPU和内存占用情况
#!/bin/bash
# 查看指定进程的CPU和内存占用情况
pid=`ps -ef | grep nginx | grep -v grep | awk '{print $2}'`
top -p $pid
上述脚本使用ps命令和awk命令查找nginx进程的PID,然后使用top命令查看该进程的CPU和内存占用情况。可以根据需要修改进程名称。
2. 杀死指定进程
#!/bin/bash
# 杀死指定进程
pid=`ps -ef | grep nginx | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]; then
kill $pid
fi
上述脚本使用ps命令和awk命令查找nginx进程的PID,然后使用kill命令杀死该进程。使用if判断进程是否存在,如果存在则杀死进程。
3. 监控指定进程的状态
#!/bin/bash
# 监控指定进程的状态,如果进程挂掉则自动重启
while true
do
pid=`ps -ef | grep nginx | grep -v grep | awk '{print $2}'`
if [ -z "$pid" ]; then
/usr/local/nginx/sbin/nginx
sleep 1
fi
done
上述脚本使用while循环监控nginx进程的状态,如果进程挂掉则自动重启。使用ps命令和awk命令查找nginx进程的PID,如果PID为空则重启nginx进程。使用sleep命令等待1秒钟。
三、系统监控
系统监控是Linux运维工作中的重要方面,Shell脚本可以方便地监控系统的状态。以下为系统监控方面的Shell脚本实例:
1. 监控系统负载
#!/bin/bash
# 监控系统负载,如果负载高于指定阈值(2),则报警
while true
do
loads=`uptime | awk '{print $NF}' | cut -d',' -f1`
if [ `echo "$loads > 2" | bc` -eq 1 ]; then
echo "System load average is too high: $loads"
# 发送报警邮件或短信
fi
sleep 60
done
上述脚本使用while循环监控系统负载,如果负载高于指定阈值(2)则报警。使用uptime命令和awk命令查找系统负载,如果负载高于指定阈值(2)则输出报警信息。可以根据需要调整阈值和报警方式。
2. 监控磁盘空间
#!/bin/bash
# 监控磁盘空间,如果剩余空间低于指定阈值(10GB),则报警
while true
do
free_space=`df -h / | awk '{print $4}' | tail -1`
if [ `echo "$free_space < 10" | bc` -eq 1 ]; then
echo "Disk space is too low: $free_space"
# 发送报警邮件或短信
fi
sleep 60
done
上述脚本使用while循环监控磁盘空间,如果剩余空间低于指定阈值(10GB)则报警。使用df命令和awk命令查找磁盘剩余空间,如果剩余空间低于指定阈值则输出报警信息。可以根据需要调整阈值和报警方式。
3. 监控连接数
#!/bin/bash
# 监控当前连接数,如果连接数高于指定阈值(1000),则报警
while true
do
connections=`netstat -na | grep ESTABLISHED | wc -l`
if [ `echo "$connections > 1000" | bc` -eq 1 ]; then
echo "Too many connections: $connections"
# 发送报警邮件或短信
fi
sleep 60
done
上述脚本使用while循环监控当前连接数,如果连接数高于指定阈值(1000)则报警。使用netstat命令和grep命令查找已建立的连接数,如果连接数高于指定阈值则输出报警信息。可以根据需要调整阈值和报警方式。