當前位置:首頁 » 網頁前端 » linux消耗磁碟腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linux消耗磁碟腳本

發布時間: 2023-01-28 22:33:04

Ⅰ 寫一個shell用來消耗linux的內存

只能大概控制一下消耗的內存數量, 可以自己修改腳本中的參數, 目前是佔用1GB內存1個小時. 注意需要可以mount的許可權, 比如說root

#!/bin/bash
mkdir/tmp/memory
mount-ttmpfs-osize=1024Mtmpfs/tmp/memory
ddif=/dev/zeroof=/tmp/memory/block
sleep3600
rm/tmp/memory/block
umount/tmp/memory
rmdir/tmp/memory

Ⅱ 測試linux 如何磁碟 滿工具,shell腳本。謝謝。

裝個nagios就可以
然後當磁碟到達一定限額時,會發郵件給你

Ⅲ shell腳本里磁碟空間使用怎麼表示

在本教程中,我們將編寫一個shell腳本來監視Linux系統上的磁碟空間使用情況。當系統達到給定閾值時,它將觸發郵件到相應的電子郵件ID,我們在本文中添加了四個shell腳本,每個腳本用於不同的目的。在介紹之前,我想澄清一下我注意到的關於磁碟空間使用shell腳本的一件事。

大多數用戶發表評論說他們在運行磁碟空間使用腳本時收到以下錯誤消息:

# sh /opt/script/disk-usage-alert-old.sh

/dev/mapper/vg_2g-lv_root

test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected

/ 9.8G

那就對了,其實當我第一次運行腳本時,我遇到了同樣的問題,後來,我找到了根本原因。

在shell腳本中使用「df -h」或「df -H」在基於RHEL 5和RHEL 6的系統上進行磁碟空間警報時,將收到上面錯誤消息,因為輸出的格式不正確,見下面的輸出。

為了解決這個問題,我們需要使用「df -Ph」(POSIX輸出格式),但默認情況下「df -h」在基於RHEL 7的系統上運行正常:

# df -h

輸出如下圖信息:

方法一

可以使用以下shell腳本來監視Linux系統上的磁碟空間使用情況。當系統達到給定的閾值限制時,它將發送電子郵件,在此示例中,我們將閾值限制設置為60%用於測試目的,可以根據你的要求更改此限制。

如果多個文件系統達到給定的閾值限制,它將發送多個郵件,因為腳本正在使用循環。

此外,請替換你的電子郵件ID:

# vi /opt/script/disk-usage-alert.sh

#!/bin/sh

df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;

do

echo $output

used=$(echo $output | awk '{print $1}' | sed s/%//g)

partition=$(echo $output | awk '{print $2}')

if [ $used -ge 60 ]; then

echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected]

fi

done

輸出:我收到了以下兩封電子郵件提醒:

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最後添加一個cronjob來自動執行此操作,它將每10分鍾運行一次:

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

方法二

或者,可以使用以下shell腳本,與上面腳本相比,我們在此方面做了一些改動:

# vi /opt/script/disk-usage-alert-1.sh

#!/bin/sh

df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;

do

max=60%

echo $output

used=$(echo $output | awk '{print $1}')

partition=$(echo $output | awk '{print $2}')

if [ ${used%?} -ge ${max%?} ]; then

echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected]

fi

done

輸出:我收到了以下兩封電子郵件提醒:

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最後添加一個cronjob來自動執行此操作,它將每10分鍾運行一次:

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh

方法三

非常簡單明了:

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" [email protected]

輸出:我收到了一封包含所有提醒的郵件,如下圖:

方法四

如果有人想監視,那麼可以使用以下shell腳本,只需替換你的文件系統名稱:

# vi /opt/script/disk-usage-alert-2.sh

#!/bin/bash

used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})

max=80%

if [ ${used%?} -ge ${max%?} ]; then

echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" [email protected]

fi

輸出:我收到了以下電子郵件提醒:

The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019

最後添加一個cronjob來自動執行此操作,它將每10分鍾運行一次:

# crontab -e

*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh

注意:由於腳本計劃每10分鍾運行一次,因此你將在10分鍾後收到電子郵件警報(取決於時間),比如說,如果你的系統達到8.25的限制,那麼你將在另外5分鍾內收到電子郵件警報。

