Вопрос Как включить или отключить службы?


Я читал о том, как включить и отключить службы в Ubuntu, и кажется, что есть разные возможности управлять ими.

Первый найденный мной метод update-rc.d добавить новые услуги для запуска, /etc/init.d папку и ее содержимое.

Другой, который я нашел, - это редактировать .conf файлов в /etc/init папка.

Каков рекомендуемый способ включения / выключения / добавления служб и почему?

Не могли бы вы дать короткий пуленепробиваемый шаг за шагом пример того, как добавить службу в Ubuntu и включить и отключить ее?


761
2017-12-29 21:03


происхождения


Для создания сети см.: askubuntu.com/questions/230698/... - Jorge Castro
Эта было бы полезно для тех, кто застрял на Fedora 12 и приземлился здесь. Если ссылка chkconfigэто то, что вы ищете. - Bleeding Fingers
Обратите внимание, что ответ для Ubuntu 14.04 по-прежнему отсутствует. - Reinier Post
@MarcelloNuccio: Начиная с Ubuntu 15.04, Upstart устарел в пользу Systemd. - Dan Dascalescu


ответы:


Существуют службы, которые могут быть включены / отключены с помощью GUI (например, 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, Он также сообщит нам, если служба еще не была преобразована в выскочку:

Преобразованная служба обычно выводит текущий статус (запуск, запуск, остановка ...) и идентификатор процесса. Непереведенное обслуживание может привести к ошибке неизвестная работа,

Некоторые ярлыки могут работать только с service выше, но не с приведенными ниже командами, если они не преобразуются на 100% в службы выскочки:

  • НАЧАЛО - sudo start mysql

  • СТОП - sudo stop mysql

  • ПЕРЕЗАПУСК - 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,


757
2017-12-29 21:26



Нужно добавить .service каждой команде? systemctl mongod status работал просто отлично. - Dan Dascalescu
@DanDascalescu нет, вы не можете, но позвольте мне уточнить, что там. - Luis Alvarado♦
Должен ли файл .override быть помещен в /etc/init.d/, то есть где находится служба? - Obi Wan - PallavJha
Почему Upstart не рекомендуется в 15.04? каков правильный способ запуска скриптов при запуске / перезапуске в ubuntu 16.04 или новее? - Kamalakannan J
@ KamalakannanJ Вы использовали уровни rc? (например, /etc/rc0.d) или /etc/rc.local? - Luis Alvarado♦


В настоящее время существует три разных способа запуска программного обеспечения в качестве службы в Ubuntu, SysV, Выскочка а также 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 использует файлы определения заданий в /etc/init определить, на каких событиях должна запускаться служба. Таким образом, пока система загружается, выскочка обрабатывает различные события, а затем может запускать несколько служб параллельно. Это позволяет им полностью использовать ресурсы системы, например, путем запуска службы, связанной с диском, в то время как другая служба, привязанная к процессору, запускается или пока сеть ожидает назначения динамического IP-адреса.

Вы можете просмотреть все файлы стартовых заданий, выполнив ls /etc/init/*.conf

Позвольте мне просто остановиться здесь и сказать, что если вы не знаете, что такое услуга или что она делает, НЕ ОТКЛЮЧАЙТЕ ее!

Не все службы были преобразованы в выскочку. Во время работы над командой сервера в Canonical за последние несколько месяцев я работал над несколькими преобразованными файлами заданий, и самая приятная часть - это то, что он позволяет избавиться от всего скрипта «магия» и просто вставить несколько команд здесь и там, чтобы точно определить, как запустить службу, и не более того. Но пока только несколько традиционных сетевых сервисов, таких как кальмар а также самба, были преобразованы.

Является ли служба выскочкой?

Чтобы выяснить, работает ли служба с выскочкой, вы можете запустить команду status:

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 состояние. Предположим, вы хотите установить самба, но не запускать его автоматически. Вот файл задания (в 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«Обратите внимание, что пока он не будет загружаться при загрузке, вам все равно нужно остановить его на этот раз с помощью

sudo service smbd stop

Если, однако, вы никогда не захотите самба чтобы начать, я бы предложил на самом деле удалить пакет. Если, однако, вы хотите, чтобы он был установлен, но не был запущен, вы также можете:

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 ключевое слово в нем.


335
2018-01-06 18:25



Похоже, 11.04 тоже переопределил. Так echo manual >> /etc/init/<service>.override предпочтительнее, так как он оставляет исходный файл .conf филе неповрежденным. Во всяком случае, его по-прежнему стыдно, что для такого базового разрешения / отключения потребовалось 3 года, и для этого нет графического интерфейса. - MestreLion
обновление-rc.d что действительно важно - Tim
кажется, гораздо более оригинальной темой, чем ответ, который был помечен как дефинитивный ответ на исходный вопрос. Благодаря! :) - Henning
В моем случае файл /etc/init/ssh.conf существует, но status ssh а также status sshd оба говорят «Неизвестная работа». Этот ответ, похоже, не затрагивает такую ​​возможность? - Brian Z
status ssh дает мне «Неизвестную работу», но service ssh status работает на меня - ptim


SysV-RC-конф

Попробуйте использовать SysV-RC-конф

sudo apt-get install sysv-rc-conf

и начать управлять услугами, выполнить

sudo sysv-rc-conf

Что вызовет интерактивное окно, подобное этому

enter image description here

Вы также можете перемещаться по страницам, используя Ctrl+n для следующей страницы и Ctrl+p для предыдущей страницы. Вы можете включить или отключить службы, выбрав SPACEна требуемых уровнях выполнения.

Работа-Admin

Другой альтернативный вариант Работа-Admin путем установки через

sudo apt-get install jobs-admin

Что также предоставляет графический интерфейс

jobs-admin preview

Чтобы показать больше заданий, вам нужно отметить Показать защищенные задания из своего меню.

chkconfig

И третий вариант chkconfig,

sudo apt-get install chkconfig

Он может использоваться через CLI chkconfig, показывающий список заданий On / Off. Также мы можем просматривать системные службы, используя chkconfig –list

Услуги можно включить, используя

chkconfig <service> on

Службы можно отключить, используя

chkconfig <service> off

И мы можем даже добавить наш собственный сервис, используя правильный скрипт инициализации с соответствующими заголовками.

chkconfig --add <service>

обновление-rc.d

И еще один вариант можно отнести здесь update-rc.d , кратко объяснил Вот,

Обратите внимание, что для Ubuntu Server 12.04, update-rc.d  используется вместо chkconfig.


121
2018-06-28 18:00



на сервере ubuntu: Package chkconfig is not available, but is referred to by another package. - pwned
@pwned Вы можете редактировать и публиковать обновленную информацию о версии сервера. Благодарю вас. - atenz
Я сделал то, что вы предложили, теперь для экспертной оценки. - pwned
рабочие-администратор не позволяет изменять задания (Ubuntu 14.04), создавая вместо этого отчет о сбое ;-) - Sadi
sysv-rc-conf не подходит для использования с upstart или systemd, он явно относится только к старой системе System 5 rc, которая не была стандартной по умолчанию для Ubuntu Linux в течение почти десятилетия. Ошибка в Debian # 791689 подтверждает это и спрашивает, почему она не была помечена как конфликтующая с systemd. - JdeBP


Для тех из нас, кто управляет Ubuntu по ssh, я думаю, что самый лучший вариант rcconf - текстовая программа:

sudo apt-get install rcconf
sudo rcconf

alt text

Перейдите со вкладками и клавишами со стрелками, нажмите пробел, чтобы включить / отключить. Изменения повторяются при перезапуске.

Скриншот, заимствованный из этот блогпост, который также показывает sysv-rc-conf - аналогичный инструмент, который также позволяет установить уровень запуска. (Для тех, кто достаточно заботится о уровнях выполнения, чтобы изменить их :)

К сожалению, rcconf не работает с выскочкой (услуги, перечисленные в /etc/init/*), только с традиционным механизмом (ls -l /etc/init.d/* - те, которые не являются символическими ссылками).

К счастью, многие сервисы, которые имеют значение при подключении к серверу (Apache, Tomcat, mdadm, boinc-client ...), еще не были перемещены в режим выскочки.


48
2018-01-06 18:44



Это все еще работает с выскочкой? - oKtosiTe
К сожалению нет. Но он работал во всех случаях, которые я хотел изменить: работа с выскочкой - это, в основном, вещи, которые я никогда не хочу отключать, - аппаратные часы, демона журнала, сеть и т. Д. (На сервере Ubuntu, по крайней мере). Но это то, о чем нужно знать (я не был :), я обновил сообщение. - j-g-faustus
К сожалению, mysql был преобразован в выскочку. И это сервис, который я использую только при выполнении какого-либо проекта. - MestreLion
В Ubuntu 12.04 есть ошибка с rcconf, которая предотвращает запуск программы. Чтобы решить проблему, вам нужно установить пакет диалога. - devius
Поскольку этот ответ был написан, update-rc.d был изменен и некоторые из его устаревших функций были удалены, Ошибка Debian # 727735 отмечает, что rcconf не был изменен для соответствия. И нет, rcconf тоже не работает с systemd, поэтому не применимо ни к одной из систем инициализации по умолчанию для Ubuntu Linux в течение последнего десятилетия. - JdeBP


Я узнал, что есть этот инструмент графического интерфейса, что-то вроде BUM, но совместимого с Upstart:

  • Работа-Admin

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Но это слишком просто и не позволяет изменять «защищенные задания» (что это за работа? У Apple есть рабочие места, у операционной системы есть демоны!) - kakaz
Я даже не позволяю менять «незащищенные задания» (Ubuntu 14.04), создавая вместо этого отчет о сбое ;-) - Sadi


Редактирование существующего файла конфигурации выскочка (как описано выше) не является такой хорошей идеей. Обновленный пакет может содержать обновленную конфигурацию, и вам приходилось повторять свои изменения снова и снова.

Взглянув на man 5 init можно найти более подходящее решение: с помощью переопределенной конфигурации. Короткий пример: скажем, у нас есть служба под названием «foobar», поэтому будет файл с именем /etc/init/foobar.conf с его выскочкой конфигурации. Теперь вы не хотите удалять этот файл или изменять его, но вы не хотите, чтобы эта служба запускалась? Поэтому переопределение рядом с ним: /etc/init/foobar.override, содержащий (необязательно заголовок с описанием и) вместо start on / stop on линии вы помещаете строку одним словом: manual, Таким образом, вы говорите выскочке в основном использовать foobar.conf, но переопределить определение запуска только для запуска этой службы при ручном принуждении (через service foobar start в нашем примере).


12
2018-06-30 20:27





Существует также Менеджер загрузки,

Установить: sudo apt-get install bum

Дополнительная информация: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



Не забудьте проверить кнопку «Дополнительно». - not2qubit