루트 권한 없이 Linux 캐시 지우기

루트 권한 없이 Linux 캐시 지우기

캐시를 지우려면 보통 전화해요

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

이를 위해서는 루트 권한이 필요합니다. 왜 가끔씩 이 작업을 수행해야 합니까? 일부 프로그램의 런타임에 큰 영향을 미칠 수 있기 때문입니다. 내 질문은: 슈퍼유저 권한 없이 어떻게 이 작업을 수행할 수 있습니까? 특히 다음 두 가지 경우입니다.

1) 내/사용자에게는 루트 권한이 없습니다. 일반 사용자가 위 명령을 실행할 수 있도록 시스템 관리자가 할 수 있는 일이 있습니까?

2) 캐시 삭제 호출은 쉘 스크립트 내에서 이루어지며 전체 스크립트는 슈퍼유저 권한으로 실행할 수 없습니다. 예를 들어 "mpirun"을 호출하는 이 스크립트의 인스턴스가 여러 개 있기 때문에 루트로 실행하면 안 됩니다. 실제로는 몇 줄만 필요하지만 스크립트의 모든 항목을 루트로 실행하는 것은 나에게는 좋은 습관이 아닌 것 같습니다.

편집: 언급하는 것을 잊었습니다: 위 명령은 루트로 로그인한 경우에만 작동합니다. 그렇지 않으면 명령은 다음과 같습니다.echo 3 | sudo tee /proc/sys/vm/drop_caches

답변1

이 답변을 시도해 보겠습니다. OP는 어떤 OS가 사용되고 있는지 말하지 않았으므로 조금 일반적으로 설명하겠습니다.
먼저,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 755 free_os_cache.sh

다음으로, 이것을 sudoers 파일에 추가하세요:
ALL = /path_to_file/free_os_cache.sh

이제 사용자는 다음 명령을 실행할 수 있습니다.
sudo /path_to_file/free_os_cache.sh

이는 특정 환경에 맞게 조정할 수 있을 만큼 가까워야 합니다.
$0.02

관련 정보