우분투에서 항상 혼란 스러웠던 한 가지는 시스템 서비스가 시작되는 방법이었습니다. Ubuntu는 Upstart를 사용하고 SysV를 지원하지만 서비스를 시작하는 데 사용되는 것은 무엇입니까? 이것은 서비스에 대한 “수동”시작을 원할 때 중요합니다.
예를 들어, 내 시스템에는 /etc/init.d/<service>
(SysV) 및 /etc/init/<service>.conf
(Upstart) 에 다음 서비스에 대한 파일이 있습니다 .
acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin
따라서 시작할 때 MySQL 실행을 비활성화하려면 Upstart 방식 또는 SysV 방식을 사용하여 비활성화해야합니까? 또한 일반 서비스를 시작하는 데 실제로 사용되는 것을 어떻게 알 수 있습니까?
편집하다
여기서 의심스러운 점은 SysV / Upstart를 사용하여 서비스를 비활성화 / 활성화하는 방법이 아닙니다. 실제로 혼란스러운 점은 일부 서비스가 SysV와 Upstart에서 동시에 정의되고 활성화 된 것 같습니다. 그들 사이에 우선 순위가 mysql
있습니까 (SysV를 사용하여 둘 다 실행할 때 와 같이 )? 아니면 한 도구가 다른 도구를 백그라운드에서 사용하는 경우가 있습니까?
답변
SysV와 upstart 모두에 정의 된 서비스와 관련하여 일반적으로 SysV를 통해 서비스를 다시 시작하면 다음과 같은 내용이 표시됩니다.
al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846
내가 이것을 의미하는 것은 Upstart가 이러한 서비스에 선호되며 SysV 구현은 래퍼 일 뿐이라는 것입니다.
또한 디렉토리의 의미가 거꾸로 된 것 같습니다. / etc / init는 시작 구성이고 /etc/init.d는 SysV 호환성이지만 이러한 유형의 서비스에 대해서는 upstart와의 심볼릭 링크 일뿐입니다.
답변
애플리케이션과 패키징 관리자에 따라 크게 달라집니다.
Upstart 스크립트는 이벤트를 처리하기 때문에 강력하게 선호되지만 (대개 큰 일이지만) 많은 응용 프로그램에 사용 가능한 Upstart 스크립트가 충분하지 않거나 응용 프로그램 관리자가 기본값 (응용 프로그램 또는 데비안)을 고수하도록 선택했습니다. .
어느 쪽이든, 당신은 당신이 적응해야 할 위치에 있습니다.
- Upstart의 경우 :
- 파일을 끝나지 않는 이름으로 바꾸
.conf
거나 manual
파일에 추가 하십시오. 이를 통해 서비스를 수동으로로드 할 수 있습니다.
- 파일을 끝나지 않는 이름으로 바꾸
-
오래된 서비스의 경우 :
update-rc.d -f <service> remove
당신이있는 경우 /etc/init.d/
뭔가 스크립트 및/etc/init/
스크립트를하고있는 init.d 버전이 아직 살아 있는지 확인하려면, 당신은 확인 할 수 있습니다 :
ls -l /etc/rc?.d/*<service>
많은 심볼릭 링크가 표시되면 이전 SysV init에 설치됩니다.