리눅스에 대해 알아보기 : /etc/init.d 디렉토리

리눅스를 사용한다면 아마도 init.d 디렉토리에 대해 들어봤을 것이다. 그러나이 디렉토리는 정확히 무엇을합니까? 궁극적으로 하나의 작업을 수행하지만 전체 시스템에 대해 한 가지 작업을 수행하므로 init.d 가 매우 중요합니다. init.d 디렉토리에는 시스템의 다양한 서비스에 대한 여러 시작 / 중지 스크립트가 있습니다. acpid 에서 x11-common 까지 모든 것이이 디렉토리에서 제어됩니다. 물론 그렇게 간단하지는 않습니다.

/ etc 디렉토리를 보면 rc # .d 형식의 디렉토리를 찾을 수 있습니다 (여기서 #은 숫자가 특정 초기화 레벨 (0에서 6까지)를 나타냄)입니다. 이러한 각 디렉토리에는 프로세스를 제어하는 ​​다른 여러 스크립트가 있습니다. 이 스크립트는 "K"또는 "S"로 시작합니다. 모든 "K"스크립트는 "S"스크립트보다 먼저 실행됩니다. 스크립트의 위치에 따라 스크립트 시작시기가 결정됩니다. 디렉토리 사이에서 시스템 서비스는 기름이 잘 통하는 기계처럼 함께 작동합니다. 그러나 kill 또는 killall 명령을 사용하지 않고 프로세스를 깨끗하게 시작 또는 중지해야하는 경우가 있습니다. 여기서 /etc/init.d 디렉토리가 유용합니다.

Fedora와 같은 배포판을 사용한다면이 디렉토리는 /etc/rc.d/init.d에 있습니다. 위치에 관계없이 동일한 목적으로 사용됩니다.

init.d 에서 스크립트를 수동으로 제어하려면 루트 (또는 sudo) 액세스 권한이 있어야합니다. 각 스크립트는 명령으로 실행되며 명령 구조는 다음과 같습니다.

/etc/init.d/command 옵션

여기서 command 는 실행할 실제 명령이며 OPTION 은 다음 중 하나 일 수 있습니다.

  • 스타트
  • 중지
  • 새로 고침
  • 재시작
  • 재 장전

대부분의 경우 시작, 중지 또는 다시 시작 을 사용합니다 . 따라서 네트워크를 중지하려면 다음 명령을 발행하십시오.

/etc/init.d/networking 중지

또는 네트워크를 변경하고 다시 시작해야하는 경우 다음 명령을 사용하여 변경할 수 있습니다.

/etc/init.d/networking 재시작

이 디렉토리에서 가장 일반적인 init 스크립트는 다음과 같습니다.

  • 네트워킹
  • 삼바
  • 아파치 2
  • ftpd
  • sshd
  • 비둘기장
  • MySQL

물론 디렉토리에 자주 사용되는 스크립트가있을 수 있습니다. 설치 한 스크립트에 따라 다릅니다. 위 목록은 Ubuntu Server 8.10 설치에서 가져온 것이므로 표준 데스크탑 설치에는 네트워킹 유형 스크립트가 약간 줄어 듭니다.

그러나 /etc/rc.local은 어떻습니까?

꽤 많이 사용했던 세 번째 옵션이 있습니다. 이 옵션은 /etc/rc.local 스크립트입니다. 이 파일은 다른 모든 init 레벨 스크립트가 실행 된 후에 실행되므로 시작할 때 실행하려는 다양한 명령을 입력하는 것이 안전합니다. 이 스크립트에서 nfs와 같은 마운트 지침을 여러 번 배치 할 것입니다. 이것은 또한 "문제 해결"스크립트를 넣을 수있는 좋은 장소입니다. 예를 들어, 어떤 이유로 삼바가 시작하기를 원하지 않는 기계를 가지고 있다면. 부팅 할 때 Samba 데몬이 초기화되도록 설정되어 있는지 확인하십시오. 그래서 이것으로 내 모든 시간을 미리 보내는 대신에 나는 단순히 라인을 배치했습니다.

/etc/init.d/samba start

/etc/rc.local 스크립트에서 Samba는 매력처럼 작동했습니다. 결국 나는 돌아와서 문제를 해결하려고했다.

마지막 생각들

리눅스는 유연하다. 리눅스는 매우 유연하여 단일 문제를 해결하는 방법은 거의 없습니다. 시스템 서비스 시작은 그러한 문제 중 하나입니다. /etc/init.d 시스템 ( /etc/rc.local )을 사용하면 서비스가 시작될 것입니다.