Ⅰ 写一个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中比较容易成为垃圾文件占用空间的文件类型有下面几种
日志文件
软件安装包,tar包,rpm包,zip包等等
软件运行结果
错误脚本导致的死循环文件
所以首先需要对上述文件进行排查,找出你需要删除的无用数据,然后使用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