Чи є в Ubuntu команда показати список ВСІХ послуг автозапуску?


22

В Ubuntu,

  1. Чи є команда показати список усіх служб автозапуску?
  2. Чи є команда перевірити, чи служба автоматично запущена під час завантаження чи ні?

Я зробив Google і IRC. Я не можу знайти відповіді. Можливо, в Ubuntu таких команд не існує. На початку я думав, що всі автозапущені сервіси будуть недоступними /etc/rc2.d/, але я помилявся з цим. Деякі налаштовані лише під /etc/init/*.conf. Потім я спробував chkconfigінструмент (встановив його вручну), він не працює весь час. Наприклад, це дає неправильний результат, з mongodbякого автозапуск /etc/init/mongodb.conf.

service --status-allі initctl listможе повідомити лише поточний стан служб замість статусу автозапуску. update-rc.dце команда змінити статус автозапуску замість показу статусу.

Якщо на моє запитання немає відповіді, мені просто цікаво, чому так важко перевірити служби автозапуску в Ubuntu.


Я думаю, chkconfig --listбуде працювати правильно? onозначає, що служба працює на цьому рівні запуску, і ця служба автоматично запускається при завантаженні системи.
макс

1
Як я написав у своєму запитанні, chkconfig не завжди працює. наприклад, це дасть неправильний результат для mongodb. Я думаю, що це може бути, тому що mongodb використовує /etc/init/mongodb.conf для автоматичного запуску.
SSS

Як щодо ls /etc/rc?.d?
toxaq

Відповіді:


11

Ubuntu використовує Upstartзамість традиційної initсистеми. Наверх сильніше, ніж ініт, але трохи складніше, ніж init.

Навпроти початку, на основі подій. "Подія" може бути чимось на зразок "завантаження" ... або може бути набагато конкретнішою, наприклад "мережа готова зараз використовувати". Ви можете вказати, які сценарії залежать від подій. Все, що не чекає події, може запускатися, коли є CPU.

Ця система на основі подій має ще одну перевагу: ви можете теоретично використовувати її навіть після запуску та роботи системи. У кінцевому підсумку Upstart планується приймати такі завдання, як або підключення зовнішніх пристроїв, таких як накопичувачі пальців (в даний час обробляються udev і hal), або запуску програм у певний час (зараз обробляється cron).

Як ви повинні знати зараз, мертвий демон (який не працює при запуску) може бути живим і запускається через подію.

У Ubuntu є і / etc / init, і для Upstart, і /etc/init.d, для старих файлів SysV. Деякі файли в ньому є звичайними скриптами SysV Init, які ще не перенесені. Але деякі служби, які перенесли, підтримують посилання від /etc/init.d до / lib / init / upstart-job. Якщо ви запускаєте один із них, він працює, але спочатку надрукує попередження:

Замість того, щоб викликати скрипти init через /etc/init.d, скористайтеся утилітою service (8), наприклад service mysql restart

Оскільки сценарій, який ви намагаєтеся викликати, був перетворений у завдання Upstart, ви також можете скористатися утилітою restart (8), наприклад, перезапустити mysql.

На машині Upstart init походить від upstart. Замість запуску головного сценарію rc, який викликає сценарії для певного рівня запуску, init Upstart бере завдання зі свого каталогу завдань.

Тепер ми знаємо, що немає простого способу перерахування демонів автозапуску, ви повинні перелічити всі демони і перевірити їх по черзі. Демон може бути запущений 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починається при запуску. Але інші предмети можуть виглядати складніше. (Але, на щастя, для людини читається :-))


Я знав більшість того, що ви розмістили. Хоча є щось нове, чого я не знаю, вони все ще не можуть вирішити мою проблему. Я просто хотів би знати, чи є команда, яка може легко виконати роботу (як для початкових служб, так і для служб init). Здається, у ubuntu НЕ є. Яка прикрість! до речі, "initctl" може обробляти лише початкові послуги, а не традиційну систему init. Якщо немає простого способу, тоді я повинен використовувати важкий шлях ... дякую.
SSS

Зауважу, хоча неправильні сучасні версії ubuntu перейшли на 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) ---> start

Другий - це k- скрипт (K15pulseaudio) ---> вбити

Усі сервіси K-скриптів вбивають сервіси, а всі сервіси S-скриптів запускають послуги для цього рівня запуску.

Коротко

S70dns-clean -> ../init.d/dns-cleanзапуск dns-cleanслужби в рівні 1.

K15pulseaudio -> ../init.d/pulseaudioвбиває pulseaudioслужбу на рівні 1.


Не вірно для початкових служб, які тут можуть взагалі не з’являтися.
Wildcard

2

Ви можете встановити sysv-rc-conf, яка є програмою ncurses для графічного налаштування / показу рівнів rc.


0

Чи є команда показати список усіх служб автозапуску?

Подивіться тут: update-rc-d-cheat-sheet

Чи є команда перевірити, чи служба автоматично запущена під час завантаження чи ні?

Ні, я не знаю (що нічого не означає;), але ви можете почати читати тут: askubuntu forum - залежність від служби

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.