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


22

우분투에서는

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

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

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

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


나는 chkconfig --list잘 작동 할 것 같아 ? on서비스가 해당 런레벨에서 실행되고 시스템 부팅시 해당 서비스가 자동으로 시작됨을 의미합니다.
최대

1
내 질문에 게시 한 것처럼 chkconfig가 항상 작동하지는 않습니다. 예를 들어 mongodb에 잘못된 결과를 제공합니다. mongodb가 /etc/init/mongodb.conf를 사용하여 자동 시작을 수행하기 때문일 수 있습니다.
SSS

어때요 ls /etc/rc?.d?
toxaq

답변:


11

우분투는 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하여 시작시 시작됩니다. 그러나 다른 항목은 더 복잡해 보일 수 있습니다. (다행히도 인간이 읽을 수있는 것 :-))


당신이 게시 한 내용의 대부분을 알고있었습니다. 내가 모르는 새로운 것이 있지만 여전히 내 문제를 해결할 수 없습니다. 작업을 쉽게 수행 할 수있는 명령이 있는지 알고 싶습니다 (upstart 및 init 서비스 모두). 우분투에는없는 것 같습니다. 얼마나 안타깝습니까! 그런데 "initctl"은 전통적인 init 시스템이 아닌 가동 서비스 만 처리 할 수 ​​있습니다. 쉬운 방법이 없다면 어려운 방법을 사용해야합니다 ... 고마워.
SSS

없는 동안 나는주의 것 잘못된 우분투의 현대 버전 systemd로 이사했다. 이 답변의 유용한 부분은 여전히 ​​유효합니다.
Journeyman Geek

Ubuntu의 새 버전은 가동
João Pimentel Ferreira

5

실제로 모든 서비스는 /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에서 서비스를.


여기에 전혀 나타나지 않을 수도있는 시작 서비스에는 해당되지 않습니다.
와일드 카드

2

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.