올바른 로그 삭제법
최근 서버의 용량이 부족해서 긴급하게 로그를 rm명령어로 삭제하였는데
용량이 삭제한 만큼 확보가 안되고 있었다.
또한 로그파일이 생성이 안된다. 결과적으로 확보도 안되고 로그의 데이터도 쌓이지 않게된다.
원인을 알아보니까 프로세스가 해당 파일의 핸들러를 계속 잡고 있어서 발생하는 문제이다.
시스템 로그인경우 재부팅 말고 없지만 demon 프로세스인경우
아래처럼 lsof 명령어로 해당 demon을 찾고 재시작만 하면된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
lsof
gdbus 1030 1259 root mem REG 0,18 2811 /lib/arm–linux–gnueabihf/libnl–3.so.200.19.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 2813 /lib/arm–linux–gnueabihf/libnl–genl–3.so.200.19.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 9252 /usr/lib/arm–linux–gnueabihf/libnl–route–3.so.200.19.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 9192 /usr/lib/arm–linux–gnueabihf/libgudev–1.0.so.0.2.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 2776 /lib/arm–linux–gnueabihf/libdbus–1.so.3.8.14 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 9184 /usr/lib/arm–linux–gnueabihf/libgnutls–deb0.so.28.41.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 2788 /lib/arm–linux–gnueabihf/libgcrypt.so.20.0.3 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 2859 /lib/arm–linux–gnueabihf/libuuid.so.1.3.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 9254 /usr/lib/arm–linux–gnueabihf/libnm–util.so.2.6.0 (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 2714 /lib/arm–linux–gnueabihf/ld–2.19.so (path dev=0,20)
gdbus 1030 1259 root mem REG 0,18 9649 /usr/lib/arm–linux–gnueabihf/gconv/gconv–modules.cache (path dev=0,20)
gdbus 1030 1259 root 0r CHR 1,3 0t0 2108 /dev/null
gdbus 1030 1259 root 1u unix 0xed01db80 0t0 10202 socket
gdbus 1030 1259 root 2u unix 0xed01db80 0t0 10202 socket
gdbus 1030 1259 root 3r CHR 1,9 0t0 2112 /dev/urandom
gdbus 1030 1259 root 4u unix 0xed04eec0 0t0 21506 socket
|
cs |
하지만 일부 demon은 재시작시 log가 안만들어져 restart가 안되는 경우가 있다.
어떻게 해야 올바르게 제거할까 라고 생각할수 있는데 가장 좋은 방법으로 /dev/null로 덮어 쓰기하는것이다.
1
|
cat /dev/null > “filename”
|
cs |
한번 테스트 삼아해보자
위는 log의 풀더에 syslog이다.
여기서 아래의 명령어를 쳐주자
바로 용량이 비어진걸 확인할수 있고 또한 syslog에 정상적으로 로그가 쌓이는것도 확인이 가능하다.