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

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

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

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

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

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

747 голосов | спросил NES 30 ThuEurope/Moscow2010-12-30T00:03:32+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 00:03:32 +0300 2010, 00:03:32

7 ответов


743

Есть службы, которые могут быть включены /отключены с помощью 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 & 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

, где строковое руководство 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 30 ThuEurope/Moscow2010-12-30T00:26:59+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 00:26:59 +0300 2010, 00:26:59
332

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

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

sudo service smbd stop

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

Начиная с версии upstart, которая будет в 11.04, появляется новое ключевое слово, которое отключает stats-установки mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled и start on: stop on. Таким образом, еще один способ отключить службу с 11.04:

manual

Вы можете создать файл echo 'manual' | sudo tee /etc/init/mysql.override # command from root shell echo manual >> /etc/init/mysql.override , чтобы отключить службу без изменения определения задания вообще, просто разместив в нем ключевое слово override.

ответил SpamapS 6 Jpm1000000pmThu, 06 Jan 2011 21:25:27 +030011 2011, 21:25:27
120

SysV-RC-конф

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

sudo apt-get install sysv-rc-conf

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

sudo sysv-rc-conf

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

введите описание изображения здесь>> </p>

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

<H2> Работа-Admin </h2>

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

<pre><code>sudo apt-get install jobs-admin
</code></pre>

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

<p> <img src =

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

chkconfig

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

Ctrl+n

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

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

sudo apt-get install jobs-admin

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

sudo apt-get install chkconfig

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

chkconfig

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

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

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

ответил atenz 28 J0000006Europe/Moscow 2012, 22:00:04
48

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

sudo apt-get install rcconf
sudo rcconf

alt text

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

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

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

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

ответил j-g-faustus 6 Jpm1000000pmThu, 06 Jan 2011 21:44:50 +030011 2011, 21:44:50
18

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

  • Работа-Admin

    sudo apt-get install jobs-admin
    
ответил Postadelmaga 21 Maypm12 2012, 14:27:04
12

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

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

ответил Izzy 1 J000000Sunday12 2012, 00:27:58
7

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

Для установки: sudo apt-get install bum

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

введите описание изображения здесь>> </p></body></html>

ответил Sadi 20 Maypm14 2014, 18:47:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132