Memory

清除沒有root權限的linux記憶體

  • October 23, 2019

為了清除記憶體,我通常呼叫

# echo 3 | tee /proc/sys/vm/drop_caches

這需要 root 權限。為什麼我需要偶爾這樣做?因為它會對我的某些程序的執行時產生巨大影響。我的問題是:如果沒有超級使用者權限,我怎麼能做到這一點,特別是這兩種情況:

1)我/使用者沒有root權限。系統管理員可以做些什麼來讓普通使用者執行上面的命令嗎?

  1. 刪除記憶體的呼叫來自 shell 腳本,不能以超級使用者權限執行整個腳本。例如,因為在這個腳本中有多個呼叫“mpirun”的實例,所以實際上不應該以 root 身份執行。並且以 root 身份執行腳本中的所有內容,雖然實際上只有幾行需要它,但對我來說似乎不是一個好習慣。

編輯:忘了提:上述命令僅在以 root 身份登錄時有效。否則命令將是echo 3 | sudo tee /proc/sys/vm/drop_caches

我會嘗試這個答案。OP沒有說正在使用什麼作業系統,所以我會有點籠統。

首先,製作一個名為 free_os_cache.sh 的文件

#!/bin/sh
# Description
# Forces the OS to clear OS caches

# Run a sync to reduce dirty caches
sync

# Tell the OS to not make warnings
echo 4 | tee /proc/sys/vm/drop_caches

# Tell the OS to clear caches
echo 3 | tee /proc/sys/vm/drop_caches

# Wait a tiny bit, just for safety (may not be necessary)
sleep 5

# Reset to 0
echo 0 | tee /proc/sys/vm/drop_caches

exit

然後,讓它執行

chmod 744 free_os_cache.sh

接下來,將其添加到您的 sudoers 文件中:

ALL = /path_to_file/free_os_cache.sh

現在,您的使用者應該能夠執行此命令:

sudo /path_to_file/free_os_cache.sh

這應該讓您足夠接近,以便您可以針對您的特定環境進行調整。

0.02 美元

引用自:https://unix.stackexchange.com/questions/548025