linux shell for 迴圈語句

2021-07-13 17:48:57 字數 3269 閱讀 4508

#! /bin/bash

for ((i=1;i<=5;i++ ))

doecho "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 ]

doecho"****************************************" >> $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

nopera_rss=$(($opera_rss+ $rss))

opera_pss=$(($opera_pss+ $pss))

opera_pssf=$(($opera_pssf + $pssf))

opera_pssm=$(($opera_pssm+ $pssm))

fiprintf "%6d %6d %6d %6d%6d %6d %s\n" $(cut -d ' ' -f '1,4' /pro

c/$p/stat) $rss $pss $pssf $pssm $cmd

fidone

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 b***rog tasks

#b***rog_pid=$(ls -l /proc/[0-9]*/exe2>/dev/null | grep "b***rog" | sed 's:.*pr

oc/\([0-9]*\).*:\1:')

#b***rog_task=/proc/$/task

#task_pids=$(ls $)

#echo "b***rog pid=$b***rog_pid"

# for totally meminfo, such as cachedmemory size

#head -n 7 /proc/meminfo

cat /proc/meminfo

Linux shell for迴圈結構

1 for 變數 in 取值列表 do statement statement done 2 for 變數 in 取值列表 dostatement statement done 上面兩個用法的效果是一樣的。取值列表 數字10 20 30 使用seq命令生成數字的序列 seq 10 seq 3 10 ...

for迴圈 while迴圈

迴圈結構 當重複執行相同的 或者是相似的 時。迴圈三要素 1 迴圈變數的宣告 用於控制迴圈次數的迴圈因子 2 迴圈條件 用於判斷是否執行相同或相似內容 迴圈體 的條件 3 迴圈變數的改變方向 向著迴圈結束的方向改變。1 for迴圈 語法 for 變數的宣告和初始化 迴圈條件 變數的改變方向 執行邏輯...

python while迴圈 for迴圈

1變數的初始化 while 條件2 條件滿足時候 執行該 條件滿足時候 執行該 3變數的更新 1 while 迴圈輸出1 100所有的數 while 迴圈輸出20次我愛你 迴圈輸出1 100累加和 1 100之間所有數的和 1變數的初始化 i 0 sum 0 儲存和 判斷條件 while i 100...