어쩌면 이것은 사소한 질문 일 수도 있지만 완전히 명확하지는 않습니다. 서버 중 하나에서 다음 service
과 같이 시작된 백그라운드 프로세스와 시작된 일부 백그라운드 프로세스가 있습니다 systemctl
.
$ service nginx start
$ systemctl start gunicorn
두 명령의 차이점은 무엇입니까? 백그라운드 서비스를 처리하는 데 선호되는 방법은 무엇입니까? 선호하는 명령을 구성하는 방법은 무엇입니까?
답변
service
다른 유닉스와 리눅스에서 서비스를 시작하고 중지하는 데 사용되는 “고급”명령입니다. “하위 레벨”서비스 관리자 service
에 따라 다른 바이너리로 리디렉션합니다.
예를 들어 CentOS 7에서는로 리디렉션되고 systemctl
CentOS 6에서는 직접 상대 /etc/init.d
스크립트를 호출합니다 . 다른 한편으로, 구 우분투 릴리스에서는upstart
service
직접 호출 systemctl
하면 더 큰 제어 옵션을 제공 하면서 기본 서비스 관리에 적합합니다 .
답변
systemctl
기본적으로 더 강력한 버전입니다 service
.
으로 service
만 서비스에 관련된 명령을 수행 할 수 있습니다 (즉 status
, reload
, restart
)와 반면에 systemctl
당신과 같은 고급 명령을 사용할 수 있습니다 :
systemctl is-failed name.service # check if service failed to load
또는 마스킹 서비스 :
systemctl mask name.service
Ask Ubuntu 의이 페이지 에는 많은 정보가 있습니다.
답변
systemctl
에 데몬 / 서비스를 제어 할 수있는 주요 유틸리티 systemd
,
그동안 service
명령의 전통적인 유틸리티입니다 SysVinit
세계.
systemd의 기능 중 하나는 SysVinit / legacy 명령과 호환되는
것이므로 systemctl
명령
service foo start
이 있으면 래퍼가됩니다 systemctl start foo
.
에 대한 동일한 이야기 chkconfig
.