當前位置:首頁 » 網頁前端 » 耗盡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中配置。