處理記憶體不足、開啟自動掛載、df和du命令詳解
一、記憶體不足
我的記憶體被吃了,無辜提示記憶體不足怎麼辦,但是在cache,buff中有看到大量的記憶體,如何釋放
解決方案:
1、第一種方案
注意:以下三種都是臨時釋放快取的命令
(1)命令:echo 1 > /proc/sys/vm/drop_caches
[root@WALKER ~]# free -m
total used free shared buff/cache available
Mem: 2827 221 2410 9 195
Swap: 3071 0 3071
[root@WALKER ~]# echo 1 > /proc/sys/vm/drop_caches
[root@WALKER ~]# free -m
total used free shared buff/cache available
Mem: 2827 222 2543 9 61 2491
Swap: 3071 0 3071
[root@WALKER ~]# sysctl -w vm.drop_caches=1(兩天命令作用相同!)
vm.drop_caches = 1
[root@WALKER ~]#
(2)清除目錄快取和inodes
[root@WALKER ~]# echo 2 > /proc/sys/vm/drop_caches
[root@WALKER ~]# sysctl -w vm.drop_caches=2(兩條命令作用相同)
vm.drop_caches = 2
[root@WALKER ~]#
(3)清除記憶體頁的快取(如果buff和cache正在使用,這條命令是不可以用的!)
[root@WALKER ~]# echo 3> /proc/sys/vm/drop_caches
[root@WALKER ~]# sysctl -w vm.drop_caches=2(兩條命令作用相同)
2、永久生效
編輯etc下的sysctl.conf檔案,把命令寫入其中!
[root@WALKER ~]# vim /etc/sysctl.conf
[root@WALKER ~]#
3、清理檔案系統快取
使用sync命令,可以用於清理殭屍程序!
[root@WALKER ~]# sync
sync命令的作用:將記憶體緩衝區的資料,寫入到磁碟中!
二、開機自動掛載檔案
由於mount命令直接輸入是臨時生效的,下次重啟,掛載的裝置就無法使用了!
/etc/fstab檔案,是存放系統的一些靜態檔案地方,主要是系統啟動的時候,系統預設的讀取這個檔案的資訊,將指定掛載點進行掛載!
解析如上的引數:
第一列:是一個裝置的名字,可以是檔案系統,也可以是裝置名稱,NFS檔案系統
mount /dev/sdb1 /mnt 這是一種寫法
mount 192.168.1.3:/home/nfs /mnt/ -o nolock 把本地的/mnt資料夾掛載到nfs檔案系統上,且不加鎖!
第二列:掛載點
就是自己建立的目錄,或者已經存在的目錄
第三列:linux能夠支援的檔案系統型別
第四列:掛載的功能選項,有很多,預設使用defaults
第五列:dump
表示將整個資料夾備份,一般不對掛載點備份,預設都是0
第六列:fsck 磁碟檢查
預設都是0,不對磁碟進行檢查,但是根檔案系統,預設是檢查的!
通過mount -a命令,可以讀取/etc/fstab檔案所有掛載情況,之後用mount -l 可以檢視到!
三、df命令,檢查掛載點
1、df命令,檢查掛載點的使用情況
可使用的命令引數是
-h:顯示kb,mb 單位大小
-i:顯示inode數量
2、du命令,顯示磁碟空間大小、檔案大小的命令
linux檔案儲存最小單位是4K,也就是8個扇區
(1)du -h 顯示檔案大小,以kb mb為顯示單位
[root@WALKER tmp]# touch test.txt
[root@WALKER tmp]# du -h test.txt
0 test.txt
[root@WALKER tmp]# echo 1 > test.txt
[root@WALKER tmp]# du -h test.txt
4.0K test.txt
[root@WALKER tmp]# du -h * (顯示當前資料夾下所有檔案大小)
(2)du -ah 顯示目錄中所有檔案的大小
du -ah *
[root@WALKER tmp]# du -ah --max-depth=1 /home/
12K /home/slime
1.1M /home/nginx-1.20.2.tar.gz
20M /home/nginx-1.20.2
21M /home/
[root@WALKER tmp]#
[root@WALKER tmp]# du -ah *(顯示當前目錄下所有檔案大小)
[root@WALKER tmp]# du -ah --max-depth=2 /home/(統計home目錄下第二層資料夾的大小)
[root@WALKER tmp]# du -ah --exclude='*.conf' /home(統計home目錄下所有檔案大小,除了以.conf結尾的檔案)