Linux

Linux CentOS - 유용한 명령어 모음

Ryan's Tech Note 2023. 2. 26. 04:13

*. 로그 파일 정리 - 일정 기간이 지난 로그를 다른 곳으로 옮긴다. (대용량 DAS 같은 곳으로)

vi /usr/local/mv.sh

dir="$2" # Include a / at the end to indicate directory (not filename)
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "$@"

chmod 755 /usr/local/mv.sh
# /var/log 하위 디렉토리 모든 경로에서 15일이 지난 파일 모두 /hdd/log 로 디렉토리 구조 그대로 옮겨라.

find /var/log/ -mtime +15 -type f -ls -exec /usr/local/mv.sh {} /hdd/log{} \;

 

크론탭에 등록하면 매일 로그 파일을 자동으로 이동 시킨다.

crontab -e

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

#로그 파일 15일이 지나면 다른 곳으로 이동
00 05 * * * find /var/log/ -mtime +15 -type f -ls -exec /usr/local/mv.sh {} /hdd/log{} \;

 

참고 주소 : https://stackoverflow.com/questions/547719/is-there-a-way-to-make-mv-create-the-directory-to-be-moved-to-if-it-doesnt-exis

 

※ 위 방법대로 했을 때 크론 탭이 정상적으로 실행 안되는 경우 - 실행 명령어(*.sh 등) 내부에 필요한 경로들은 상대 경로를 쓰면 제대로 실행이 안된다. 무조건 절대경로를 써서 작성해 줘야 한다. 분명 개별 *.sh 는 실행이 잘 되는데, 왜 crontab 에서 실행이 안될까 하고 한참 헤맸다.

 


 

*. 캐시 메모리 비우기

top

top - 04:26:12 up 1 day,  4:42,  2 users,  load average: 0.60, 0.51, 0.46
Tasks: 342 total,   1 running, 341 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.0 us, 10.0 sy,  0.0 ni, 83.3 id,  0.0 wa,  1.0 hi,  0.7 si,  0.0 st
MiB Mem :  15547.3 total,   9374.7 free,   5930.0 used,    652.8 buff/cache
MiB Swap:   8192.0 total,   8191.0 free,      1.0 used.   9617.3 avail Mem

buff/cache 캐시 메모리가 너무 많이 용량을 차지하고 있는 경우에 다음 명령어로 비울 수 있다.

sync 는 메모리의 데이터를 디스크로 옮겨주는데, sync 를 먼저 안하면 데이터가 소실될 수 있다.

# 1 - Page Cache 비우기
sync && echo 1 > /proc/sys/vm/drop_caches

# 2 - dentries, inodes 비우기
sync && echo 2 > /proc/sys/vm/drop_caches

# 3 - 모두 비우기
sync && echo 3 > /proc/sys/vm/drop_caches

crontab 에 등록하고 주기적으로 비워줄수도 있다.

vi /etc/crontab

0 6 * * 0 sync && echo 3 > /proc/sys/vm/drop_caches # 매일 오전 6시에 캐시 비우기

 

참고 주소 : https://extrememanual.net/29711

 


 

백그라운드 실행 - 터미널을 종료하면 중단된다.

명령어 &

 

nohup 백그라운드 실행 - 터미널을 종료해도 실행된다.

nohup 명령어 &

 


 

 

공감과 댓글 한번 부탁 드립니다.

유용했다면 비밀 댓글로 커피 한잔 사주시면 감사히 먹겠습니다 :)