3 min read

올바른 로그 삭제법

최근 서버의 용량이 부족해서 긴급하게 로그를 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/armlinuxgnueabihf/libnl3.so.200.19.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  2813 /lib/armlinuxgnueabihf/libnlgenl3.so.200.19.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  9252 /usr/lib/armlinuxgnueabihf/libnlroute3.so.200.19.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  9192 /usr/lib/armlinuxgnueabihf/libgudev1.0.so.0.2.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  2776 /lib/armlinuxgnueabihf/libdbus1.so.3.8.14 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  9184 /usr/lib/armlinuxgnueabihf/libgnutlsdeb0.so.28.41.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  2788 /lib/armlinuxgnueabihf/libgcrypt.so.20.0.3 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  2859 /lib/armlinuxgnueabihf/libuuid.so.1.3.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  9254 /usr/lib/armlinuxgnueabihf/libnmutil.so.2.6.0 (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  2714 /lib/armlinuxgnueabihf/ld2.19.so (path dev=0,20)
gdbus      1030  1259                root  mem       REG       0,18                  9649 /usr/lib/armlinuxgnueabihf/gconv/gconvmodules.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에 정상적으로 로그가 쌓이는것도 확인이 가능하다.