shell训练计划30天之第十二天

例子1 每日一文件

要求

按照xxxx年-xx月-xx日每日生成一个文件

例如生成文件为2017-02-20.log

不用考虑cron

核心:

date用法

df命令

 

#!/bin/bash

time=`date+%F`

dir=/data/logs/disklog

if [ ! -de $dir ]

then

mkdir -p $dir

fi

df -h >$dir/$time.log

find $sdir/ -mtime +365 | xargs rm

 

例子2 根据日志统计访问量

要求:统计日志中每个IP 访问量有多大

核心:awk、sort、uniq

#!/bin/bash

awk '{print $1} ' 1.log | sort |uniq -c | sort -n -r

 

 

 

 

例子3 统计内存总使用量

要求:写一个脚本计算一下linux系统所有进程占用内存大小的和

核心:ps用法(ps aux )for循环、加法运算

 

 

#!/bin/bash

 

for n in `ps aux | grep -v 'TIME COMMAND' | awk '{print $6}' `

do

sum=$[$sum+$n]

done

echo $sum

~

 

例子4 检测机器存活

要求:设计一个脚本,架空远程的一台机器(假设IP为180.163.26.39)的存活状态,当发现宕机时发一封邮件给自己

核心要点

ping -c10 180.163.26.39

 

#!/bin/bash

a=` ping -c5 192.168.1.132 | grep 'packet' | awk -F '%' '{print $1}' | awk '{print $NF}'`

name=123@qq.com

if [ -z "$n" ]

then

echo "脚本有问题"

python mail.py $name "检测机器存活脚本$0有问题" “获取变量的值为空”

exit

else

n1=`echo $a | s/[0-9]//g`

if [ -n "$n" ]

then

echo "脚本有问题"

python mail.py $name "检测机器存活脚本$0有问题" “获取变量的值不是纯数字”

fi

fi

while :

do

if [ $a -ge 50 ]

then

python /root/bin/mail.py $name "机器宕机" "丢包率为$a%"

fi

sleep 30

done

 

 

 

例子5 批量修改文件

要求:找到/123目录下所有后缀名为.txt的文件

1.批量修改txt为txt.bak

2.把所有哦.bak文件打包压缩为123.tar.gz

3.批量还原文件的名字,即把增加的.bak再删除

核心:

find 用来查找所有.txt文件

tar打包一堆文件

还原文件名用for还原

 

 

#!/bin/bash

find /123/ -type f -name "*.txt" >/tmp/txt.list

for f in `cat /tmp/txt.list`

do

mv $f $f.bak

done

#find /123/ -type f -name *.txt | xargs -1 mv {} {}.bak

#find /123/ -type f -name *.txt -exec mv {} {}.bak \;

for f in `cat /tmp/txt.list`

do

echo $f.bak

done > /tmp/txt.bak.list

 

tar -czvf 123.tar.gz `cat /tmp/txt.bak.list`

 

for f in `cat /tmp/tmp.txt.list`

do

mv $f.bak $f

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值