Linux에서 구성 파일의 폴더가 항상 * .d 인 이유는 무엇입니까? 폴더는 왜 항상 이름이 *.d됩니까? 말하다 /etc/init.d /etc/grub.d /etc/apparmor.d

Linux에서 구성 파일의 폴더는 왜 항상 이름이 *.d됩니까?

말하다

  • /etc/init.d
  • /etc/grub.d
  • /etc/apparmor.d


답변

.d디렉토리를 의미합니다. 디렉토리 기반 구성을 단일 구성 파일을 기반으로하는 구성과 구별하는 것이 관례입니다. 예를 들어 /etc/logrotate.conf및과 같이 일부 용량이있는 경우가 종종 있습니다 /etc/logrotate.d/.

일반적으로 이러한 디렉토리의 모든 (합리적으로 이름이 지정된) 파일이 단일 구성으로 자동 결합되는 경우도 있습니다. 그런 다음 패키지는 이와 같은 디렉토리에 파일을 설치할 수 있으며 자동으로 사용됩니다. 다시 한 번 /etc/logrotate.d/좋은 예입니다. 반대로, 끝나지 않는 구성 파일의 디렉토리 .d에는 아마도 같은 패키지에 속하는 구성 파일의 무작위 조합이 포함되어 있으며, 처리 방법에 대해서는 아무것도 추론 할 수 없습니다 (예 🙂 /etc/zsh/.


답변

Peter의 답변을 약간 확장하기 위해이 .d 패턴을 사용하면 구성 파일을 간단하게 추가하고 제거 할 수 있습니다. 주어진 .d 프로그램의 경우 관리자는 파일을 편집하지 않고도 .d 디렉토리에 파일을 간단히 복사하거나 제거 할 수 있습니다 기존 구성 파일

예를 들어, cron 작업을 시스템에 추가하려면 원하는 텍스트 편집기를 사용하여 새 예약 된 작업으로 / etc / crontab을 편집 할 수 있습니다. 이는 단일 서버 또는 소수의 서버에 적합하지만 데이터 센터 / 클라우드 환경에서 작업하는 경우 100 대의 서버에서 수행하십시오. 후자의 경우 임시 파일과 함께 sed와 같은 파일을 사용하거나 ex와 같은 도구를 사용하여 파일을 적을 수 있지만 명령을 제대로 작성하지 않으면 약간의 위험이 있습니다. 실제로, 이러한 편집 명령의 오타로 인해 구성 파일이 완전히 nuked 된 것을 보았습니다.

이제 스케줄 된 작업이있는 파일을 /etc/cron.d에 배치하는 것과 비교하십시오. 파일을 파일에 복사하면 다음에 cron이 실행될 때 (일반적으로 1 분마다) 새 파일이 표시되고 그에 따라 소스 / 처리됩니다. Peter가 자신의 패키지를 롤링하고 싶다면 /etc/cron.d 파일은 패키지 아카이브의 다른 파일 일뿐입니다. 패키지를 제거하면 cron.d 파일이 제거되고 cron이 더 이상 실행되지 않습니다.

마지막으로, .d 디렉토리를 가진 모든 프로그램은 포함 순서 및 구성 재정의와 같이 파일의 소스 방식에 따라 자체 구현을 가질 수 있습니다. 따라서 .d 디렉토리에 파일을 배치하기로 결정할 때마다 항상 원하는대로 수행하는지 확인하고 .d 디렉토리가있는 다른 프로그램 에서처럼 작동한다고 가정하지 마십시오.