우분투에는 모든 자동 시작 서비스 목록을 표시하는 명령이 있습니까?

우분투에서는

  1. 모든 자동 시작 서비스 목록을 표시하는 명령이 있습니까?
  2. 부팅시 서비스가 자동 시작되는지 확인하는 명령이 있습니까?

나는 구글과 IRC를했다. 답을 찾을 수 없습니다. 우분투에는 그러한 명령이 없을 수도 있습니다. 처음에는 모든 자동 시작 서비스가 아래에 있다고 생각 /etc/rc2.d/했지만 그 점이 잘못되었습니다. 일부는 아래에서만 구성됩니다 /etc/init/*.conf. 그런 다음 chkconfig도구를 사용해 보았습니다 (수동으로 설치). 항상 작동하지 않습니다. 예를 들어, mongodb에서 자동 시작된 잘못된 결과를 제공합니다 /etc/init/mongodb.conf.

service --status-allinitctl list서비스 만 ‘현재 상태 대신 자동 시작 상태를 알 수 있습니다. update-rc.d상태를 표시하지 않고 자동 시작 상태를 변경하는 명령입니다.

내 질문에 대한 답변이 없다면 우분투에서 자동 시작 서비스를 확인하기가 왜 그렇게 어려운지 궁금합니다.



답변

우분투는 Upstart전통적인 init시스템 대신 사용 합니다. Upstart는 init보다 강력하지만보다 약간 더 복잡합니다 init.

이와 대조적으로 Upstart는 이벤트 기반입니다. “이벤트”는 “부팅”과 같거나 “네트워크를 사용할 준비가되었습니다”와 같이 훨씬 더 구체적 일 수 있습니다. 어떤 스크립트가 어떤 이벤트에 의존하는지 지정할 수 있습니다. CPU를 사용할 수있을 때마다 이벤트를 기다리지 않는 것은 무엇이든 실행할 수 있습니다.

이 이벤트 기반 시스템은 또 다른 장점이 있습니다. 이론적으로 시스템이 가동 된 후에도 사용할 수 있습니다. Upstart는 썸 드라이브 (현재 udev와 hal이 처리)와 같은 외부 장치를 꽂거나 특정 시간에 프로그램을 실행 (현재는 cron이 처리)과 같은 외부 장치를 연결하는 것과 같은 작업을 대신 할 예정입니다.

아시다시피, 데드 데몬 (시작시 실행되지 않는)은 이벤트로 인해 활성화되어 시작될 수 있습니다.

Ubuntu에는 Upstart의 경우 / etc / init와 이전 SysV 파일의 경우 /etc/init.d가 있습니다. 그 안에있는 파일 중 일부는 아직 마이그레이션되지 않은 일반 SysV Init 스크립트입니다. 그러나 마이그레이션 된 일부 서비스는 /etc/init.d에서 / lib / init / upstart-job으로의 링크를 유지합니다. 그중 하나를 실행하면 작동하지만 먼저 경고를 인쇄합니다.

/etc/init.d를 통해 init 스크립트를 호출하는 대신 service (8) 유틸리티를 사용하십시오. service mysql restart

호출하려는 스크립트가 Upstart 작업으로 변환되었으므로 restart (8) 유틸리티를 사용할 수도 있습니다 (예 : restart mysql).

Upstart 시스템에서 init는 upstart에서 시작됩니다. Upstart의 init는 특정 실행 레벨에 대한 스크립트를 호출하는 마스터 rc 스크립트를 실행하는 대신 작업 디렉토리에서 작업을 가져옵니다.

이제 자동 시작 데몬을 나열하는 간단한 방법이 없다는 것을 알고 있으므로 모든 데몬을 나열하고 하나씩 확인해야합니다. 데몬은 시작할 수 있습니다 init또는 의해 upstart또는 나중에 이벤트에 의해.
이 목록을 얻는 가장 간단한 방법은 셸에서이 명령을 실행하는 것입니다.

initctl show-config

결과는 다음과 같습니다.

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

첫 번째 항목과 같은 일부 항목은 너무 간단 hostname하여 시작시 시작됩니다. 그러나 다른 항목은 더 복잡해 보일 수 있습니다. (다행히도 인간이 읽을 수있는 것 :-))


답변

실제로 모든 서비스는 /etc/init.d에만 있습니다.

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

한 가지 더, 모든 서비스는 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d또한 존재 하지만, 그것은 /etc/init.d단지 상징적 인 링크 입니다.

여기 rc1.d디렉토리 내용이 있습니다 :

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

여기서 init.d (K15pulseaudio-> ../init.d/pulseaudio)에 대한 심볼릭 링크를 볼 수 있습니다.

그러나 여기서 모든 서비스는 init.d에 연결되어 있습니다. 그러나 모든 서비스가 시작되지는 않습니다. 그 이유는 두 개의 스크립트입니다.

첫 번째는 S 스크립트 (S30killprocs) —> 시작입니다.

두 번째는 k 스크립트 (K15pulseaudio)입니다.

모든 K 스크립트 서비스는 서비스를 종료하고 모든 S 스크립트 서비스는 해당 런레벨에 대한 서비스를 시작합니다.

간단히

S70dns-clean -> ../init.d/dns-cleandns-clean런레벨 1에서 서비스를 시작하십시오 .

K15pulseaudio -> ../init.d/pulseaudio사망 pulseaudio실행 레벨 1에서 서비스를.


답변

rc 레벨을 그래픽으로 구성 / 표시하는 ncurses 프로그램 인 sysv-rc-conf를 설치할 수 있습니다.


답변

모든 자동 시작 서비스 목록을 표시하는 명령이 있습니까?

여기를보십시오 : update-rc-d-cheat-sheet

부팅시 서비스가 자동 시작되는지 확인하는 명령이 있습니까?

없음, (아무 의미도 없습니다.)에 대해 알고 있지만 여기서 읽을 수 있습니다. askubuntu forum-service dependency


답변