轉載: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,選擇用戶重新登錄。
例如:
- toohoo@ubuntu:~$ ps -t tty2|grep Xorg
- 4350 tty2 00:12:02 Xorg
- toohoo@ubuntu:~$ kill 4350
方法二:定期清理內存
該操作可能導致部分瀏覽器頁面內容丟失
轉:https://blog.csdn.net/qq_21398167/article/details/51657977
- # vim /root/satools/freemem.sh
-
- #!/bin/bash
- used=`free -m | awk 'NR==2' | awk '{print $3}'`
- free=`free -m | awk 'NR==2' | awk '{print $4}'`
-
- echo "===========================" >> /var/log/mem.log
- date >> /var/log/mem.log
- echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log
-
- if [ $free -le 100 ] ; then
- sync && echo 1 > /proc/sys/vm/drop_caches
- sync && echo 2 > /proc/sys/vm/drop_caches
- sync && echo 3 > /proc/sys/vm/drop_caches
- echo "OK" >> /var/log/mem.log
- else
- echo "Not required" >> /var/log/mem.log
- fi
將腳本添加到crond任務,定時執行。
- # echo "*/1 * * * * root /root/satools/freemem.sh" >> /etc/crontab
- 或
- crontab -e
- 添加
- */1 * * * * root /root/satools/freemem.sh
(切換到root用戶下將上面那句話加入到crontab裏,注意格式*之間的空格 )
加入自動釋放內存腳本以後,再也沒有死機過。