当前位置:首页 » 网页前端 » 耗尽linux内存的脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

耗尽linux内存的脚本

发布时间: 2023-03-29 10:05:32

㈠ 求linux主机上面清除用户占用空间过大的shell脚本

#!/usr/bin/bash
Cap=`df-k-P/home|grep'home'|awk'{printf("%d ",$5)}'`
#将/home文件系统的使用率赋给变量Cap

if[$Cap-ge90];then
#判断Cap是否大于等于90

find/home-typef-mtime+7-name"*.log"-execrm-f{};
#删除目录/home下所有一周前的log文件
fi;

将以上脚本保存,例如存到/tmp/capchk.sh

然后root用户增加定时任务:

crontab -e

添加 0 3 * * * /tmp/capchk.sh>/dev/null 2>&1

每天凌晨3点检查文件系统空间,清理日志文件

㈡ Linux下swap耗尽该怎么办如何释放swap

Linux下交换内存耗尽如何查看及如何处理。以及查看shell脚本描述。交换内存不足时,启动应用时会报内存不足。
1、启动应用时报内存不足,直接Linux命令行top查看下。swap used100%,0free。

2、reboot服务器能有效的释放swap,可是很多情况下是不能重启服务器的。这时就要弄明白是什么占着内存。查看下/proc目录下内容,发现很多数字命名的目录,这些就是Linux的进程了。

3、要让进程释放swap的方法只有kill掉该进程了。写个脚本来查看具体是哪些进程占着内存啦。
一、对/proc目录下所有以数字为名的目录进行遍历
二、1目录是根进程重启会导致系统重启,所以直接排除掉。
三、算出每个进程占用内存的大小,然后按照大小排序
四、输出内存占用大于1MB的进程

4、将运行结果保存到swap.log文件中

5、查看swap.log.10325这个进程内存占用最多有130几M。

6、直接kill掉,然后再top查看。ok,swap一下子释放了很多,搞定。

注意事项:proc目录下1目录不能直接kill掉。

㈢ linux系统定期执行清除缓存的命令

1 先写一个脚本存为一个文件,比如 clearmem.sh
#!/bin/bash
sync
echo 3 > /proc/sys/vm/drop_caches
2 然后给这个脚本加一个可执行权限
chmod +x chearmem.sh
3 先试试运行一下看看内存释放没有,free -m
sh clearmem.sh
free -m
4 最后创建一个计划任务
crontab -e
加如下内容,比如每天1点清理一次
00 1 * * * sh /xxx/路径/clearmem.sh

㈣ Linux中Cache内存占用过高清理

在Linux中每次用free查看的时候,发现free的空间都只有500M左右。同样的环境32G只剩下这点,64G的也只剩下这么一点。后来发现都被Cache占用了,因为服务器上运行了Kafka环境,每周的日志文件都有一二百G的,估计就是他占用了page cache吧。

Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果乱链握 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

Linux内核会在内存将要唤大耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。也可以用动释放,释放的时候需要对cache中的数据跟对应文件中的数据一致。

释放的方式有下以几种

一般情况下释放pagecache就可以了。这样可以写一个sh脚本来在服务器空闲的时候定时执行

使用哗庆crontab来设置定时任务,如每天4点开始清理

本文参考: https://www.jianshu.com/p/9b9f4917fb2e

㈤ 用shell脚本自动定时清除/释放内存

Linux系统buff/cache 中缓存数据占用内存过高,定时清理buff/cache ,释放系统内存

root权限创山并建脚本文件:

cat clean_cache.sh

设置定时任猛唯物务,每隔2小时运行一次:

crontab -e

0 */2 * * * sh /usr/枝液local/bin/clean_cache.sh

㈥ 写一个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脚本


linux
中,/proc/$PID/status
文件提供了该进程资源(内存,堆栈,信号量,子父进程)的使用情况,虽然linux提供了不少查看内存的命令,但都是看整体的使用情况,无法对单个进程的内存使用情况进行查看。
本文为大家提供的这个脚本,通过查看status文件中VmRSS的字段来查看系统或进程使用的内存情况,有需要的朋友不妨参考下。
复制代码:
#!
/bin/bash
echo
-n
PidName
>
/root/script/pid.f
echo
MeMery
>>
/root/script/pid.f
PIDPATH=/proc/
TOTLE=0
cd
$PIDPATH
DOC=`ls`
for
DOCNAME
in
$DOC
do
if
[
-d
$DOCNAME
];
then
cd
$DOCNAME
if
[
-f
status
];then
MEMERY=`grep
VmRSS
status
|
awk
-F':'
'{print
$2}'
|
awk
'{print
$1}'`
PIDNAME=`grep
Name
status
|
awk
-F':'
'{print
$2}'`
if
[
$MEMERY
];
then
echo
-n
$PIDNAME
>>
/root/script/pid.f
echo
-n
>>
/root/script/pid.f
echo
$MEMERY
>>
/root/script/pid.f
TOTLE=`expr
$TOTLE
+
$MEMERY`
cd
..
else
cd
..
fi
else
cd
..
fi
fi
done
TOTLE=`expr
$TOTLE
/
1024`
echo
TOTLE
USERD:
$TOTLE
MB
>>
/root/script/pid.f
cat
/root/script/pid.f

㈧ 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写一个查看指定进程占用CPU和内存情况的脚本

1、查看物理旁信咐CPU数
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
1
2、查看逻辑CPU数
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "processor"|wc -l
4
3、查看CPU几核(即核数)
[root@MysqlCluster01 ~]# cat /proc/坦局cpuinfo |grep "cores"|uniq
cpu cores : 4
4、查看CPU主频
[root@MysqlCluster01 ~]# cat /运纯proc/cpuinfo |grep MHz|uniq
cpu MHz : 2499.982
5、前操作系统内核信息
[root@MysqlCluster01 ~]# uname -a
Linux MysqlCluster01 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
6、前操作系统发行版信息
[root@MysqlCluster01 ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
7、内存使用情况
[root@MysqlCluster01 ~]# free -m
total used free shared buffers cached
Mem: 7863 2738 5125 0 141 835
-/+ buffers/cache: 1761 6102
Swap: 3967 0 3967

㈩ 如何限制linux所有进程可使用的总内存

下面的shell脚本可以实时的监控系统中各个进程的CPU和内存的占用情况,用于限制进程CPU占用 率更加合理。

#!/bin/sh
PIDS=`top-bn1|grep"^*[1-9]"|awk’{if($9>50||$10>25&&id-u$2>500)print$1}’`
forPIDin$PIDS
do
renice+10$PID
echo"renice+10$PID"
done

能够将这个脚本放到cron中运袭并袭行,比如每分钟检查一次,蔽含只需以root身份添加crontab项:
#crontab -e
* * * * * limit.sh
以后每个一分钟就会检查一次,调整占用50%以上CPU或25%内存的进程的nice值,从而使这样的进程优先级变低,被调度的机会减少,同时会向root发邮件提示该进程被调整过。
但是,限制内存使用最好还拍兄是用PAM,RedHat能够在/etc/security/limits.conf中配置。