找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4465|回复: 7

HN8145X6重要技巧之内存回收

[复制链接]
发表于 2022-2-17 16:14:04 | 显示全部楼层 |阅读模式
光猫跑一段时间之后,内存越来越少,很多时候其实内存本身并没有少,而是分配出去的缓存没有被释放,以下两条命令实现内存快速回收:/ |3 |; C* ]/ G7 `9 n; d

6 _. q4 h* O6 O: @: i) P# S( S" oecho 1 > /proc/sys/vm/compact_memory' ]9 t. a% ]5 N0 z# u% L: i
echo 3 > /proc/sys/vm/drop_caches
8 A+ S8 Q: K4 r* t  g4 q
; o3 W  U& }5 u8 l以上命令需要提升到root权限运行,实测效果明显。
8 d! `( U8 L; A+ `3 m
 楼主| 发表于 2022-2-17 16:41:20 | 显示全部楼层
银斐 发表于 2022-2-17 16:337 M) G9 ^9 `: o/ t5 H8 a1 B
有详细一点的命令吗
/ ?5 \! }3 ^) ^$ H3 `
shell下再执行一次su,不过有的版本su被阉割或者root密码被改了。
发表于 2022-2-17 16:33:27 | 显示全部楼层
有详细一点的命令吗
发表于 2022-2-17 22:21:23 | 显示全部楼层
本帖最后由 sdwfwmj 于 2022-2-17 22:44 编辑
0 e; ]9 c5 g! G* [( M4 X" X" R/ x5 D# s/ P
        我改天试试,以前只试过第二个命令,效果不明显,如果可以的话我就去其虚拟机中弄一个定时任务。& s6 J! c9 G3 P1 C7 {) _

1 q( `7 H+ e, {" F& T$ k. j7 U9 r6 G" t       补充一个给大家注意,如果固件是035,请不要在后端接支持elink的路由器,要不然会导致/sbin/easymesh占内存快速上升。不过如果可以的话,在虚拟机中定一个定时任务,每12小时执行一次killall easymesh也行。- W/ g" {" Q/ E: x2 Q
2 b% K& x% n' ^; f2 [: \* R! e
发表于 2022-2-20 17:55:21 | 显示全部楼层
学习学习,有多个会用的命令,以备不时之需
发表于 2022-3-13 22:23:53 | 显示全部楼层
哪个大神能不能帮忙写一个定时清理内存缓存的代码?(每次要进入telnet 执行这个代码不够方便)9 T1 A9 }: W4 B
设置内存超过一定百分比(比方说70%)就执行清理内存的命令。
% ^$ }1 j6 j- s8 h, b4 c搜索了一下,实在不会修改:
- }6 J+ r; a$ P' Qhttps://blog.csdn.net/weixin_30691649/article/details/116648833
+ v" k9 ^  C& W  f) R2 X-----------7 l/ v- ]& k/ G, Z! A1 n8 h4 @9 k
下面给出shell脚本freeMemory.sh
+ V& d: p: \& a& H
1 ~# p/ o1 @6 a% u#!/bin/sh
* j( X/ @+ k& z5 ]
5 ~0 K, n! h  i9 X& {* r#内存总量1 @1 i. b9 l9 i( }  @

: o2 H# ?4 Q9 d" R2 Y& ntotal=$(free-m|grep Mem |awk'{print $2}')2 F0 d$ F; Q9 V% ~

8 C: V. u. m6 L- A( N7 o# Y5 N* q& j#已使用内存
+ Y* B- x, ~& Q/ R
( f0 \* q: i& e' t& tused=$(free-m|grep Mem |awk'{print $3}')7 J, z0 c! [! Y  J
# b7 l+ Y$ _' l% P. r0 X
#内存使用率- ]! X' I* t" I; X2 I' b! t/ K6 l

0 D( w+ O4 S6 E; |  Grate=$(($used*100/$total))
: v! b' ?1 w5 x7 l! r3 v* Y
: `7 j5 h1 J& i( }4 otime=date+ @4 a% y( _! t( T$ u

4 S1 {. c1 g  _  B1 q$ decho"############$(date)###############"
' [7 _' e$ ~8 _% M% g4 Y
8 K: z' u, x* B) B( y#$1 is max Mem. w% {. e+ C+ E- c. S
; D  u5 j8 R; {! `- J
if[$rate-gt$1]0 F  l. y" b2 r2 i3 A! z
; n4 v8 ^( K( _3 v2 ]
then
/ j$ s/ h/ q: o; b8 E/ V
* g$ G2 |$ m: {& M* \2 T) vecho"rate=$rate freeMemory start!"; i/ K2 D, T2 X1 W2 A

% w) @8 @) E/ k2 J& H- Zsync
3 |: n9 ^( a+ A( K3 e7 V. B: P: \6 m; X* n
echo 3 >> /proc/sys/vm/drop_caches! i4 y. g. y% z& O2 @5 K: |# m1 T
' p3 G# L1 L2 s) T
echo"FreeMemory Success!"% u, i. B0 v( |, {

* t7 c! ^. p1 ]else1 c* g/ O+ L/ M9 c! o
1 G( p: J4 t$ i3 q4 w
echo"rate=$rate Memory is normal"  v5 Y( J$ X2 Q/ w: Z

+ R, n. d9 X( ?: |  P" `fi& [7 p' h' P4 b
: E6 l, q* G  K
1、执行命令crontab -e打开编辑定时配置文件
- l0 v: l% d" d; w. j* g" k) a& |" i1 \
2、在文件的最后面添加下面的命令:
+ m! v# ^# z& q2 W5 J: {( k
+ S; S% }& \9 P/ n* K8 s0 23 * /root/freeMemory.sh 70>>/root/freeMemoryLog.txt
0 o# T) X& Z! N0 G5 A7 K( r' S, R6 }/ Z1 `0 v4 Y" q7 a" g
上面我们设置了每天的23点执行命令我们的脚本,参数设置70,就是当检测到内存使用率大于70的时候回执行释放缓存命令,后面的>>是重定向命令吗,会将脚本的执行结果写进文件freeMemoryLog.txt中,便于我们查看。" v$ N5 k8 k; G
0 j# M7 R4 C% H! |( u5 @; W7 ?. F
cron是不需要重新启动的,文件保存后会自动生效。
发表于 2023-3-18 10:17:46 | 显示全部楼层
好像根目录没法改
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-5-5 10:17 , Processed in 0.027282 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表