相關主題

linux佔用磁碟空間的腳本
新戶專享福利!京東科技銀票秒貼福利派送中!
京東科技
廣告

linux 監控磁碟空間shell腳本郵件提醒
7下載·0評論
2018年11月9日
Linux - Shell腳本檢查根目錄的磁碟佔用率
979閱讀·0評論·3點贊
2021年6月25日
掛載存儲媒體
225閱讀·0評論·0點贊
2021年4月23日
df 命令
917閱讀·0評論·0點贊
2019年12月17日
linux磁碟使用情況腳本,巧用shell腳本統計磁碟使用情況
367閱讀·0評論·0點贊
2021年5月11日
linux檢測磁碟 報警,linux伺服器磁碟監控腳本分享(含報警郵件)
334閱讀·0評論·0點贊
2021年5月14日
00:00
00:32
嵐圖夢想家,東風集團旗下電動豪華旗艦MPV,無錫首付0元起!

00:32
嵐圖夢想家
廣告
shell:監控磁碟使用率,定時刪除文件或文件夾
426閱讀·0評論·0點贊
2020年11月10日
Linux三劍客grep、sed、awk(下篇)
85閱讀·0評論·0點贊
2019年4月21日
Linux中執行shell腳本的4種方法總結
951閱讀·0評論·0點贊
2022年1月7日
Linux編程——寫一個shell程序,根據/home目錄佔用磁碟空間大小而輸出相應語句
368閱讀·1評論·0點贊
2021年11月7日
linux 磁碟空間監控腳本,linux下監控磁碟空間腳本
123閱讀·0評論·0點贊
2021年5月11日
linux佔用磁碟空間的腳本,監控linux中CPU 內存 磁碟數據的shell腳本(圖文)
179閱讀·0評論·0點贊
2021年5月11日
Linux/Unix shell 腳本監控磁碟可用空間
10下載·0評論
2021年1月20日
查詢linux磁碟剩餘空間腳本,linux磁碟空間報警腳本
451閱讀·0評論·0點贊
2021年5月11日
查詢Linux伺服器磁碟空間腳本
475閱讀·0評論·0點贊
2021年7月3日
linux磁碟使用情況腳本,用 Linux Shell 腳本來監控磁碟使用情況並發送郵件
90閱讀·0評論·0點贊
2021年5月11日
shell-腳本-作用是發現前10個最佔用磁碟空間的文件
205閱讀·0評論·0點贊
2018年4月18日
linux佔用磁碟空間的腳本,Linux磁碟空間被未知資源耗盡的解決方法
88閱讀·0評論·0點贊
2021年5月11日
linux 磁碟空間監控腳本,Linux系統主機監控Shell腳本(流量、狀況、磁碟空間、CPU和內存)...
62閱讀·0評論·0點贊
2021年5月11日
去首頁
看看更多熱門內容

Ⅳ linux磁碟空間不足怎麼辦,磁碟清理方法

linux中如果發生磁碟空間不足的問題,可能導致某些軟體無法使用,用戶賬號登錄發生問題,最為嚴重的情況可能導致系統的crash,所以如果發現磁碟空間不足,需要及時進行清理。

linux系統的磁碟清理相對於windows來說要簡單不少,原因是linux中的軟體安裝不像windows那樣需要注冊注冊表,linux中的軟體都是以文件的形式存在於目錄中的,所以刪除目錄及子文件就是刪除軟體。

linux中比較容易成為垃圾文件佔用空間的文件類型有下面幾種

  1. 日誌文件

  2. 軟體安裝包,tar包,rpm包,zip包等等

  3. 軟體運行結果

  4. 錯誤腳本導致的死循環文件

所以首先需要對上述文件進行排查,找出你需要刪除的無用數據,然後使用rm命令刪除即可。

命令:rm -rf foldername

Ⅳ 求一個耗盡cup耗盡內存資源的linux腳本,為了學習vmstat監控變化用的

按你的要求看,你還是想磁碟也寫入了?

給你一個圓周率計算的腳本!

還可以計入磁碟的test.log文件,你執行下試試效果。
死機倒是不會,雙核CPU也能同時計算!你也能看出效果來!

