1. 程式人生 > 其它 >處理記憶體不足、開啟自動掛載、df和du命令詳解

處理記憶體不足、開啟自動掛載、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

        2452
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結尾的檔案)