В даний час існує три різних способи запуску програмного забезпечення як послуги в Ubuntu, SysV , Upstart та systemd . Служба тут визначається як програма, запущена системою у фоновому режимі, на відміну від запущеної та запущеної безпосередньо користувачем.
SysV
Традиційним способом запуску сервісів в Linux було розміщення сценарію /etc/init.d
, а потім використання update-rc.d
команди (або в дистрибутивах, заснованих на RedHat chkconfig
), щоб включити або вимкнути його.
Ця команда використовує дещо м'яку складну логіку для створення посилань /etc/rc#.d
, які керують порядком запуску послуг. Якщо ви запустите, ls /etc/rc2.d
ви можете побачити порядок того, що служби будуть вбиті з назвою файлу, як K##xxxx
і почалося з імен файлів S##xxxx
. ##
В S##xxxx
означає «стартове замовлення» для обслуговування xxxx
. І навпаки, ##
in K##xxxx
означає порядок вбивства за службу xxxx
.
Однією з головних проблем SysV було те, що під час завантаження системи все потрібно було робити послідовно, одна за іншою, що робить час завантаження системи справді повільним . Були зроблені спроби паралелізувати це, але їх було випадково і важко використати в повній мірі. Це було основною причиною створення Upstart .
На початку
Upstart використовує файли визначення завдання, /etc/init
щоб визначити, з яких подій слід запустити службу. Отже, поки система завантажується, система запуску обробляє різні події, а потім може запускати паралельно декілька сервісів. Це дозволяє їм повною мірою використовувати ресурси системи, наприклад, запускаючи послугу, пов’язану з диском, під час запуску іншої служби, пов'язаної з процесором, або в той час, коли мережа очікує призначення динамічної IP-адреси.
Ви можете побачити всі запущені файли завдань, запустивши ls /etc/init/*.conf
Дозвольте мені зупинитися тут і сказати, що якщо ви не знаєте, що таке послуга чи що вона робить, НЕ відключайте її!
Не всі сервіси перетворені на початковий старт. Працюючи над командою сервера в Canonical протягом останніх кількох місяців, я працював над низкою перетворених файлів завдань, і найприємніша частина полягає в тому, що вона дозволяє позбутися всіх сценаріїв "магія" і просто помістити кілька команд тут і там, щоб точно визначити, як запустити послугу, і більше нічого. Але наразі було перетворено лише кілька традиційних мережевих сервісів, таких як кальмар та самба .
Чи базується послуга на старті?
Для того, щоб з’ясувати, чи послуга базується на старті, ви можете запустити команду стану:
status servicename
Якщо це новачка , це покаже:
$ status statd
statd start/running, process 942
Але якщо це не так, ви побачите щось подібне:
$ status apache2
status: Unknown job: apache2
У цьому випадку apache2
не було перетворено на старт . Отже, для відключення apache2
просто запустіть
sudo update-rc.d apache2 disable
sudo service apache2 stop
Вимкнути послуги (робочі місця) на початку
Визначення завдань для запуску не має update-rc.d
команди. Щоб вимкнути завдання, вам потрібно відредагувати файл завдання безпосередньо, щоб його відключити. Є два способи зробити це.
Якщо ви все ще хочете вручну запустити його, тоді вам потрібно прокоментувати start on
умову. Скажіть, ви хочете встановити samba , але не запускати його автоматично. Ось файл роботи (у натура):
description "SMB/CIFS File Server"
author "Steve Langasek <steve.langasek@ubuntu.com>"
start on local-filesystems
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
[ -r /etc/default/samba ] && . /etc/default/samba
[ "$RUN_MODE" = inetd ] && { stop; exit 0; }
install -o root -g root -m 755 -d /var/run/samba
end script
exec smbd -F
Щоб відключити samba , ви можете просто поставити #
перед " start on local-filesystems
". Зауважте, що, хоча він не запускатиметься під час завантаження, вам все-таки потрібно зупинити це
sudo service smbd stop
Якщо, однак, ви ніколи не хочете запускати самбу , я б запропонував фактично видалити пакунок. Якщо ви хочете встановити його, але не стартувати, ви також можете зробити:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
Вимкнути послугу за допомогою строфи запуску / зупинки (станом на 11.04)
Починаючи з версією вискочки , який буде в 11.04, є нове ключове слово , яке відключає start on
і stop on
строфи: manual
. Отже, ще одним способом відключити послугу станом на 11.04 є:
echo 'manual' | sudo tee /etc/init/mysql.override
# command from root shell
echo manual >> /etc/init/mysql.override
Ви можете створити override
файл для відключення послуги, не редагуючи визначення завдання, просто ввівши в нього manual
ключове слово.