目標
寫個測試腳本,重啓50次 , 每次重啓後執行一些命令,保存到文本,然後再次重啓 。簡單腳本, 直接 shell 走一波。
思路
- 每次輸出一波文本 , 則每次用一個目錄來保存這些文本
- 重啓後直接執行命令 , 那麼需要在 rc.local 添加執行命令
- 執行完再重啓, 就需要 reboot 了
- 次數計數,似乎只能在本地文本中保存次數了。先把次數寫到文本,重啓後,再讀,再累加。
腳本
這裏是僞腳本,原腳本忘記抄下來了。可能有部分不對的地方。
#!/bin/bash
# 當前目錄
cur_dir=`pwd`
#計數文本
cot="$cur_dir/cot.txt"
#最大次數
limit=50
if[[ -e $cot ]]
then
#計數文本存在
#取文本內容
num=`cat $cot`
#先計數加1
echo $((num+1)) > $cot
#休息一會兒,等系統初始化
sleep 5m
else
#第一次,沒有文本,計數文本不存在,初始化一個文本
echo "1" > $cot
fi
。。。。。。。
#要執行的腳本
。。。。。。
#取數字
num=`cat $cot`
#判斷是不是到達最大次數了
if[[ $((num)) -eq $limit ]]
then
#到次數,退出
exit 0
fi
#沒到次數,重啓
shutdown -r
簡單一個腳本,搞了幾個小時,還是忘性大。。。
簡單幾個點吧, 這裏再理一下。
shell 字段串轉數字
語法:$((num))
轉數字後可以跟其他數字做比較,也可以做計算。也可以直接拿字符串的數字,在這個語法裏計算
例如:
num="123"
$((num+1)) # 結果是:124
取字符串長度
這裏也提一下吧 ,語法: ${#num}
num="abc123"
${#num} # 結果是: 6
文件的判斷符號
-
-b $FILE :如果FILE存在且爲塊特殊文件,則爲True。
-
-c $FILE :如果FILE存在且爲特殊字符文件,則爲True。
-
-d $FILE :如果FILE存在且爲目錄,則爲True。
-
-e $FILE :如果FILE存在且爲文件,則爲True,無論類型(節點,目錄,套接字等)如何。
-
-f $FILE :如果FILE存在且爲常規文件(不是目錄或設備),則爲True。
-
-G $FILE :如果FILE存在且與運行命令的用戶具有相同的組,則爲True。
-
-h $FILE :如果FILE存在且爲符號鏈接,則爲True。
-
-g $FILE :如果FILE存在且設置了set-group-id(sgid)標誌,則爲True。
-
-k $FILE :如果FILE存在且設置了粘滯位標誌,則爲True。
-
-L $FILE :如果FILE存在且爲符號鏈接,則爲True。
-
-O $FILE :如果FILE存在並且由運行該命令的用戶擁有,則爲True。
-
-p $FILE :如果FILE存在且爲管道,則爲True。
-
-r $FILE :如果FILE存在且可讀,則爲True。
-
-S $FILE :如果FILE存在且爲套接字,則爲True。
-
-s $FILE :如果FILE存在且非零大小,則爲True。
-
-u $FILE :如果設置了exists和set-user-id(suid)標誌,則爲True。
-
-w $FILE :如果FILE存在且可寫,則爲True。
-
-x $FILE :如果FILE存在且可執行,則爲True。
sleep 命令
sleep NUMBER [SUFFIX]...
NUMBER可以是正整數或浮點數。
SUFFIX可以是下列之一:
s - 秒(默認)
m - 分鐘
h - 小時
d - 天
sleep 是阻塞,且不可停止。只能殺進程了
數字的比較大小
- -gt 大於
- -lt 小於
- -eq 等於
- -ne 不等於
- -ge 大於等於
- -le 小於等於
重啓命令
reboot
: 強制重啓,強制停止一切進程。shutdown -r
: 等正在進行的進程結束後,再重啓
輸出到文本
>
: 清空文本,再寫入>>
: 追加到文本最後,有換行
如果文章有幫助到您,請點個贊,您的反饋會讓我感到文章是有價值的