"서비스 {FOO} 시작됨" 대 "/etc/init.d/{FOO} 시작됨"? [폐쇄]

"서비스 {FOO} 시작됨" 대 "/etc/init.d/{FOO} 시작됨"? [폐쇄]

Debian 8 데스크톱에서 CrashPlan을 사용하고 있습니다. CrashPlan 서비스를 처음에 중지한 다음 종료하기 전에 시작해야 하는 스크립트가 있습니다. 나는 사용하고있다

/etc/init.d/crashplan start

다시 시작되지만 종료 시 새로운 CrashPlan 프로세스가 종료됩니다.내 거스크립트. 나는 다음으로 전환한다

service crashplan start

다 괜찮아!

이상하게도 Ubuntu 16.04의 다른 시스템에서는 init.d스크립트/명령이 예상대로 작동합니다. 내 스크립트가 종료되면 CrashPlan이 계속 실행됩니다. 글쎄, 이제 우분투는 나에게 같은 문제를 안겨주고 있습니다.

내 데비안 스크립트가 이제 작동합니다. 하지만 저는 이 명령이 곧 더 이상 사용되지 않을 것이라는 인상을 받고 있습니다. 그래서 현재 버전의 데비안과 우분투 사이의 차이점에 service대해 혼란스럽습니다 .init.dservice

답변1

systemd를 사용하는 모든 시스템에서 init.d 스크립트를 직접 실행하는 것은 서비스를 시작하는 가장 좋은 방법이 아닙니다. 왜냐하면 일반적으로 systemd 자체에서 수행하는 모든 설정 및 장부를 우회하기 때문입니다. 게다가 초기화 스크립트가 없을 수도 있고, 서비스가 단위 파일에만 설명될 수도 있습니다.

"구식" sysvinit를 사용하면 장부를 작성할 필요가 별로 없습니다. 서비스를 시작하는 것은 스크립트를 실행하는 것과 거의 동일합니다. 이는 init 스크립트를 직접 사용하는 것이 좋은 생각이라는 의미는 아니며 매뉴얼 페이지의 설명에서 service그 이유를 알 수 있습니다.

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

무작위 셸은 예측 가능한 환경이 아니며 파일 또는 프로세스 제한을 활성화할 수 있습니다.

지원 중단에 관해서는 사용해야 할 수도 있지만 systemctl데비안에서는 service실제로 올바른 일을 시도하고 systemctl실행됩니다. (if가 service더 이상 사용되지 않는다고 가정하면 init 스크립트를 직접 실행하는 것이 훨씬 더 그렇습니다.)

(나는 init 스크립트를 직접 실행하는 경우 정확히 무엇이 서비스를 종료하는지 알려줄 만큼 시스템 전문가는 아닙니다. 또한 실행 중인 스크립트를 실행하는 대상에 따라 다릅니다: cron, 명령줄, 기타 다른 것 ..)

관련 정보