[英]Monitor disk space in an `until` loop
我的第一個問題在這里。 希望它是一個好人。
所以,我希望創建一個殺死運行另一種語言的腳本arecord
時,我的盤達到一定的使用。 (我應該指出,我不確定我是如何到達那個df
過濾器的...只是有點搜索...)我的計划是在以下目錄中同時運行兩個腳本(一個記錄和一個監視磁盤使用情況)分開的screen
。
我正在Raspberry Pi上進行所有操作,順便說一句。
到目前為止,這是我的代碼:
#!/bin/bash
DISK=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
until [ $DISK -ge 50 ]
do
sleep 1
done
killall arecord
當我使用起始值(“ 50”更改為“ 30”左右)播放時,此代碼有效。 但這似乎並不能以我希望的方式“監視”磁盤。 我對發生的事情有所了解:變量DISK僅分配一次,而不定期檢查或重新定義。
換句話說,我可能想要在我的until
循環中從df
“獲取”磁盤使用率的內容,對嗎? 有什么好的解決方法?
=
PS我對聽到如何將整個腳本的目的結合到運行記錄本身的腳本中非常感興趣,但是現在這超出了我的范圍……還有另一個問題……
你只設置DISK
,因為它是在循環開始之前完成,而不是作為循環過程的一部分進行一次。
一個簡單的解決方法是將對磁盤空間的評估合並到實際的while
循環本身中,例如:
#!/bin/bash
until [ $(df / | awk 'NR==2 {print $5}' | tr -d '%') -ge 50 ] ; do
sleep 1
done
killall arecord
您會注意到我也對該命令做了一些小的修改,特別是:
awk
本身從ps
輸出中獲取相關行,而無需在單獨的管道階段中使用grep
。 tr
刪除單個字符, sed
可以做到,但這有點矯kill過正。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.