ubuntu經常死機卡死,內存交換區清理

轉載:https://blog.csdn.net/ATOOHOO/article/details/88169508

                                        <p>===================方法更新2019.4.11:環境:Ubuntu18.04========================</p>

發現Ubuntu18.04LTS的桌面經常被卡死,操作毫無反應,此時電腦的內存已經飽滿,交換區也已經飽滿,等待電腦反應過來,能給你一次關閉進程刷新頁面的機會幾乎是不存在的,而且此時想進入tty終端往往也是失敗的,這時候的解決方法也許就是萬能的關機重啓了。或許能夠進入到tty終端,但是登錄時候也是一直卡殼,沒有反應。或許成功了,成功殺死進程Xorg,重新登錄到系統,但是會發現很快就又會變得卡殼了,原因是隻是關閉了Ubuntu桌面程序,內存並沒有釋放掉。

所以最終原因:桌面測程序並不是導致卡殼的更遠,而就是內存飽滿,交換區飽滿導致的,因此新方法是釋放內存,釋放交換區Swp,將電腦恢復接近到開機的狀態。

下面的方法是基於電腦還可以操作時候,雖然很卡:

查看內存和交換區的使用情況可以使用命令:
 

# free -m

也可以使用工具htop,推薦使用這個,個人覺得很好用~

方法一:先應該同步一下,強行將交換區的內容保存到內存
 

# sync

然後再執行下面命令:

# echo 3 > /proc/sys/vm/drop_caches

此時使用free -m查看內存佔用情況,可以看到交換區被釋放。如果交換區還在使用,沒有反應,嘗試方法二

方法二:關閉和重啓交換區:要求內存剩餘的大小,能夠保存交換區的文件大小:

關閉交換區,等待完成即可:

# swapoff -a

重啓交換區:

# swapon -a

此時發現交換區完全被清空,火狐就又可以順暢運行了。

 

=============================以下爲之前的方法==================================

方法一:殺死Xorg

Ubuntu擁有6個tty終端(tty1~6),按住Ctrl+Alt+(F1/F2/F3/F4/F5/F6)可以分別進入tty(1~6)終端,Ubuntu18.04 默認tty1是選擇用戶登錄界面,tty2往往就是對應卡死的桌面位置,我們選擇tty3進行操作:

(1)Ctrl+Alt+F3進入tty3終端後先輸入你的用戶名和密碼登錄,

(2)使用指令ps -t tty(1~6)查看進程,Xorg往往就是在tty2,記住Xorg的PID,使用kill PID 殺死進程即可

(3)回到tty1,選擇用戶重新登錄。

例如:

  1. toohoo@ubuntu:~$ ps -t tty2|grep Xorg
  2. 4350 tty2 00:12:02 Xorg
  3. toohoo@ubuntu:~$ kill 4350

方法二:定期清理內存

該操作可能導致部分瀏覽器頁面內容丟失

轉:https://blog.csdn.net/qq_21398167/article/details/51657977

  1. # vim /root/satools/freemem.sh
  2. #!/bin/bash
  3. used=`free -m | awk 'NR==2' | awk '{print $3}'`
  4. free=`free -m | awk 'NR==2' | awk '{print $4}'`
  5. echo "===========================" >> /var/log/mem.log
  6. date >> /var/log/mem.log
  7. echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log
  8. if [ $free -le 100 ] ; then
  9. sync && echo 1 > /proc/sys/vm/drop_caches
  10. sync && echo 2 > /proc/sys/vm/drop_caches
  11. sync && echo 3 > /proc/sys/vm/drop_caches
  12. echo "OK" >> /var/log/mem.log
  13. else
  14. echo "Not required" >> /var/log/mem.log
  15. fi

將腳本添加到crond任務,定時執行。

  1. # echo "*/1 * * * * root /root/satools/freemem.sh" >> /etc/crontab
  2. crontab -e
  3. 添加
  4. */1 * * * * root /root/satools/freemem.sh

(切換到root用戶下將上面那句話加入到crontab裏,注意格式*之間的空格 )

加入自動釋放內存腳本以後,再也沒有死機過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章