해당 파일 또는 디렉토리가 없습니다. /etc/init.d/functions 시작 /

응용 프로그램 그룹을 시작 / 다시 시작 / 중지하기위한 시작 스크립트를 만들었습니다. /etc/init.d/functions스크립트 에서 lib 를 사용했습니다 . 시스템에서 제대로 작동하지만 클라이언트에서는 작동하지 않습니다. 그는 오류가 발생합니다 :

해당 파일 또는 디렉토리가 없습니다. /etc/init.d/functions

현재 클라이언트가 어떤 Linux 배포판을 사용하는지 알 수 없습니다. 는 IS init.d/functions다른 리눅스 배포판의 파일 다른가? 그렇다면 어떻게 찾을 수 있습니까?



답변

실행중인 배포에 따라 다릅니다. 데비안과 우분투는 /lib/lsb/init-functions; SuSE는 /etc/rc.status; 그들 중 어느 것도 다른 것과 호환되지 않습니다. 실제로 일부 배포판은 전혀 사용하지 않거나 /etc/init.d호환되지 않는 방식으로 사용합니다 (슬랙웨어와 아치가 머리 위로 떨어져 나옵니다. 다른 배포판 도 있습니다).


답변

에서 CentOS는 7 도커 이미지 나는 단순히 패키지를 설치했다 initscripts이 스크립트를 설치하기 위해서는 :

yum install -y initscripts

(덕분에 이 문제에docker-library 있는 나를보고 만든 커밋이 )


답변

그것은 절대적으로 배포에 의존합니다. 제대로 일치하는 init 스크립트를 작성하려면 배포판을 찾아야합니다.

LSB (Linux Standard Base) 사양을 따를 수도 있고 해당 배포판도 그렇게되기를 바랍니다. 현재 사양에 따르면 표준 init 스크립트 기능을 다음과 같이 사용할 수 있습니다 /lib/lsb/init-functions( 문서 참조 ). Fedora 및 기타 Red Hat 관련 배포판에서는 redhat-lsb패키지 에서 제공하며 선택 사항 입니다.

따라서 타겟팅 대상을 파악해야합니다. 죄송합니다.


답변

최근 답변 추가

다른 답변에서 언급했듯이, LSB (Linux Standard Base) 사양은 여기에init.d 나열된 LSB 정의 초기화 기능을 사용하여 플랫폼 독립적 기반 시작 스크립트 를 작성하는 방법을 제공합니다 .

모든 LSB 준수 분포 (모든 큰 것들) 파일 제공하는 /lib/lsb/init-functions메타 패키지 (나열된 기능을 정의) lsb-core-noarch배포판의 패키지 관리자를 사용하여 설치할 수 있습니다 $PKGMAN $INSTOPT lsb-core-noarch( yum, dnf, apt, …).

이러한 init 스크립트의 예는 this 입니다.

그러나 systemd현재 대부분의 배포판에 대한 사실상의 시스템 및 서비스 관리자는 어떻 습니까?를 쓰지 systemd service unit않고 작성하는 것이 좋습니다 initscript.


답변

우분투로 옮길 때 이러한 기능을 놓쳤으므로 기능을 다시 만드는 라이브러리를 만들었습니다. efunctions .


답변

도커 컨테이너를 실행하는 동안 동일한 오류가 발생했습니다. Dockerfile에 아래 줄을 추가하여 수정되었습니다.

RUN yum install -y initscripts