找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4546|回复: 7

HN8145X6重要技巧之内存回收

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

1 I6 ?! [7 w: a0 b+ mecho 1 > /proc/sys/vm/compact_memory) _1 G# ^5 h. b# h( L; B
echo 3 > /proc/sys/vm/drop_caches; V1 l$ D" A8 s# S. x' \

5 _/ ?+ a( Y! Z# L以上命令需要提升到root权限运行,实测效果明显。
3 F# e7 E; p% e( C0 L2 }
 楼主| 发表于 2022-2-17 16:41:20 | 显示全部楼层
银斐 发表于 2022-2-17 16:33
  X! Q0 O0 A7 a% U% O有详细一点的命令吗
' h& q* b* X1 c  l
shell下再执行一次su,不过有的版本su被阉割或者root密码被改了。
发表于 2022-2-17 16:33:27 | 显示全部楼层
有详细一点的命令吗
发表于 2022-2-17 22:21:23 | 显示全部楼层
本帖最后由 sdwfwmj 于 2022-2-17 22:44 编辑 $ h/ A! H1 f3 ~( L

6 ?# L# C+ j5 ?) V0 \        我改天试试,以前只试过第二个命令,效果不明显,如果可以的话我就去其虚拟机中弄一个定时任务。
, d- w3 s5 n! w8 `# D' X. s
1 ~+ @+ Z! j# d0 b' ~- ?5 X       补充一个给大家注意,如果固件是035,请不要在后端接支持elink的路由器,要不然会导致/sbin/easymesh占内存快速上升。不过如果可以的话,在虚拟机中定一个定时任务,每12小时执行一次killall easymesh也行。
5 m* X& Q0 F: Y3 }' j8 u# Y- y6 Q9 u1 ^5 b
发表于 2022-2-20 17:55:21 | 显示全部楼层
学习学习,有多个会用的命令,以备不时之需
发表于 2022-3-13 22:23:53 | 显示全部楼层
哪个大神能不能帮忙写一个定时清理内存缓存的代码?(每次要进入telnet 执行这个代码不够方便)
5 ^* k* \) |" e2 ]3 a) M设置内存超过一定百分比(比方说70%)就执行清理内存的命令。7 v2 b. C% \/ W) F' w0 Q
搜索了一下,实在不会修改:
& r( ~  r+ f  d8 r$ U: P0 p: }https://blog.csdn.net/weixin_30691649/article/details/116648833
1 o  J$ b; g- j+ p5 I: ^-----------
7 a, S! d; a6 p下面给出shell脚本freeMemory.sh9 F) w: N9 _! [
0 ^, X8 J+ D# W  [3 ~
#!/bin/sh4 q! |: B" S+ [" |0 }- F  |9 C

. q: }7 ]4 V% g* K; K#内存总量
8 E; ^, K( j8 I  n% x. @
" B* }; J! @6 o  Z' V5 L: O, A( `total=$(free-m|grep Mem |awk'{print $2}')
5 o1 ?2 K6 l6 I( a% f/ @, K
; S+ C/ r( H8 ^#已使用内存
  ~) C1 f8 h/ Q. H  r! U4 A* q0 S$ ~
used=$(free-m|grep Mem |awk'{print $3}')) n  T0 ]) I, A3 S' m( L& X
& h. S- v; x1 x9 `4 W  B
#内存使用率
( `9 ^+ W! D$ Z# [( O: _9 d, d. Y6 R5 m# s/ L" t; N" _: t
rate=$(($used*100/$total))
4 e3 k2 a7 q/ W- k5 K# {3 s
0 x( e& N* s0 z% l. d3 Gtime=date7 g3 f& ~% i/ ^5 a3 D; Z
! Z1 X" N  |5 g, Z0 A
echo"############$(date)###############". l! p/ g: v5 v$ ~$ F" Q+ U0 h
$ x9 M  o8 Y$ g4 j$ O
#$1 is max Mem, |0 C! x) m* |3 ~
8 }4 O& J# n, a1 n8 h
if[$rate-gt$1]. s% m& X3 R7 V

" c+ r8 t3 X; o% c8 w' W" r* h: tthen: z: d" E% P' h* A5 l; W

, A: P2 m+ S$ W+ G6 R3 T  h* lecho"rate=$rate freeMemory start!") y: I( @# l8 m+ o) f$ p
4 q  _8 R4 {( ]8 Z5 j3 J0 M
sync
; q( ]- q/ f8 C% ]! ^% |9 p. u1 U& J  ?& q( x
echo 3 >> /proc/sys/vm/drop_caches
. j/ z( B/ g- H3 ~+ \' k9 Z5 ?8 T  P& ?# Z. N
echo"FreeMemory Success!"
) l5 d5 M& M5 s2 G; a5 n! `* `: |: L' v( c3 e
else1 |1 [. a6 I8 R( z- x  ]9 j+ U% L
8 i1 U. p. B& Z: a
echo"rate=$rate Memory is normal"
5 f1 P* Z9 H" {+ U. \* v+ k6 h7 i% t% x% e
fi- j7 Y4 Y+ Y6 |2 n3 ^/ W
7 k1 `4 w4 \: I1 l. h) q& e) h
1、执行命令crontab -e打开编辑定时配置文件- I+ s) g8 e: X+ }5 L- b7 n9 n/ D

( L6 M5 X; y& g- [2 K7 Z2、在文件的最后面添加下面的命令:/ t$ ~* C0 y) }1 {. u3 j# n' x

+ \8 ~. J3 ?9 B1 Y; S0 23 * /root/freeMemory.sh 70>>/root/freeMemoryLog.txt
% N: c7 E6 P* m( {, p/ U
& F. q: c' I, @+ A1 J7 E0 f上面我们设置了每天的23点执行命令我们的脚本,参数设置70,就是当检测到内存使用率大于70的时候回执行释放缓存命令,后面的>>是重定向命令吗,会将脚本的执行结果写进文件freeMemoryLog.txt中,便于我们查看。7 q0 S3 M9 O% l/ z: V
$ }9 x, a" L/ \) l
cron是不需要重新启动的,文件保存后会自动生效。
发表于 2023-3-18 10:17:46 | 显示全部楼层
好像根目录没法改
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 15:37 , Processed in 0.035702 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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