最近学习shell命令,写了一段代码大家可以借鉴下
#! /bin/bash
for ((i=1;i<=5;i++ ))
do
echo "i=$i"
touch $i.txt
sleep 1
done
echo "end!"
脚本为bash!! for循环 学习语言的都熟悉 (())这是要求形式 条件自己写吧 我这写的5次
do为开始 $i即i变量的值 sleep睡眠时间
done结束 打印 “end”
下面介绍另外一篇定时记录内存脚本,record.sh
#!/bin/sh
times_left=120
file_name="record_`date+%m%d%H%M`.txt"
while [ $times_left -gt 0 ]
do
echo"========================================" >> $file_name
date >> $file_name
echo "========================================" >>$file_name
./mem_stat.sh >> $file_name
echo "" >> $file_name
sleep 300
let times_left=times_left-1
done
内存信息memstat.sh如下:
#!/bin/sh
# define function to get memory informationfrom processes.
get_rss()
{
echo $(($(grep "Rss:" /proc/$1/smaps | sed "s/Rss:*\(.*\) kB/+\1/" | tr '\n
' ' ')))
}
get_pss()
{
echo $(($(grep "Pss:" /proc/$1/smaps | sed "s/Pss:*\(.*\) kB/+\1/" | tr '\n
' ' ')))
}
get_pssf()
{
echo $(($(grep -A 3 / /proc/$1/smaps | grep "Pss:" | sed"s/Pss: *\(.*\) kB/
+\1/" | tr '\n' ' ')))
}
# define function to get memory informationfrom process tasks.
get_task_rss()
{
echo $(($(grep "Rss:" /proc/$1/task/$2/smaps | sed"s/Rss: *\(.*\) kB/+\1/"
| tr '\n' ' ')))
}
get_task_pss()
{
echo $(($(grep "Pss:" /proc/$1/task/$2/smaps | sed"s/Pss: *\(.*\) kB/+\1/"
| tr '\n' ' ')))
}
get_task_pssf()
{
echo $(($(grep -A 3 / /proc/$1/task/$2/smaps | grep "Pss:" |sed "s/Pss: *\(
.*\) kB/+\1/" | tr '\n' ' ')))
}
# find all the user space process ids
USER_SPACE_PIDS=$(ls -l /proc/[0-9]*/exe2>/dev/null | grep "-" | sed 's:.*proc/
\([0-9]*\).*:\1:')
# clear the cache files.
echo 3 > /proc/sys/vm/drop_caches
opera_rss=0
opera_pss=0
opera_pssf=0
opera_pssm=0
echo "PID PPID RSS PSS PSSF PSSM COMMAND"
for p in $USER_SPACE_PIDS; do
if [ -e /proc/$p ]; then
rss=$(get_rss $p)
totrss=$(($totrss + $rss))
pss=$(get_pss $p)
totpss=$(($totpss + $pss))
pssf=$(get_pssf $p)
totpssf=$(($totpssf + $pssf))
pssm=$(($pss-$pssf))
totpssm=$(($totpssm + $pssm))
cmd=`cat /proc/$p/comm`
if [[ "$cmd"x ="browserstub"x || "$cmd"x = "opera_omi"x ]]; the
n
opera_rss=$(($opera_rss+ $rss))
opera_pss=$(($opera_pss+ $pss))
opera_pssf=$(($opera_pssf + $pssf))
opera_pssm=$(($opera_pssm+ $pssm))
fi
printf "%6d %6d %6d %6d%6d %6d %s\n" $(cut -d ' ' -f '1,4' /pro
c/$p/stat) $rss $pss $pssf $pssm $cmd
fi
done
echo "total:"
printf "total:\t \t %6d %6d %6d %6d\n" $totrss $totpss $totpssf $totpssm
echo "opera:"
printf "opera:\t \t %6d %6d %6d %6d\n" $opera_rss $opera_pss $opera_pssf $opera
_pssm
# for bdpprog tasks
#BDPPROG_PID=$(ls -l /proc/[0-9]*/exe2>/dev/null | grep "bdpprog" | sed 's:.*pr
oc/\([0-9]*\).*:\1:')
#BDPPROG_TASK=/proc/${BDPPROG_PID}/task
#TASK_PIDS=$(ls ${BDPPROG_TASK})
#echo "bdpprog pid=$BDPPROG_PID"
# For totally meminfo, such as cachedmemory size
#head -n 7 /proc/meminfo
cat /proc/meminfo