Как включить или отключить сервисы?

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

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

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

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

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

885
задан 20 May 2014 в 18:54

9 ответов

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

Для терминала у вас есть несколько вариантов. Во-первых, откройте терминал (например, введите "terminal" в тире и откройте его). Затем:

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

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

  • 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 (В этом случае, так как вы не упомянули ДЕЙСТВИЕ, которое нужно выполнить для службы, оно покажет вам все опции, доступные для этой конкретной службы). Этот аспект варьируется в зависимости от сервиса, например, в MySQL будет упомянуто только то, что в нем отсутствует параметр. Для других сервисов, таких как сетевая служба, следует упомянуть небольшой список всех доступных опций.


SYSTEMD

Начиная с Ubuntu 15.04, Upstart будет устаревшим в пользу Systemd. С помощью Systemd для управления сервисами мы можем сделать следующее (с помощью шаблона systemctl действие СЕРВИС ):

systemctl запуск СЕРВИСА - Используйте его для запуска сервиса. Не сохраняется после перезагрузки

systemctl stop SERVICE - используйте его для остановки функции. Не сохраняется после перезагрузки

systemctl перезагрузите СЕРВИС - Используйте его для перезагрузки службы

systemctl перезагрузите СЕРВИС - Если служба поддерживает эту функцию, то она перезагрузит связанные с ней конфигурационные файлы, не прерывая ни одного процесса, в котором используется служба.

systemctl статус SERVICE - Отображает статус службы. Сообщает, запущен ли сервис в данный момент.

systemctl enable SERVICE - Включает сервис, при следующей перезагрузке или при следующем событии запуска. Продолжается после перезагрузки.

systemctl отключает СЕРВИС - Выключает сервис при следующей перезагрузке или при следующем событии остановки. Продолжается после перезагрузки.

systemctl включено УСЛУГИ - Проверьте, настроена ли служба на запуск или не запуск при следующей перезагрузке.

systemctl включено УСЛУГИ - Проверьте, активна ли служба в данный момент.

systemctl показать СЕРВИС - Показать всю информацию об услуге.

sudo systemctl маска СЕРВИС - Полностью отключить услугу, связав ее с /dev/null; вы не можете запустить услугу вручную или включить ее.

sudo systemctl разоблачите маску SERVICE - Удалите соединение с /dev/null и восстановите возможность включения и ручного запуска функции.


UPSTART (Deprecated Since 15. 04)

Если мы хотим использовать официальный способ Upstart (Обратите внимание, что на данный момент не все сервисы преобразованы в Upstart), мы можем использовать следующие команды:

status SERVICE - Это подскажет нам, запущен ли преобразованный сервис или нет. Обратите внимание, что эта команда устарела в пользу start, stop, status & restart. Он также сообщит нам, если сервис еще не был преобразован в Upstart:

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

  • START - sudo start mysql

  • STOP - sudo stop mysql

  • RESTART - sudo restart mysql

  • STATUS - - Sudo restart mysql

  • STATUS. 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 в режим ручного управления . Если Вы этого не хотите, то после этого Вы можете просто выполнить

sudo rm /etc/init/mysql.override

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

895
ответ дан 20 May 2014 в 18:54

Также имеется Boot-Up Manager .

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

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

enter image description here

9
ответ дан 20 May 2014 в 18:54

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

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

12
ответ дан 20 May 2014 в 18:54

sysv-rc-conf

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

sudo apt-get install sysv-rc-conf

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

sudo sysv-rc-conf

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

enter image description here

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

Jobs-Admin

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

sudo apt-get install jobs-admin

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

jobs-admin preview

Для отображения большего количества заданий вы должны отметить Показать защищенные задания в его меню.

chkconfig

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

sudo apt-get install chkconfig

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

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

chkconfig <service> on

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

chkconfig <service> off

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

chkconfig --add <service>

update-rc.d

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

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

130
ответ дан 20 May 2014 в 18:54

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

  • Jobs-Admin

     sudo apt-get install jobs-admin
     
18
ответ дан 20 May 2014 в 18:54

В настоящее время существует три различных способа запуска программного обеспечения в качестве сервиса в Ubuntu, SysV, Upstart и systemd. Здесь сервис определяется как программа, запущенная системой в фоновом режиме, а не как программа, запущенная и запущенная непосредственно пользователем.

SysV

SysV

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

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

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

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

Является ли сервис upstart основанным?

Чтобы выяснить, основан ли сервис на upstart, можно выполнить команду 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 не имеют команды updateate-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

Чтобы отключить samba, можно просто поставить # перед "start on local-filesystems". Обратите внимание, что хотя резервное копирование при загрузке не запускается, на этот раз вам все равно нужно остановить его с помощью

sudo service smbd stop

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

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

Отключить службу, используя start/stop stanza (начиная с 11.04)

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

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

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

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

367
ответ дан 20 May 2014 в 18:54

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

sudo apt-get install rcconf
sudo rcconf

alt text

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

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

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

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

49
ответ дан 20 May 2014 в 18:54

Я использую Stacer. Он также показывает услуги и процессы. Полный набор инструментов системы GUI. https://github.com/oguzhaninan/Stacer

2
ответ дан 20 May 2014 в 18:54

Самый простой способ для меня, как я используйте только 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

Как всегда; вы можете ссылаться на справочную страницу .

2
ответ дан 5 January 2021 в 23:57

Другие вопросы по тегам:

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