#!/bin/bash
DIMENSION=10000
MAXSHOTS=900000000000000000
PMULTIPLIER=4.0
get_random ()
{
SEED=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }')
RANDOM=$SEED
let "rnum = $RANDOM % $DIMENSION"
echo $rnum
}

distance=
hypotenuse ()
{
distance=$(bc -l << EOF
scale = 0
sqrt ( $1 * $1 + $2 * $2 )
EOF
)
}

# main() {

shots=0
splashes=0
thuds=0
Pi=0
while [ "$shots" -lt "$MAXSHOTS" ]
do
xCoord=$(get_random)
yCoord=$(get_random)
hypotenuse $xCoord $yCoord
((shots++))
printf "#%4d " $shots
printf "Xc = %4d " $xCoord
printf "Yc = %4d " $yCoord
printf "Distance = %5d " $distance
if [ "$distance" -le "$DIMENSION" ]
then
echo -n "SPLASH! "
((splashes++))
else
echo -n "THUD! "
((thuds++))
fi
Pi=$(echo "scale=9; $PMULTIPLIER*$splashes/$shots" | bc)
echo -n "PI ~ $Pi" | tee test.log
echo
done

echo
echo "After $shots shots, PI looks like approximately $Pi."
# }
exit 0

Ⅵ linux下磁碟佔用達到100%了,怎樣查找是哪些大文件耗盡了磁碟

樓上的各位,麻煩你們回答問題的時候看清楚別人問的是什麼好吧?
1、如果是大文件佔用了,那麼查詢大於某個值的文件的方法:
find / -size +100c -print
這是從根盤開始查找大於100位元組的文件(至於位元組數你當然可以自己設置)
你可以用
find / -size +100c -exec ls -l {}\;
來列出文件屬性。
2、如果只是因為有些應用生成的日誌文件較多,長時間沒有清理後佔用了,這種情況最明顯的標志為系統空間使用量逐步遞增,每天的增量基本相差不大。那麼最快捷的方式莫過於詢問應用廠商要到日誌存放目錄後進行清理。如果找不到廠商,那隻好自己動手咯,寫個腳本查:
#!/bin/ksh
#####用命令輸出所有目錄所佔的磁碟空間大小,以G為單位#########
-h >fs_.log
######判斷各層目錄大小,查到佔用量大的目錄######
cat fs_.log|while read LINE FS_USED
do
if [ $LINE -ge 10 ]
then
echo $FS_USED >>result.log
else
exit
fi
done
####查看運行結果#######
more result.log
這樣你就能看到佔用量比較大的目錄,從而有針對性的到相應目錄下檢查,看到底是什麼東西在佔用硬碟空間了。(if [ $LINE -ge 10 ] ,這里是判斷超過10G的目錄,你可以修改)
3、因為人為的誤操作,導致了某些進程在沒有執行完成的時候被kill掉了,但是緩存中的程序沒有釋放,仍然在運行,這會產生一些臨時文件佔用大量的磁碟空間資源,這種現象的特點是爆發式的增長,在很短時間內就將磁碟空間占滿。解決的方法:
i、如果是因為父進程被殺除,子進程還運行導致,那麼最簡單,kill子進程,就會釋放。
ii、如果能用ipcs確認是哪個用戶的進程,那麼也不困難,順著使用ipcrm就行(這個就不一一例舉了,有了命令查使用方法還是很方便的)
iii、執行進程的用戶是比較關鍵的用戶如:root用戶、有實例的oracle用戶、在線的生產用戶等。那麼建議在確認是因為共享緩存的原因導致的問題後重啟伺服器。
4、你已經刪除了一些佔用量大的文件,或者在根盤下做 -h發現佔用量遠遠的小於130G,df的結果仍然是100%的使用率。那麼基本肯定你碰到了linux的一個bug,直接重啟就能解決。(當然了也不一定是bug,我碰到過那種程序在寫一個日誌,但是刪除日誌後空間不釋放的問題。這個是linux本身的機制引起的,只需要停止相關的程序空間就會釋放的)

Ⅶ linux下磁碟佔用達到100%了,怎樣查找是哪些大文件耗盡了磁碟

