27、实现杨辉三角
#!/bin/bash
read -p "请输入杨辉三角的1-10层数: " n
declare -a YH
for i in `eval echo {1..$n}`;do
for j in `seq $i`;do
if [ $j -eq 1 -o $j -eq $i ];then
YH[$i$j]=1
echo -n "${YH[$i$j]} "
else
x=${YH[$[$i-1]$[$j-1]]}
y=${YH[$[$i-1]$j]}
YH[$i$j]=$[x+y]
echo -n "${YH[$i$j]} "
fi
done
echo
done
28、查询300s内使用cpu和mem最多的程序
#!/bin/bash
[ -e /tmp/mem.log -o -e /tmp/cpu.log ] && { echo "请移动tmp/mem.log、/tmp/cpu.log到其他路径";exit;}
for i in `seq 300`;do
if [ $i -eq 1 ];then
ps aux k -%mem |sed -n "1,4p" >> /tmp/mem.log
ps aux k -%cpu |sed -n "1,4p" >> /tmp/cpu.log
else
ps aux k -%mem |sed -n "2,4p" >> /tmp/mem.log
ps aux k -%cpu |sed -n "2,4p" >> /tmp/cpu.log
fi
sleep 1
done
echo "300s内存使用多的程序是:"
awk 'NR==1{printf "%6s %10s\n",$2,$11}' /tmp/mem.log
awk 'NR!=1{num[$2" "$11]++;}END{for(i in num){print num[i],i,cmd[i]}}' /tmp/mem.log |sort -rn
echo
echo "300sCPU使用最高的程序是:"
awk 'NR==1{printf "%6s %10s\n",$2,$11}' /tmp/cpu.log
awk 'NR!=1{num[$2" "$11]++;}END{for(i in num){print num[i],i,cmd[i]}}' /tmp/cpu.log |sort -rn
rm -rf /tmp/mem.log
rm -rf /tmp/cpu.log
29、根据/proc/net/dev实时监控网络状态
#!/bin/bash
fun_usage ()
{
echo "usage $0"
echo "usage $0 eth* 2"
exit 1
}
ETHNUM=`ip a|awk -F'[ :]+' '/^[0-9]+/'|wc -l`
ETH=(`ip a|awk -F'[ :]+' '/^[0-9]+/{print $2}'`)
TIME=$2
eth=$1
if [ $
if [[ $2 =~ ^[0-9]+$ ]];then
for i in `eval echo {0..$ETHNUM}` ;do
[[ $1 == ${ETH[$i]} ]] && a=1 || b=0
done
[[ $a == 1 ]] || fun_usage
else
fun_usage
fi
else
fun_usage
fi
RX1=$(cat /proc/net/dev |awk /$1/'{print $2}')
TX1=$(cat /proc/net/dev |awk /$1/'{print $10}')
while :;do
sleep ${TIME}
RX=$(cat /proc/net/dev |awk /$1/'{print $2}')
TX=$(cat /proc/net/dev |awk /$1/'{print $10}')
echo "echo "Recv rate: $[($RX-$RX1)/$2] B/s Sent rate: $[($TX-$TX1)/$2] B/s ""
RX1=${RX}
TX1=${TX}
done
30、用文件名做为参数,统计所有参数文件的总行数
#!/bin/bash
[ -d $1 -o $
for i in "$@";do
[ -f $1 ] || { echo "$1 is not file";shift;continue; }
wc -l $1
shift
done
31、函数实现执行结果为ok或fiaied
#!/bin/bash
fun_ok_failed ()
{
if [ $? -eq 0 ];then
{ echo -e "\E[1;32m$0\t\t\t\t\t [ ok ]\E[0m";exit; }
else
{ echo -e "\E[1;31m$0\t\t\t\t\t [ failed ]\E[0m";exit; }
fi
}
32、实现脚本创建位置变量后的用户
#!/bin/bash
[ $
for i in `eval echo {1.."$#"}`;do
useradd $1
shift
done
#!/bin/bash
[ $
for i in `eval echo {1.."$#"}`;do
user=${!i}
id $user &> /dev/null && echo $user is exist || { useradd $user;echo $user is created; }
don
33、等腰三角形
#!/bin/bash
read -p "请输入等腰三角形的行数: " line
for i in `eval echo {1.."$line"}`;do
for (( k=1;k<=line-i;k++ ));do
echo -e " \c"
done
for (( j=1;j<=2*i-1;j++ ));do
echo -e '*\c'
done
echo
done