Bash
如何刪除掛載的 tmpfs 目錄使用的共享記憶體?
我執行了這個命令來創建一個 RAM 磁碟:
mount -t tmpfs -o size=60G tmpfs /tmp/ramdisk
之後,我將幾個文件複製到這個虛擬文件系統中,如下所示:
cp /mnt/user/hugefile.bin /tmp/ramdisk/hugefile.bin cp /mnt/user/hugefile2.bin /tmp/ramdisk/hugefile2.bin cp /mnt/user/hugefile3.bin /tmp/ramdisk/hugefile3.bin
然後,最後一條
cp
命令凍結,CPU 負載達到最大值。我認為是因為 RAM 磁碟的大小大於可用記憶體。我用 CTRL+C 打斷了它。過了一會兒,我刪除了掛載的 RAM-Disk,如下所示:
umount /tmp/ramdisk
但這就是我現在的問題,它沒有釋放共享記憶體:
free -g total used free shared buff/cache available Mem: 62 0 0 53 61 7 Swap: 0 0 0
如您所見,虛擬記憶體的使用率不高:
df -BG | grep tmpfs tmpfs 1G 1G 1G 1% /run devtmpfs 32G 0G 32G 0% /dev tmpfs 32G 0G 32G 0% /dev/shm tmpfs 1G 1G 1G 1% /var/log tmpfs 4G 0G 4G 0% /tmp/plextranscode
我發現這個提示用來
ipcs
分析用法,但結果是空的:ipcs ------ Message Queues -------- key msqid owner perms used-bytes messages ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status ------ Semaphore Arrays -------- key semid owner perms nsems
我也找到了這個解決方案,但我害怕殺死其他程序的數據。沒有更具選擇性的解決方案嗎?
我也找到了這個解決方案,但我害怕殺死其他程序的數據。沒有更具選擇性的解決方案嗎?
echo 3 > /proc/sys/vm/drop_caches
不會也不能殺死任何程序或對您的系統造成任何損害 - 它只是從您的記憶體中驅逐所有內容,而不是共享記憶體。ipcs
和你的問題也沒有關係。
tmpfs
確實佔用了共享記憶體,但解除安裝tmpfs
掛載點必須自動釋放您的共享記憶體。為什麼沒有發生在你身上,我不知道。我相信你
/tmp/ramdisk
的仍然安裝,但由於某些原因df
沒有顯示它。
reboot
將解決您的問題。