樓上的各位,麻煩你們回答問題的時候看清楚別人問的是什麼好吧?x0dx0a1、如果是大文件佔用了,那麼查詢大於某個值的文件的方法:x0dx0afind / -size +100c -printx0dx0a這是從根盤開始查找大於100位元組的文件(至於位元組數你當然可以自己設置)x0dx0a你可以用x0dx0afind / -size +100c -exec ls -l {}\;x0dx0a來列出文件屬性。x0dx0a2、如果只是因為有些應用生成的日誌文件較多,長時間沒有清理後佔用了,這種情況最明顯的標志為系統空間使用量逐步遞增,每天的增量基本相差不大。那麼最快捷的方式莫過於詢問應用廠商要到日誌存放目錄後進行清理。如果找不到廠商,那隻好自己動手咯,寫個腳本查:x0dx0a#!/bin/kshx0dx0a#####用命令輸出所有目錄所佔的磁碟空間大小,以G為單位#########x0dx0a -h >fs_.logx0dx0a######判斷各層目錄大小,查到佔用量大的目錄######x0dx0acat fs_.log|while read LINE FS_USEDx0dx0adox0dx0a if [ $LINE -ge 10 ]x0dx0a then x0dx0a echo $FS_USED >>result.logx0dx0a elsex0dx0a exitx0dx0a fix0dx0adonex0dx0a####查看運行結果#######x0dx0amore result.logx0dx0a這樣你就能看到佔用量比較大的目錄,從而有針對性的到相應目錄下檢查,看到底是什麼東西在佔用硬碟空間了。(if [ $LINE -ge 10 ] ,這里是判斷超過10G的目錄,你可以修改)x0dx0a3、因為人為的誤操作,導致了某些進程在沒有執行完成的時候被kill掉了,但是緩存中的程序沒有釋放,仍然在運行,這會產生一些臨時文件佔用大量的磁碟空間資源,這種現象的特點是爆發式的增長,在很短時間內就將磁碟空間占滿。解決的方法:x0dx0ai、如果是因為父進程被殺除,子進程還運行導致,那麼最簡單,kill子進程,就會釋放。x0dx0aii、如果能用ipcs確認是哪個用戶的進程,那麼也不困難,順著使用ipcrm就行(這個就不一一例舉了,有了命令查使用方法還是很方便的)x0dx0aiii、執行進程的用戶是比較關鍵的用戶如:root用戶、有實例的oracle用戶、在線的生產用戶等。那麼建議在確認是因為共享緩存的原因導致的問題後重啟伺服器。x0dx0a4、你已經刪除了一些佔用量大的文件,或者在根盤下做 -h發現佔用量遠遠的小於130G,df的結果仍然是100%的使用率。那麼基本肯定你碰到了linux的一個bug,直接重啟就能解決。(當然了也不一定是bug,我碰到過那種程序在寫一個日誌,但是刪除日誌後空間不釋放的問題。這個是linux本身的機制引起的,只需要停止相關的程序空間就會釋放的)

Ⅷ 請問監控Linux伺服器磁碟容量的腳本怎麼寫

看看下面這個腳本(注意要用英文的標點符號):

