시스템 배포에서 서비스 명령을 사용할 수 있는 이유는 무엇입니까?

시스템 배포에서 서비스 명령을 사용할 수 있는 이유는 무엇입니까?

저는 Linux init 시스템을 이해하려고 노력하고 있습니다. 어떻게 세 가지 경쟁 시스템이 있는지 이해가 안 되지만 이 service명령은 모든 시스템에서 작동하는 것 같습니다.

서비스 명령 man페이지에서:

서비스는 System V init 스크립트 또는 upstart 작업을 실행합니다.

저는 루분투 16.4를 사용하고 있습니다.생각하다systemd는 기본 초기화 시스템입니다( pstreesystemd를 루트 프로세스로 표시). Systemd는 서비스 매뉴얼 페이지에 언급되어 있지 않습니다. 하지만 저는 여전히 이를 스크립트를 시작하고 중지하는 데 사용합니다.

왜 이런지 설명할 수 있는 사람이 있나요?

답변1

일부 배포판에서는 레거시 명령이 계속 작동하도록 호환성 스크립트를 포함하도록 선택합니다. 예를 들어 Debian 8의 경우입니다.

root@matrix:~# which service
/usr/sbin/service
root@matrix:~# file /usr/sbin/service
/usr/sbin/service: POSIX shell script, ASCII text executable, with very long lines

root@matrix:~# grep upstart /usr/sbin/service
# Operate against system upstart, not session
   && initctl version 2>/dev/null | grep -q upstart \
   # Upstart configuration exists for this job and we're running on upstart
         # Action is a valid upstart action

root@matrix:~# grep systemd /usr/sbin/service
is_systemd=
if [ -d /run/systemd/system ]; then
   is_systemd=1
          # On systems using systemd, we just perform a normal restart:
          # A restart with systemd is already a full restart.
          if [ -n "$is_systemd" ]; then
# When this machine is running systemd, standard service calls are turned into
if [ -n "$is_systemd" ]
            # the systemd service file does not (yet) support reload for a

관련 정보