이 글의 영어 버전은 다음 출처에서 가져왔습니다: http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/
1. /etc/init.d에 대하여 리눅스 시스템을 사용해본 적이 있다면 init.d 디렉터리를 들어본 적이 있을 것입니다. 이 카탈로그는 정확히 무엇을 위한 것인가요? 결국 한 가지 일만 하지만, 사소한 일이 아니라 전체 시스템을 위해 이루어지는 일이기 때문에 매우 중요합니다. init.d 디렉터리에는 시스템의 다양한 서비스에 대한 많은 시작 및 중지 스크립트가 포함되어 있습니다. ACIPD부터 x11-common까지 모든 것을 제어합니다. 물론, init.d는 그렇게 단순하지 않습니다. (번역자 주: ACPID는 리눅스 운영체제를 위한 새로운 전원 관리 표준입니다; X11은 X 윈도우 시스템이라고도 하며, X 윈도우 시스템(X11 또는 X)은 비트맵 디스플레이가 있는 윈도우 시스템입니다. 이 프로토콜은 Unix 및 Unix 계열 운영체제, 그리고 OpenVMS에서 그래픽 사용자 인터페이스를 구축하기 위한 표준 툴킷이자 프로토콜이며, 거의 모든 현대 운영체제에 사용할 수 있습니다. /etc 디렉터리를 보면 rc#.d 형태로 존재하는 많은 디렉터리를 볼 수 있습니다(여기서 #은 지정된 초기화 레벨을 나타내며, 범위는 0~6입니다). 이 디렉토리 아래에는 과정을 제어하는 많은 스크립트가 있습니다. 이 문자들은 "K" 또는 "S"로 시작합니다. K로 시작하는 스크립트가 S로 시작하는 스크립트보다 먼저 실행됩니다. 스크립트가 어디에 배치되느냐에 따라 언제 실행 시작이 결정됩니다. 이 디렉터리들 사이에서는 시스템 서비스가 건강한 기계처럼 함께 작동합니다. 하지만 때로는 킬 명령어나 킬 명령어를 사용하지 않고 프로세스를 깔끔하게 시작하거나 종료하고 싶을 때가 있습니다. 그럴 때 /etc/init.d가 유용합니다! Fedora 시스템을 사용 중이라면 다음 디렉터리를 찾을 수 있습니다: /etc/rc.d/init.d. 사실 init.d를 어디에 넣든 똑같은 현상이 발생합니다. init.d 디렉터리에서 스크립트를 사용하려면 루트 권한이나 sudo 권한이 필요합니다. 각 스크립트는 명령어로 실행되며, 구조는 대략 다음과 같습니다: /etc/init.d/command 옵션 comand는 실제로 실행되는 명령어이며, 옵션은 다음과 같습니다: 시작 멈춰 재장전 재시작 포스 재장전 대부분의 경우, 시작, 중지, 재시작 옵션을 사용합니다. 예를 들어, 네트워크를 끄고 싶다면 다음과 같은 명령을 사용할 수 있습니다:
/etc/init.d/networking stop 또 다른 예로는 네트워크 설정을 변경해서 네트워크를 재시작해야 할 때입니다. 다음과 같은 명령어를 사용할 수 있습니다: /etc/init.d/networking restart init.d 디렉터리에서 일반적으로 사용되는 초기화 스크립트는 다음과 같습니다:
네트워킹 삼바 아파치2 FTPD 쉿 비둘기집 MySQL 물론, 설치한 리눅스 운영체제에 따라 더 자주 쓰이는 다른 스크립트들도 있을 수 있습니다. 2. /etc/rc.local에 대하여 rc.local도 제가 자주 사용하는 스크립트입니다. 스크립트는 시스템 초기화 수준 스크립트가 실행된 후에 실행되므로, 시스템 부팅 후에 실행하려는 스크립트를 추가하는 것이 안전합니다. 일반적인 경우는 NFS 마운트/마운트 스크립트를 추가할 수 있다는 것입니다. 또한 디버깅을 위한 스크립트 명령어를 추가할 수도 있습니다. 예를 들어, 저는 samba 서비스가 항상 제대로 작동하지 않는 상황을 겪었는데, 검사 결과 samba 서비스가 시스템 시작 시 실행되어야 한다고 나오는데, 즉 samba 데몬 구성이 이 기능이 올바르게 수행되도록 보장합니다. 이 경우에는 보통 왜 그런지 굳이 신경 쓰지 않고, /etc/rc.local 스크립트에 이 문장을 추가하면 됩니다: /etc/init.d/samba start 이렇게 하여 SAMBA 서비스 예외 문제가 성공적으로 해결되었습니다.
3. 요약 리눅스는 유연합니다. 유연성 덕분에 같은 문제를 해결할 수 있는 여러 방법을 항상 찾을 수 있습니다. 시스템 서비스를 시작하는 사례가 좋은 예입니다. /etc/init.d 디렉터리에 있는 스크립트와 /etc/rc.local이라는 강력한 도구를 결합하면 서비스가 완벽하게 정상 작동할 것임을 안심할 수 있습니다.
|