Linux 시스템에서 버퍼 캐시를 비우는 방법과 이를 정기적으로 수행하는 방법을 설명하겠습니다. 버퍼 캐시는 파일 시스템에서 디스크 I/O 성능을 향상시키기 위해 사용되지만, 때로는 시스템 메모리를 확보하기 위해 수동으로 캐시를 비워야 할 때가 있습니다.
1. 수동으로 버퍼 캐시 비우기
Linux에서 버퍼 캐시를 비우는 명령은 sysctl
이 아닌 직접 echo
명령을 사용하여 /proc/sys/vm/drop_caches
파일에 적절한 값을 쓰는 방식으로 수행됩니다. 이는 메모리를 비우는 세 가지 옵션을 제공합니다:
- 1: 페이지 캐시를 비웁니다.
- 2: dentries와 inodes를 비웁니다.
- 3: 페이지 캐시, dentries, inodes를 모두 비웁니다.
먼저, 캐시를 비우기 전에 시스템에서 안전하게 이를 수행할 수 있도록 하는 명령이 필요합니다. 보통 관리자 권한을 필요로 하며, 이를 위해 sudo
를 사용합니다.
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
sync
명령은 디스크의 데이터를 동기화하여, 모든 변경 사항이 디스크에 기록되도록 합니다.echo 3 | sudo tee /proc/sys/vm/drop_caches
명령은 페이지 캐시, dentries, inodes를 모두 비우는 명령을 실행합니다.
이 방법은 임시로 메모리를 확보하는데 유용합니다.
2. 정기적으로 버퍼 캐시 비우기
정기적으로 버퍼 캐시를 비우려면 cron
작업을 설정할 수 있습니다. cron
은 정기적인 작업을 예약하는 데 사용되는 Linux의 데몬입니다.
2.1 cron
작업 설정
- crontab 파일 편집
crontab -e
명령을 사용하여crontab
파일을 편집합니다. 이 명령을 실행하면 현재 사용자의crontab
파일이 열립니다.
sudo crontab -e
- 작업 추가
cron
표현식을 사용하여 특정 시간 간격으로 캐시를 비우는 명령을 추가할 수 있습니다. 예를 들어, 매일 자정에 캐시를 비우려면 다음과 같이 설정할 수 있습니다.
0 0 * * * sync && echo 3 > /proc/sys/vm/drop_caches
위의 예는 매일 자정(00:00)에 sync
명령을 실행하고, 그 후 캐시를 비우는 명령을 수행합니다.
crontab
표현식의 의미는 다음과 같습니다:
- 첫 번째
0
: 분 (0분) - 두 번째
0
: 시 (0시, 자정) - 세 번째
*
: 일 (모든 날) - 네 번째
*
: 월 (모든 달) - 다섯 번째
*
: 요일 (모든 요일)
- 작업 저장 및 종료
- 작업을 추가한 후 파일을 저장하고 종료합니다. 이 작업이 설정되면, 지정된 시간에 캐시를 비우는 작업이 자동으로 실행됩니다.
2.2 cron
작업 예제
- 매 시간마다 캐시를 비우고 싶다면 다음과 같이 설정할 수 있습니다:
0 * * * * sync && echo 3 > /proc/sys/vm/drop_caches
- 매일 오후 1시에 캐시를 비우려면 다음과 같이 설정할 수 있습니다:
0 13 * * * sync && echo 3 > /proc/sys/vm/drop_caches
3. 스크립트로 버퍼 캐시 비우기
정기적인 캐시 비우기 작업을 더 관리하기 쉽게 하려면, 스크립트를 작성하여 cron
작업에 사용하거나 수동으로 실행할 수 있습니다.
3.1 스크립트 작성
/usr/local/bin/clear_cache.sh
와 같은 경로에 스크립트를 작성할 수 있습니다.
sudo nano /usr/local/bin/clear_cache.sh
스크립트 내용:
#!/bin/bash
# Sync 데이터
sync
# 캐시 비우기
echo 3 > /proc/sys/vm/drop_caches
# 로그 남기기
echo "[$(date)] Cache cleared by clear_cache.sh" >> /var/log/clear_cache.log
스크립트 저장 후, 실행 권한을 부여합니다.
sudo chmod +x /usr/local/bin/clear_cache.sh
3.2 cron
에 스크립트 추가
이제 cron
작업에 이 스크립트를 호출하도록 설정할 수 있습니다.
0 0 * * * /usr/local/bin/clear_cache.sh
이렇게 하면 매일 자정에 clear_cache.sh
스크립트가 실행됩니다.
주의 사항
- 빈번한 캐시 비우기: 너무 자주 캐시를 비우면 시스템 성능이 저하될 수 있습니다. 캐시는 시스템 성능을 최적화하기 위해 설계되었기 때문에, 빈번한 캐시 비우기는 일반적으로 권장되지 않습니다.
- 메모리 사용: 캐시를 비워도 실제로 메모리가 필요한 프로그램이 없다면, Linux는 다시 캐시를 채우려고 할 수 있습니다. 따라서 캐시를 비우는 것은 메모리가 부족한 경우에만 사용해야 합니다.
- 시스템 관리자 권한: 캐시를 비우기 위해서는 관리자 권한이 필요합니다.
sudo
를 사용하여 명령을 실행하거나cron
작업을 설정할 때 주의가 필요합니다.
이러한 방법들을 통해 Linux 시스템에서 버퍼 캐시를 관리할 수 있습니다. 적절한 시점과 빈도를 선택하여 캐시를 비우는 것이 중요합니다.
'Linux Unix > Command' 카테고리의 다른 글
[ Linux ] deb 파일 설치하기 (0) | 2024.06.22 |
---|---|
[ Linux ] 버전 보는 방법 (0) | 2024.06.20 |
[ Linux ] Sed 사용하기 (0) | 2022.02.27 |
[ Linux ] sed - 여러 파일 내 특정 문자열 교체 하기 (0) | 2021.08.03 |
[ Linux ] SSH Server 설치하기 - 간단 (0) | 2019.09.08 |