서비스를 다시 시작하려면 "invoke-rc.d" 또는 "service"를 사용해야 합니까?

서비스를 다시 시작하려면 "invoke-rc.d" 또는 "service"를 사용해야 합니까?

어떤 상황에서 어떤 것이 가장 좋은지 혼란스럽습니다.

invoke-rc.d apache2 restart

또는

service apache2 restart

실제 차이가 있나요?

man service흥미로운 점은 다음과 같습니다.

서비스는 가능한 한 예측 가능한 환경에서 System V 초기화 스크립트를 실행하여 대부분의 환경 변수를 제거하고 현재 작업 디렉터리를 /로 설정합니다.

나는 주로 Debian에 관심이 있지만 Mint(역시 Debian 기반)에도 관심이 있습니다.

답변1

공식 데비안데몬에 관한 위키 페이지다음을 사용한다고 합니다 service.

# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.

그러나 기능적 service으로나 invoke-rc.d대부분 동일합니다.

  • invoke-rc.d명령의 매뉴얼 페이지에 따르면 이는 패키지 유지 관리자 스크립트에 선호되는 명령입니다.
  • service--status-all사용 가능한 모든 데몬의 상태를 쿼리하는 고유한 옵션이 있습니다.

이는 service사용자 중심 명령인 것처럼 보이지만 invoke-rc.d다른 용도로도 사용됩니다.

답변2

문제는 스크립트가 서비스 명령을 시도하기 전에(작동하는) 호출-rc.d(도커 컨테이너에 실행 레벨이 없기 때문에 작동하지 않음)를 사용하려고 하기 때문에 발생할 수 있습니다. 따라서 스크립트에서 if 조건을 변경하거나, 서비스 명령을 사용하도록 존재하지 않는 경로를 찾도록 하는 게으른 방법입니다. 예를 들어:

if [ -x /xxxusr/sbin/invoke-rc.d ]; then /usr/sbin/invoke-rc.d $OMSAGENT_WS start elif [ -x /sbin/service ]; then /sbin/service $OMSAGENT_WS start

관련 정보