找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4552|回复: 7

HN8145X6重要技巧之内存回收

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

) u; \0 a) C4 f1 N% \echo 1 > /proc/sys/vm/compact_memory4 D  Q& m& h7 J$ \. L% A& z
echo 3 > /proc/sys/vm/drop_caches! l$ R1 A$ |; P: O! i, R& R  b
6 @0 O: c' }6 X9 D- _% c& s
以上命令需要提升到root权限运行,实测效果明显。9 \' y6 N. w5 ~& ^6 s
 楼主| 发表于 2022-2-17 16:41:20 | 显示全部楼层
银斐 发表于 2022-2-17 16:339 e: u: [* \$ d) m1 A: H
有详细一点的命令吗

; p; O8 r0 ~& G% ashell下再执行一次su,不过有的版本su被阉割或者root密码被改了。
发表于 2022-2-17 16:33:27 | 显示全部楼层
有详细一点的命令吗
发表于 2022-2-17 22:21:23 | 显示全部楼层
本帖最后由 sdwfwmj 于 2022-2-17 22:44 编辑 6 S$ P' ]/ i9 S$ n4 z

4 R: p' m. N4 o        我改天试试,以前只试过第二个命令,效果不明显,如果可以的话我就去其虚拟机中弄一个定时任务。
; G# u6 L4 l$ a* P: ?: r  y4 Y8 Q" m# o
       补充一个给大家注意,如果固件是035,请不要在后端接支持elink的路由器,要不然会导致/sbin/easymesh占内存快速上升。不过如果可以的话,在虚拟机中定一个定时任务,每12小时执行一次killall easymesh也行。
; R  E* ~( B; `7 d- U
  r0 R! j: h5 v- T
发表于 2022-2-20 17:55:21 | 显示全部楼层
学习学习,有多个会用的命令,以备不时之需
发表于 2022-3-13 22:23:53 | 显示全部楼层
哪个大神能不能帮忙写一个定时清理内存缓存的代码?(每次要进入telnet 执行这个代码不够方便)
# P3 l' z2 Z( s2 B设置内存超过一定百分比(比方说70%)就执行清理内存的命令。& v6 t) x9 R2 d8 M4 H
搜索了一下,实在不会修改:
* s/ @2 g0 S* @. Ohttps://blog.csdn.net/weixin_30691649/article/details/116648833/ m8 g" z- Q5 k" O! M- m
-----------
; f, m! ~% `, Z% C下面给出shell脚本freeMemory.sh
1 f6 L" r$ G: _) m: a
+ U9 T8 j4 ?8 d#!/bin/sh! E6 A' j7 W& ^0 X8 z9 B# g  Z
$ ?' u& e/ H3 R7 _3 E- e
#内存总量
! G% X' s3 t* o% m7 X  Y8 [+ M
% h! H+ b0 C: m/ `0 [/ e& P- utotal=$(free-m|grep Mem |awk'{print $2}')3 h. j: W, q2 }4 t+ j- T& I

9 u, U( r5 x; W; g, M) x8 o* m- g5 i3 M! \#已使用内存. N8 F# t$ n9 B* k
' U6 k7 [; c# Z2 F* v
used=$(free-m|grep Mem |awk'{print $3}')
- v2 J% h9 P" \$ i( a7 z5 s( ~
#内存使用率
8 z0 k1 J- b! u& {2 l, Z2 Q) |7 Y, s6 J3 O9 P1 C* ?
rate=$(($used*100/$total))
: [7 v+ S5 i! |+ y6 Q3 _; Q  ?: X8 U( H7 ~  M+ `
time=date, Y  T1 C# |) x" w+ }
- S1 ~$ O7 O, B( b: x3 p! v
echo"############$(date)###############"
* E: l! E( d6 q( r6 p$ H/ f7 O# Z2 y- N: v
#$1 is max Mem
+ R2 c$ p" c0 N; ?" r  m7 E0 D  T% O$ y: F2 I/ J; I0 F
if[$rate-gt$1]  y" S% m; W+ T. s; B0 D
7 P/ }0 V6 q: W0 d- N: X
then% V$ w7 E; P$ F# S, j5 c

5 l- Y$ K8 v; N1 Decho"rate=$rate freeMemory start!"% J( a6 y8 v9 _
  o8 Q% W3 [. \
sync
6 j# H" m$ F- z8 u5 @- y9 I$ r6 M7 c: }) Z
echo 3 >> /proc/sys/vm/drop_caches4 W$ O8 W& R% U3 y, W/ q; o
$ X# i8 X5 e% x2 m# ^1 Z! J
echo"FreeMemory Success!"
$ p+ z5 q: t. i9 `# ?7 y' _+ t4 ]& x
3 L! Y" K. A' eelse
5 q9 b* E% I/ ]9 d) O5 ^
2 P0 z7 g9 P6 @- uecho"rate=$rate Memory is normal"+ X( i: `5 d, t. s, q: ^1 l6 i, Q
* s) n# g7 y+ P
fi
6 i: n5 ~8 G2 E# ?: \7 q; R9 e$ ?$ ^% r2 C
1、执行命令crontab -e打开编辑定时配置文件' j; |% n4 S% q5 D( z5 y3 {# V
* p7 s' l: C# B
2、在文件的最后面添加下面的命令:! L3 T$ w0 y. D$ @  u1 \

* r- [8 U1 V+ n5 A5 c- k0 23 * /root/freeMemory.sh 70>>/root/freeMemoryLog.txt
& s3 M+ M! a0 s! z
* w0 |# O7 h1 f4 ^" U上面我们设置了每天的23点执行命令我们的脚本,参数设置70,就是当检测到内存使用率大于70的时候回执行释放缓存命令,后面的>>是重定向命令吗,会将脚本的执行结果写进文件freeMemoryLog.txt中,便于我们查看。
  v$ q7 `% m. z- O, Z! _* `( B
2 u& b% Y; I* t; N+ x5 [cron是不需要重新启动的,文件保存后会自动生效。
发表于 2023-3-18 10:17:46 | 显示全部楼层
好像根目录没法改
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-20 03:37 , Processed in 0.028459 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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