Как включить или отключить услуги?
Я читал о том, как включать и отключать сервисы в Ubuntu, и кажется, что есть разные возможности для управления ими.
Первый метод, который я нашел, это update-rc.d
добавить новые сервисы для запуска, который направлен на /etc/init.d
папка и ее содержимое.
Другой, который я нашел, чтобы отредактировать .conf
файлы в /etc/init
папка.
Какой рекомендуемый способ включить / отключить / добавить службы и почему?
Не могли бы вы дать краткий пошаговый пример того, как добавить сервис в Ubuntu, включить и отключить его?
8 ответов
Есть сервисы, которые можно включить / отключить с помощью графического интерфейса (например, startup
приложение) или терминал.
Для Терминала у вас есть несколько вариантов. Сначала откройте терминал (например, введите "терминал" в тире и откройте его). Затем:
Временное включение / отключение услуг
Чтобы временно остановить и запустить службы (не включает и не отключает их для будущих загрузок), вы можете ввести service SERVICE_NAME
, Например:
sudo service apache2 stop
(ОСТАНОВИТ службу Apache до перезагрузки или до ее повторного запуска).sudo service apache2 start
(Запустит службу Apache, предполагая, что она была остановлена раньше.).service apache2 status
(Сообщит вам СОСТОЯНИЕ услуги, если она включена / работает, отключена / НЕ работает.).sudo service apache2 restart
(Перезапустит службу. Это чаще всего используется, когда вы изменили конфигурационный файл. В этом случае, если вы изменили либо конфигурацию PHP, либо конфигурацию Apache. Перезапуск избавит вас от необходимости останавливаться / запускаться с помощью 2 командных строк.)service apache2
(В этом случае, поскольку вы не упомянули ACTION для выполнения для службы, он покажет вам все параметры, доступные для этой конкретной службы.) Этот аспект варьируется в зависимости от службы, например, в MySQL он будет упоминать только то, что он отсутствует параметр. Для других сервисов, таких как сетевой сервис, следует упомянуть небольшой список всех доступных опций.
Systemd
Начиная с Ubuntu 15.04, Upstart устареет в пользу Systemd. С помощью Systemd для управления услугами мы можем сделать следующее:
systemctl start SERVICE
- Используйте его для запуска службы. Не сохраняется после перезагрузки
systemctl stop SERVICE
- Используйте его, чтобы остановить службу. Не сохраняется после перезагрузки
systemctl restart SERVICE
- Используйте его для перезапуска службы
systemctl reload SERVICE
- Если служба поддерживает ее, она перезагрузит связанные с ней файлы конфигурации, не прерывая процесс, использующий службу.
systemctl status SERVICE
- Показывает статус службы. Сообщает, работает ли служба в данный момент.
systemctl enable SERVICE
- Включает службу, при следующей перезагрузке или при следующем событии запуска. Это сохраняется после перезагрузки.
systemctl disable SERVICE
- Служба отключается при следующей перезагрузке или при следующем событии остановки. Это сохраняется после перезагрузки.
systemctl is-enabled SERVICE
- Проверьте, настроен ли сервис на запуск или нет при следующей перезагрузке.
systemctl is-active SERVICE
- Проверьте, если услуга в настоящее время активна.
systemctl show SERVICE
- Показать всю информацию об услуге.
sudo systemctl mask SERVICE
- Полностью отключить службу, связав ее с /dev/null
; вы не можете запустить сервис вручную или включить сервис.
sudo systemctl unmask SERVICE
- удаляет ссылку на /dev/null
и восстанавливает возможность включения и / или ручного запуска службы.
UPSTART (устарел с 15.04)
Если мы хотим использовать официальный способ Upstart (обратите внимание, что на данный момент не все службы были преобразованы в Upstart), мы могли бы использовать следующие команды:
status SERVICE
- Это скажет нам, работает ли преобразованный сервис или нет. Обратите внимание, что это не рекомендуется в пользу start
, stop
, status
& restart
, Он также сообщит нам, если служба еще не была преобразована в upstart:
Преобразованная служба обычно выводит текущее состояние (запуск, запуск, остановка...) и идентификатор процесса. Не преобразованный сервис выдаст ошибку о неизвестном задании.
Некоторые ярлыки могут работать только с service
Команда выше, но не с командами ниже, если они не на 100% преобразованы в сервисы upstart:
СТАРТ -
sudo start mysql
СТОП -
sudo stop mysql
RESTART -
sudo restart mysql
СТАТУС -
sudo status smbd
Включение / отключение службы
Чтобы отключить запуск или остановку службы, вам необходимо:
echo manual | sudo tee /etc/init/SERVICE.override
где строфа manual
остановит Upstart от автоматической загрузки службы при следующей загрузке. Любой сервис с .override
окончание будет иметь приоритет над исходным служебным файлом. После этого вы сможете запустить службу только вручную. Если вы не хотите этого, просто удалите .override
, Например:
echo manual | sudo tee /etc/init/mysql.override
Поместит службу MySQL в manual
Режим. Если вы не хотите этого, потом вы можете просто сделать
sudo rm /etc/init/mysql.override
и перезагрузитесь, чтобы служба снова запустилась автоматически. Конечно, чтобы включить службу, наиболее распространенным способом является ее установка. Если вы устанавливаете Apache, Nginx, MySQL или другие, они автоматически запускаются после завершения установки и запускаются каждый раз при загрузке компьютера. Отключение, как упоминалось выше, будет использовать сервис manual
,
В настоящее время существует три различных способа запуска программного обеспечения в качестве службы в 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
, И наоборот, ##
в K##xxxx
означает заказ на уничтожение для обслуживания xxxx
,
Одна из основных проблем с SysV заключалась в том, что при загрузке системы все должно выполняться последовательно, одно за другим, что делает время загрузки системы очень медленным. Были предприняты попытки распараллелить это, но они были случайными и их трудно было в полной мере использовать. Это было главной причиной создания Upstart.
Выскочка
Upstart использует файлы определения задания в /etc/init
определить, по каким событиям должен быть запущен сервис. Таким образом, пока система загружается, upstart обрабатывает различные события, а затем может запускать несколько служб параллельно. Это позволяет им полностью использовать ресурсы системы, например, запустив привязанную к диску службу, когда запущена другая привязанная к ЦП служба, или пока сеть ожидает назначения динамического IP-адреса.
Вы можете увидеть все файлы выскочки, запустив ls /etc/init/*.conf
Позвольте мне остановиться здесь и сказать, что если вы не знаете, что такое сервис или что он делает, НЕ отключайте его!
Не все услуги были преобразованы в выскочку. Работая над командой серверов в Canonical в течение последних нескольких месяцев, я работал над несколькими преобразованными файлами заданий, и самое приятное в том, что он позволяет избавиться от всего "волшебства" сценария и просто вставить Несколько команд здесь и там, чтобы точно определить, как запустить службу, и ничего более. Но пока только несколько традиционных сетевых сервисов, таких как squid и samba, были преобразованы.
Является ли сервис выскочкой?
Чтобы выяснить, основана ли служба на выскочке, вы можете выполнить команду состояния:
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
Отключить услуги (рабочие места) в выскочке
Определения заданий Upstart не имеют update-rc.d
команда. Чтобы отключить задание, вам нужно отредактировать файл задания, чтобы отключить его. Есть два способа сделать это.
Если вы все еще хотите запустить его вручную, вам нужно закомментировать start on
состояние. Скажем, вы хотите установить samba, но не запускать его автоматически. Вот файл задания (в natty):
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
Чтобы отключить самбу, вы можете просто поставить #
напротив "start on local-filesystems
Msgstr "Обратите внимание, что, несмотря на то, что при загрузке он не запустится, вам все равно нужно остановить его на этот раз
sudo service smbd stop
Однако, если вы никогда не хотите запускать samba, я бы предложил удалить пакет. Однако, если вы хотите, чтобы он был установлен, но не запускался, вы также можете сделать:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
Отключить службу с помощью раздела "Старт / Стоп" (по состоянию на 11.04)
Начиная с версии upstart, которая будет в 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
Ключевое слово в этом.
SysV-RC-конф
Попробуйте использовать sysv-rc-conf
sudo apt-get install sysv-rc-conf
и начать управлять услугами, выполнить
sudo sysv-rc-conf
Который выведет интерактивное окно, как это
Вы можете в дальнейшем перемещаться по страницам, используя Ctrl+n
для следующей страницы и Ctrl+p
для предыдущей страницы. Вы можете включить и отключить услуги, выбрав SPACE
на желаемых уровнях запуска.
Работа-Admin
Другой альтернативой будет Jobs-Admin путем установки через
sudo apt-get install jobs-admin
Который также обеспечивает GUI, как это
Чтобы показать больше рабочих мест, вы должны поставить галочку Показать защищенные задания в его меню.
chkconfig
И третий вариант будет chkconfig,
sudo apt-get install chkconfig
Может использоваться через CLI chkconfig
, показывая список работ вкл / выкл. Также мы можем просматривать системные сервисы используя chkconfig –list
Сервисы могут быть включены с помощью
chkconfig <service> on
Услуги могут быть отключены с помощью
chkconfig <service> off
И мы даже можем добавить наш собственный сервис, используя правильный скрипт инициализации с правильными заголовками.
chkconfig --add <service>
обновление-rc.d
И еще один вариант можно сослаться сюда update-rc.d, кратко объясненный здесь.
Обратите внимание, что для Ubuntu Server 12.04, update-rc.d
используется вместо chkconfig.
Для тех из нас, кто запускает Ubuntu через ssh, я думаю, что самый хороший вариант rcconf
- текстовая программа:
sudo apt-get install rcconf
sudo rcconf
Навигация с помощью клавиш со стрелками и клавишами, нажмите пробел, чтобы включить / отключить. Изменения сохраняются при перезагрузке.
Скриншот заимствован из этого поста, который также показывает sysv-rc-conf
- аналогичный инструмент, который также позволяет установить уровень запуска. (Для тех, кому небезразличны уровни запуска, можно изменить их:)
К сожалению, rcconf не работает с upstart (сервисы, перечисленные в /etc/init/*
), просто с традиционным механизмом (ls -l /etc/init.d/*
- те, которые не являются символическими ссылками).
К счастью, многие из служб, которые имеют отношение при подключении к серверу (Apache, Tomcat, mdadm, boinc-client...), еще не были перемещены в upstart.
Я обнаружил, что есть этот инструмент с графическим интерфейсом, похожий на BUM, но совместимый с Upstart:
Работа-Admin
sudo apt-get install jobs-admin
Редактирование существующего файла конфигурации upstart (как описано выше) не очень хорошая идея. Обновленный пакет может предоставить обновленную конфигурацию, и вам придется повторять ваши изменения снова и снова.
Взглянув на man 5 init
каждый найдет более подходящее решение: используя конфигурацию переопределения. Короткий пример: скажем, у нас есть служба с именем "foobar", поэтому будет файл с именем /etc/init/foobar.conf
с его выскочкой конфигурации. Теперь вы не хотите ни удалять этот файл, ни изменять его - но вы также не хотите, чтобы эта служба работала? Поэтому поместите файл переопределения рядом с ним: /etc/init/foobar.override
, содержащий (необязательно заголовок с описанием и) вместо start on
/ stop on
Строки вы помещаете строку одним словом: manual
, Таким образом, вы говорите выскочку, чтобы в основном использовать foobar.conf
, но переопределите определение запуска, чтобы запускать эту службу только при принудительном применении вручную (через service foobar start
в нашем примере).
Также есть менеджер загрузки.
Установить: sudo apt-get install bum
Дополнительная информация: http://www.marzocca.net/linux/bum.html
Самый простой способ для меня, поскольку я использую только CLI, -
update-rc.d
.
Чтобы включить или отключить автоматический запуск при перезагрузке и т. Д.:
sudo update-rc.d <daemon|service> <enable|disable>
Пример:
update-rc.d spamassassin enable
Чтобы остановить или запустить демон или проверить его статус:
sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>
Пример:
sudo service spamassassin status
spamassassin.service - Perl-based spam filter using text analysis
Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago
Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES
Main PID: 1949 (spamd)
Tasks: 3 (limit: 2361)
CGroup: /system.slice/spamassassin.service
├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child
├─1951 spamd child
└─1952 spamd child` etc etc
update-rc.d
может немного больше, чем показано выше:
usage: update-rc.d [-f] <basename> remove
update-rc.d [-f] <basename> defaults
update-rc.d [-f] <basename> defaults-disabled
update-rc.d <basename> disable|enable [S|2|3|4|5]
-f: force
Как всегда; вы можете ссылаться на страницу руководства.
Я использую Stacer. Это показывает услуги и процессы также. Полный набор инструментов системы GUI. https://github.com/oguzhaninan/Stacer