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