tmux 세션의 `tail -f data_log | grep 키워드가 하드 디스크 소모를 일으킬 수 있는 이유는 무엇입니까?

tmux 세션의 `tail -f data_log | grep 키워드가 하드 디스크 소모를 일으킬 수 있는 이유는 무엇입니까?

시나리오는 어제 API 버그를 확인해야 했던 것과 같습니다. 그래서 로그 서버에 로그인했습니다. 나중에 작업에 다시 연결할 수 있도록 tmux 세션을 열었습니다.

디버그를 입력합니다 tail -f data_log | grep keyword. 하지만 당시에는 해결되지 않았습니다. 따라서 나중에 사용할 수 있도록 이 tmux 세션을 유지하기로 결정하고 터미널 창을 닫았습니다.

오늘 내 동료가 내 tmux 세션에 tail -f data_log | grep keyword해당 로그 서버의 하드 드라이브가 부족하다고 말했습니다. 이로 인해 저는 부끄러움과 후회, 혼란스러움을 느꼈습니다.

as는 tail -f자체 stdout 파일 설명자를 열고 새로 추가된 data_log 내용을 터미널 화면으로 리디렉션합니다.

이 표준 출력 파일 설명자는 무제한의 데이터를 받을 수 있습니까?
이 파일 설명자는 그렇게 많은 양의 데이터를 어디에 저장합니까? 저장할 실제 파일이 있습니까?
tmux가 이 문제와 관련이 있나요?
tmux가 이 질문과 관련이 없는 경우 실행 중인 터미널을 열고 tail -f my_logcrontab을 사용하여 my_log에 초당 1바이트를 추가하면 초당 2바이트가 내 디스크에 저장된다는 의미입니까? (tail의 경우 1, crontab 작업의 경우 1)?

답변1

가능한:

  1. data_log매일 많은 양의 데이터가 기록됩니다.
  2. 아마도 를 사용하여 회전됩니다 logrotate. 일반적인 회전 단계에는 최소한 파일 이름 바꾸기와 압축되지 않은 로그의 압축 및 삭제가 포함됩니다.
  3. tail -f(적어도 GNU, 기타)는 기본적으로 이전 파일이 이동되거나 삭제되더라도 계속해서 읽습니다. 파일이 삭제되었지만 프로그램에 열린 파일 핸들이 있는 경우 Linux는 데이터를 디스크에 유지하고 공간을 사용할 수 없는 것으로 표시합니다.
  4. 즉, 로그 회전으로 인해 디스크 공간이 늘어나지는 않지만 로그는 압축되고 압축되지는 않았지만 삭제된 로그가 발생합니다.둘 다공간을 차지합니다.

이 작업을 충분히 오래 수행하면 로그 회전이나 다른 사람이 로그를 수동으로 삭제하려는 시도에도 불구하고 서버 공간이 부족해질 수 있습니다.

관련 정보