본문 바로가기

기초 공부/상식

ubuntu disk 용량이 꽉찼을 때 (nohup 및 프로세스관련)

728x90

안녕하세요 반갑습니다. 

 

최근에 운영중인 서버에서 계속 디스크가 차오르는 현상이 있어서 파일을 비웠음에도 디스크가 안비워지길래 원인을 조사하던 중 깨달은 사실을 공유하고자 포스팅합니다. 

 

ubuntu 등의 리눅스 OS를 쓰시는 분들은 disk가 꽉찬거를 어떠한 경로로든 df -h 나 htop 같은 모니터링을 통해서 꽉찬걸 확인했을 때 어느 디렉토리에서 용량을 차지하나 확인을 하실텐데 이상하게 du 등으로 확인해봐도 용량이 비워지지 않는 경우가 있으실겁니다. (제가 그랬습니다.)

 

 

그래서 lsof(lsof는 list open files을 뜻하는 명령으로, 수많은 유닉스 계열 운영 체제에서 열려있는 모든 파일과, 그 파일들을 열고 있는 프로세스들의 목록을 출력한다.) 명령어를 통해서 실행되있는 프로세스들의 용량을 쭉 살펴보니 말도안되는 크기로 뭔가가 실행되고 있었습니다. (단위가 좀 이상함)

 

해당 이미지는 재현한 거고 이런식으로 Elastic Stack에서 메트릭 비트를 통해 시스템 모니터링을 하고있었는데 nohup 으로 실행해둔 것이 용량을 말도안되게 먹고있었습니다. (위의 이미지는 재현이라 용량이 낮음.)

 

단순히 nohup으로 백그라운드 실행 후 생성되는 nohup.out 파일만 지우면 될 것이라고 생각했는데 생각보다 충격적이었습니다. 

 

해당 프로세스를 끄니까 disk용량이 순식간에 50%가 빠졌습니다.

 

해결방법은 nohup 실행시킬 때 nohup.out 파일을 생기지 않게 하는 겁니다. 정확히는 > /dev/null 의미 : stdout은 / dev / null로 이동합니다 (출력을 기록하지 않는 더미 장치). 

 

명령어 뒤에 해당 명령어를 추가해서 출력을 기록하지 않게 하는 겁니다. 해당 방법으로 실행 시킨 후 lsof를 다시확인해보면 deleted 된 부분이 없어진걸 확인할 수 있습니다.

 

 

추후에 확인해봐야할 거 같은데 이런 활성프로세스가 차지하는 용량에 대해서 어떻게 해결할지가 참 고민입니다.

 

그럼 고생하십쇼

반응형