![오프라인 임시 데이터에 대한 규칙](https://linux55.com/image/52237/%EC%98%A4%ED%94%84%EB%9D%BC%EC%9D%B8%20%EC%9E%84%EC%8B%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B7%9C%EC%B9%99.png)
작은 유틸리티를 작성할 때 가끔 작은 양의 데이터를 유지하고 싶을 때가 있습니다.~ 사이실행. 일반적으로 캐싱 목적이지만 프로그램이 데몬으로 실행되는 것을 원하지 않는 경우입니다. 이에 대한 합의가 있습니까? 파일을 만드는 /tmp
것은 일반적으로 메모리에 보관되고 닫힐 때만 지워지기 때문에 당연해 보이지만 다른 방법이 있는지 궁금합니다. 또한 파일 이름을 지정하는 규칙이 있나요 /tmp
?
답변1
시스템 관리자가 프로그램을 설치했고 가끔 데이터를 삭제해도 괜찮다면 아래에 디렉터리를 생성하세요./var/cache
. 아래 파일은 시스템 관리자가 언제든지 삭제할 수 있지만 /var/cache
일반적으로 시스템의 디스크 공간이 부족하지 않는 한 삭제되지 않습니다. 이를 통제할 수 없도록 관리하는 /var/cache/YOUR-DIRECTORY
것은 애플리케이션의 책임입니다 .
시스템 관리자가 프로그램을 설치했으며 응용 프로그램 제어 없이 데이터를 절대 삭제해서는 안 되는 경우/var/lib
.
이 목적 으로 사용하지 마십시오 /tmp
. 재부팅 시 지워질 수 있습니다(종종 그렇습니다). /tmp
애플리케이션에 대한 개별 호출 간에 유지되지 않는 데이터에만 적용됩니다. 둘 중 하나를 사용하지 마십시오 /var/tmp
. 일반적으로 재부팅 시 삭제되지 않지만 시스템 관리자는 언제든지 삭제하도록 선택할 수 있습니다.
개별 사용자가 애플리케이션을 실행하고 각 사용자가 자신의 데이터세트를 갖고 있는 경우 파일은 사용자의 홈 디렉터리에 있어야 합니다. 다음을 사용하는 것 외에는 사용자 홈 디렉터리의 파일을 구성하기 위한 전통적인 Unix 표준이 없습니다.이름이 .
("dotfile")로 시작하는 파일. 현대적인 기준이 있는데,XDGFreeDesktop 사양. 캐시 데이터(삭제가 가능하고 성능 외에는 영향을 주지 않음)의 경우 $XDG_CACHE_HOME
기본적으로 로 설정된 아래 ~/.cache
에 디렉터리를 생성 하거나 홈 디렉터리 바로 아래에 디렉터리를 생성합니다(이 경우) . (으로 시작하는 ).$XDG_DATA_HOME
~/.local/share
.
답변2
또한 , 전역적으로 쓰기가 가능 /run
하지만 루트 권한이 필요하다는 관례가 있는 것 같습니다 . 비슷한 제한 사항이 있습니다./tmp
/run
/var
따라서 가장 좋은 옵션은 /tmp
구성을 통해 일정을 예약하는 것입니다(사용자가 런타임 디렉터리를 지정할 수 있도록).
명명 규칙에 관한 한, 이곳은 자유로운 전역 공간인 것 같습니다. 원하는 식별자를 사용하고, 상식적인 원칙을 따르세요. /tmp/stuff
비슷한 훌륭한 아이디어를 가진 다른 사람들에게 짓밟힐 가능성이 높기 때문에 이는 아마도 좋은 생각이 아닐 것입니다.
일부 애플리케이션은 Java 스타일 도메인을 기반으로 하는 네임스페이스를 사용하는 것으로 나타났습니다 .com.google.Chrome
. 예를 들어 고유하고 누구에게나 이해가 되는 한 문제가 되지 않습니다. 그것이 어디서 왔는지에 대한 단서를 다른 사람들에게 제공한다면 보너스 포인트입니다.