linux shell for 循环语句

最近学习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

 


 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中的for循环语句是一种用于重复执行某些操作的控制结构。它可以通过指定循环变量和循环条件来控制循环的次数。for循环的语法格式通常为: for 变量名 in 列表 do 执行的命令 done 其中,变量名是用于存储列表中的每个元素的变量名,列表可以是一系列的值,比如数字、字符串或文件名。执行的命令是在每次循环中要执行的操作,可以是任何Shell命令或语句循环将依次针对列表中的每个元素执行相同的操作,直到所有元素都被处理完毕。 在这个例子中,我们使用了一个自增的循环变量i,从1开始,每次增加2,直到i的值大于10为止。在每次循环中,输出了当前循环变量的值。所以,这个循环将会输出1、3、5、7、9这几个数字。 总的来说,for循环是一种非常强大的循环结构,可以在Shell脚本中实现很多重复执行的需求,比如批量操作文件、处理数据等。熟练掌握for循环的用法,可以提高Shell脚本编写的效率和灵活性。希望这个回答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [LinuxLinux操作系统循环语句-for语句使用介绍](https://blog.csdn.net/run65536/article/details/131414795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值