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

771

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

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

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

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

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

    
задан NES 29.12.2010 в 21:03
источник

7 ответов

766

Есть службы, которые можно включить / отключить с помощью GUI (например, приложение startup ) или терминала.

Для терминала у вас есть несколько вариантов. Сначала откройте терминал (например, введите «терминал» в тире и откройте его). Тогда:

Временные службы включения / выключения

Чтобы остановить и запустить службы временно (не включает / отключает их для будущих ботов), вы можете набрать service SERVICE_NAME . Например:

  • sudo service apache2 stop (Будет STOP служба Apache до перезагрузки или пока вы не запустите его снова).

  • sudo service apache2 start (будет START служба Apache, предполагая, что она была остановлена раньше.).

  • service apache2 status (сообщит вам СОСТОЯНИЕ службы, если он включен или запущен отключенным / НЕ работает.).

  • sudo service apache2 restart (будет 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 & amp; restart. Он также сообщит нам, если служба еще не была преобразована в выскочку:

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

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

  • СТАРТ - sudo start mysql

  • STOP - sudo stop mysql

  • RESTART - sudo restart mysql

  • СТАТУС - sudo status smbd

Включение / отключение службы

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

echo manual | sudo tee /etc/init/SERVICE.override

, где stanza manual остановит Upstart от автоматической загрузки службы при следующей загрузке. Любая служба с окончанием .override будет иметь приоритет над исходным файлом службы. После этого вы сможете запустить сервис вручную. Если вы этого не хотите, просто удалите .override . Например:

echo manual | sudo tee /etc/init/mysql.override

Положит службу MySQL в режим manual . Если вы этого не хотите, вы можете просто сделать

sudo rm /etc/init/mysql.override

и перезагрузите, чтобы служба снова запустилась автоматически. Конечно, чтобы включить службу, наиболее распространенным способом является ее установка. Если вы устанавливаете Apache, Nginx, MySQL или другие, они автоматически запускаются после завершения установки и запускаются каждый раз при загрузке компьютера. Отключение, как упоминалось выше, будет использовать сервис manual .

    
ответ дан Luis Alvarado 29.12.2010 в 21:26
источник
336

В настоящее время существует три разных способа запуска программного обеспечения в качестве службы в 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

Upstart использует файлы определения заданий в /etc/init , чтобы определить, в каких событиях должна запускаться служба. Таким образом, пока система загружается, выскочка обрабатывает различные события, а затем может запускать несколько служб параллельно. Это позволяет им полностью использовать ресурсы системы, например, путем запуска службы, связанной с диском, в то время как другая служба, связанная с процессором, запускается или пока сеть ожидает назначения динамического IP-адреса.

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

Позвольте мне просто остановиться здесь и сказать, что, если вы не знаете, что такое служба или что она делает, НЕ отключайте ее!

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

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

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

status servicename

Если это задание upstart , оно покажет следующее:

$ status statd
statd start/running, process 942

Но если это не так, вы увидите нечто подобное:

$ status apache2
status: Unknown job: apache2

В этом случае apache2 не было преобразовано в upstart . Итак, чтобы отключить apache2 , вы просто запустите

sudo update-rc.d apache2 disable
sudo service apache2 stop

Отключить службы (задания) в upstart

Определения заданий Upstart не имеют команды update-rc.d . Чтобы отключить задание, вам нужно отредактировать файл задания напрямую, чтобы отключить его. Есть два способа сделать это.

Если вы все еще хотите запустить его вручную, вам необходимо закомментировать условие start on . Предположим, вы хотите установить samba , но не запускать его автоматически. Вот файл задания (в natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <[email protected]>"

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

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

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Отключить службу, используя старт / стоп-строфу (с 11.04)

Начиная с версии выскочка, которая будет в 11.04, появляется новое ключевое слово, которое отключает start on и stop on stanzas: manual . Таким образом, еще один способ отключить службу с 11.04:

echo 'manual' | sudo tee /etc/init/mysql.override

# command from root shell
echo manual >> /etc/init/mysql.override

Вы можете создать файл override , чтобы отключить службу без изменения определения задания, просто разместив в нем ключевое слово manual .

    
ответ дан SpamapS 06.01.2011 в 18:25
123

SysV-RC-конф

Попробуйте использовать sysv-rc-conf

sudo apt-get install sysv-rc-conf

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

sudo sysv-rc-conf

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

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

Работа-Admin

ДругойальтернативныйвариантбудетJob-Admin,установивчерез

sudoapt-getinstalljobs-admin

Чтотакжепредоставляетграфическийинтерфейс,подобныйэтому

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

chkconfig

Итретийвариантбудетchkconfig,

sudoapt-getinstallchkconfig

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

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

chkconfig<service>on

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

chkconfig<service>off

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

chkconfig--add<service>

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

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

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

    
ответ дан atenz 28.06.2012 в 18:00
48

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

sudo apt-get install rcconf
sudo rcconf

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

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

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

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

ответ дан j-g-faustus 06.01.2011 в 18:44
18

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

  • Работа-Admin

    sudo apt-get install jobs-admin
    
ответ дан Postadelmaga 21.05.2012 в 10:27
12

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

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

    
ответ дан Izzy 30.06.2012 в 20:27
8

Существует также диспетчер загрузки .

Чтобы установить: sudo apt-get install bum

Дополнительная информация: Ссылка

    
ответ дан Sadi 20.05.2014 в 14:47