#!/bin/bash
partion_list=( 'df -h | awk 『NF>3&&NR>1{sub(/%/,」」,$(NF-1));print $NF,$(NF-1)}』' )
critical=90
notification_email()
{
emailuser='[email protected]' 「發送郵件地址」
emailpasswd='password' 「成功開啟POP3/SMTP服務,在第三方客戶端登錄時,密碼框請輸入的授權碼」
emailsmtp='smtp.qq.com'
sendto='[email protected]' 「接收郵箱地址」
title='Disk Space Alarm' 「郵件標題」
/usr/local/bin/sendEmail -f $emailuser -t $sendto -s $emailsmtp -u $title -xu $emailuser -xp $emailpasswd -m $emailmessage
}
crit_info=」」
for (( i=0;i<${#partition_list[@]};i+=2 ))
do
if [ 「${partition_list[ ((i+1)) ]}」 -lt 「$critical」 ];then
echo 「ok! ${partition_list[i]} used ${partition_list[ ((i+1)) ]}%」
else
if [ 「${partition_list[ ((i+1)) ]}」 -gt 「$critical」 ];then
crit_info=$crit_info」Warning!!! ${partition_list[i]}
used ${partition_list[ ((i+1) ] }%\n」
fi
fi
done

if [ 「$crit_info」 != 」」 ];then
echo -e $crit_info | notification_email
fi

上面腳本的功能是監控每個磁碟分區,當磁碟分區使用空間超過90%時,就通過sendEmail來發送郵件告警。sendEmail是個開源工具,可以從http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz下載;
解壓後把sendEmail拷貝到/usr/local/bin下即可。

Ⅸ 如何監控linux阿里雲磁碟空間

Linux系統中需要監控磁碟各分區的使用情 況,避免由於各種突發情況,造成磁碟空間被消耗殆盡的情況,例如某個分區被Oracle的歸檔日誌耗盡,導致後續的日誌文件無法歸檔,這時ORACLE數 據庫就會出現錯誤。監控磁碟空間的使用情況,其實有許多工具,例如Nagios等,其實最簡單的還是使用Shell腳本。下面就介紹一下如何通過 Shell腳本和Crontab作業結合來實現對磁碟空間的監控、告警。
一般查看磁碟各分區的使用情況可以通過df命令來查看,網上有兩種獲取磁碟使用百分比的Shell腳本。
1:df -h | grep /dev | awk '{print $5}' | cut -f 1 -d "%"
2:df -h | grep /dev | awk '{print $5}' | sed 's/%//g'
但是這兩個命令還是有些bug,例如如下截圖所示:當顯示內容過長,導致換行時。此時上面的Shell腳本就無法獲取其值。

尤其是某些特殊情況下,完全無法准確獲取相應數據

此時只需在參數上稍微做一下調整即可
1:df -P | grep /dev | awk '{print $5}' | cut -f 1 -d "%"
2:df -P | grep /dev | awk '{print $5}' | sed 's/%//g'

下面腳本是用來監控各分區使用情況,當超過閥值(默認為90%)時,發出告警郵件,通知管理員及時處理。

#*************************************************************************
# FileName : disk_capatiy_alarm.sh
#*************************************************************************
# Author : Kerry
# CreateDate : 2013-11-07
# Description : this script is mointoring the linux disk
# capacity, if disk used more than 90%,
# then it will send a alarm email
#*************************************************************************

#! /bin/bash

email_content="/home/oracle/scripts/output/disk_sendmail.pl"
email_logfile="/home/oracle/scripts/output/diskdetail.txt";

cat /dev/null > ${email_content};
cat /dev/null > ${email_logfile};

SendMail()
{

date_today=`date +%Y_%m_%d`
subject="The server xxxxxx\'s Disk Capacity Alarm"
content="Dear All,

The server xxxx(xxx.xxx.xxx.xxx) disk capacity alarm ,please take action for it. many thanks!

"

echo "#!/usr/bin/perl" >> ${email_content}
echo "use Mail::Sender;" >> ${email_content}
echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => '[email protected]'}; ">> ${email_content}
echo "\$sender->MailFile({to => '[email protected]',">> ${email_content}
echo "cc=>'[email protected]'," >> ${email_content}
echo "subject => '$subject',">> ${email_content}
echo "msg => '$content',">> ${email_content}
echo "file => '${email_logfile}'});">> ${email_content}

perl ${email_content}

}

for d in `df -P | grep /dev | awk '{print $5}' | sed 's/%//g'`

do

if [ $d -gt 90 ]; then

df -h >>$email_logfile;

SendMail;

exit 0;

fi

done

Ⅹ 求一個linux腳本:看磁碟使用情況,超過85%的自動報警發入到指定郵箱,並做成計劃任務

#!/bin/sh
ip=192.168.1.1; #你的真實IP地址
time=`date +%F-%H:%M`;
mail_address="你的郵件地址";
tmpfile=/tmp/check-disk.txt
a=`df -h | grep 'sda1'|awk '{print int($5)}'`; #指定過濾的硬碟分區
touch /tmp/check-disk.txt
echo "From :$ip" > $tmpfile #這里用「>」的意思是覆蓋,保證每次發郵件的內容都是新的。
echo "DateTime:$time" >> $tmpfile
echo "Info :yourname" >> $tmpfile
echo "disk_status_use=$a%" >> $tmpfile
if [[ "$a" > 85 ]]; then #指定分區的磁碟使用空間大於85%就報警
/bin/mail -s "warning ! $HOSTNAME disk is full !" $mail_address < $tmpfile
else
/bin/mail -s "$HOSTNAME disk is ok !" $mail_address < $tmpfile
fi