找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4464|回复: 7

HN8145X6重要技巧之内存回收

[复制链接]
发表于 2022-2-17 16:14:04 | 显示全部楼层 |阅读模式
光猫跑一段时间之后,内存越来越少,很多时候其实内存本身并没有少,而是分配出去的缓存没有被释放,以下两条命令实现内存快速回收:% a( O. z# D& r6 t7 y

: E8 K7 T* K7 M; ?. |echo 1 > /proc/sys/vm/compact_memory
2 N8 X6 k- {: y: ~, }echo 3 > /proc/sys/vm/drop_caches; n5 L( f5 j1 f- k
/ J, d5 E3 t- w$ Q
以上命令需要提升到root权限运行,实测效果明显。
8 O- C* }: r) j6 `: c- H
 楼主| 发表于 2022-2-17 16:41:20 | 显示全部楼层
银斐 发表于 2022-2-17 16:337 M/ J8 X9 ~3 P) O8 o
有详细一点的命令吗

; l0 ]/ E  P7 W% d; z* Kshell下再执行一次su,不过有的版本su被阉割或者root密码被改了。
发表于 2022-2-17 16:33:27 | 显示全部楼层
有详细一点的命令吗
发表于 2022-2-17 22:21:23 | 显示全部楼层
本帖最后由 sdwfwmj 于 2022-2-17 22:44 编辑 2 M9 R, j) T% ~& T

+ I6 }8 n& N' {* K        我改天试试,以前只试过第二个命令,效果不明显,如果可以的话我就去其虚拟机中弄一个定时任务。2 {+ @( e9 a* ?' p
: p* B& F: H6 S+ k0 n
       补充一个给大家注意,如果固件是035,请不要在后端接支持elink的路由器,要不然会导致/sbin/easymesh占内存快速上升。不过如果可以的话,在虚拟机中定一个定时任务,每12小时执行一次killall easymesh也行。
1 a; ~- o/ y& @! Z  R" ^: T' {" b# b, j5 s5 x$ i3 k8 M
发表于 2022-2-20 17:55:21 | 显示全部楼层
学习学习,有多个会用的命令,以备不时之需
发表于 2022-3-13 22:23:53 | 显示全部楼层
哪个大神能不能帮忙写一个定时清理内存缓存的代码?(每次要进入telnet 执行这个代码不够方便)
  ]8 _& G+ w7 O5 x" r/ W设置内存超过一定百分比(比方说70%)就执行清理内存的命令。+ p1 {1 h, U- L, e2 n. D
搜索了一下,实在不会修改:7 P. G& B  O9 D" u% h8 N0 a: e& C: F% b
https://blog.csdn.net/weixin_30691649/article/details/1166488337 m5 u9 H5 x; a$ d6 I* \4 S
-----------
( Y9 ]6 y2 R& ?1 `& [- {" I& J0 m下面给出shell脚本freeMemory.sh
' N6 \/ t. E7 _
( m" S: A3 e1 |, f, v- i#!/bin/sh/ i9 h. V8 E% O9 ~% m

& m' u* K3 o$ d8 V- Y. M+ @3 ?0 C#内存总量
( V8 [/ k' S* c$ E, z4 o; O9 t- c, e, N+ {
total=$(free-m|grep Mem |awk'{print $2}')
: j+ [; i$ D% E0 f' ]* F9 {% w" j% @7 L0 O  v* ]( ]
#已使用内存
- Z! t- i. ]7 R9 a
/ y; {: z3 T8 D* Lused=$(free-m|grep Mem |awk'{print $3}')
, W( @) w$ m( `* A* R7 E
* U2 D* j1 D8 j' Q5 m#内存使用率
# f- P3 q4 R5 \! V) Y" \  v
# {9 X6 p8 \2 I# r  q: Nrate=$(($used*100/$total))
: z6 ^" [8 G0 w3 N! J
% @- s' L4 F5 m3 X) ^1 ztime=date5 l3 J' k! I1 R8 X- i9 }' l
( f) m9 W! L8 Z  z* H7 n( Q
echo"############$(date)###############"7 o$ T" U* ?( U9 |4 s; a; C; ^
  r4 _% k/ ~3 B& O1 X- D/ M
#$1 is max Mem
! R! a% s( V2 i
% j4 q" p8 q& V" x( C% k' F* S# [' {if[$rate-gt$1]
. s. q$ @" e- u6 s# o, S: \
8 R  S8 W1 p0 u. u$ B, n& ~# Wthen. y) `, x0 O$ Y$ ~! E, J, l* H

* L$ G# I( J! g, \( p1 X- Q" R/ fecho"rate=$rate freeMemory start!"
) v: f* ^2 k1 p6 Z  ^- a. p0 h" {; k& I% f# N# B
sync
8 b, t) H/ v$ a1 h, f+ D
, N; g* p- E$ y. F1 xecho 3 >> /proc/sys/vm/drop_caches
0 c# {# p  j( X/ ^( s1 P% g2 U9 G& \  u+ S6 o& }! w. F
echo"FreeMemory Success!"
$ {; B( T- y$ g# A$ C/ r! Q$ y* h$ @1 e# B/ I
else
/ h. t4 a& @, M/ d" O  |9 k' g* @* V/ k- E+ {* V
echo"rate=$rate Memory is normal"
! y6 C" H! H: H* G, L: B( O' l% {. C
! ^* ?# D6 f* z3 Pfi( _& Y2 q9 ^$ G& ]
9 W2 y1 E! ?  [0 d0 w3 ?  `
1、执行命令crontab -e打开编辑定时配置文件
6 v+ R3 i- K; v( M* ]/ e! j4 h$ |& i% v( b# X+ K2 }
2、在文件的最后面添加下面的命令:
! a: B+ ?0 v: G- j9 v
+ X* R  P7 B; N+ W0 23 * /root/freeMemory.sh 70>>/root/freeMemoryLog.txt
$ S4 Q$ c+ h# d. f' L; w8 D
  Q: t/ ~) \3 M% Z上面我们设置了每天的23点执行命令我们的脚本,参数设置70,就是当检测到内存使用率大于70的时候回执行释放缓存命令,后面的>>是重定向命令吗,会将脚本的执行结果写进文件freeMemoryLog.txt中,便于我们查看。
+ g# h  M3 P2 c/ @% C& K7 o3 S% ]/ q$ |, Z8 \) U9 }, j( M
cron是不需要重新启动的,文件保存后会自动生效。
发表于 2023-3-18 10:17:46 | 显示全部楼层
好像根目录没法改
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-5 08:52 , Processed in 0.027386 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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