Memory
清除沒有root權限的linux記憶體
為了清除記憶體,我通常呼叫
# echo 3 | tee /proc/sys/vm/drop_caches
這需要 root 權限。為什麼我需要偶爾這樣做?因為它會對我的某些程序的執行時產生巨大影響。我的問題是:如果沒有超級使用者權限,我怎麼能做到這一點,特別是這兩種情況:
1)我/使用者沒有root權限。系統管理員可以做些什麼來讓普通使用者執行上面的命令嗎?
- 刪除記憶體的呼叫來自 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 美元