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

Спасибо, Тим. В образ UEC нет пароля для пользователя root или ubuntu. Поэтому я просто использую закрытый ключ и ssh для экземпляра UEC, а затем создаю нового пользователя / пароль. После этого я могу войти в консоль VNC в этот экземпляр.

1
задан 20 May 2014 в 19:54

6 ответов

В настоящее время существует три разных способа запуска программного обеспечения в качестве службы в 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. [F16] в S##xxxx означает «начальный порядок» для обслуживания xxxx. Наоборот, ## в K##xxxx означает порядок уничтожения для службы xxxx.

Одна из основных проблем с SysV заключалась в том, что при загрузке системы все должно было быть сделанные в последовательном порядке, одно за другим, что делает время загрузки системы очень медленным. Были предприняты попытки распараллелить это, но они были случайными и трудными в полной мере использовать. Это была основная причина создания Upstart.

Upstart

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

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

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

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

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

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

status servicename

Если это выскочка, это покажет это: [!d20 ]

$ status statd
statd start/running, process 942

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

$ status apache2
status: Unknown job: apache2

В этом случае apache2 не был преобразован в upstart [!d21 ]. Таким образом, чтобы отключить 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

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

sudo service smbd stop

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

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

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

Начиная с версия выскочка, которая будет в 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 ключевое слово в нем.

328
ответ дан 25 May 2018 в 23:45
  • 1
    Похоже, 11.04 тоже переопределил. Поэтому echo manual >> /etc/init/<service>.override предпочтительнее, так как он оставляет исходный файл .conf филе неповрежденным. Во всяком случае, его по-прежнему стыдно, что для такого базового разрешения / отключения потребовалось 3 года, и для этого нет графического интерфейса. – MestreLion 27 May 2011 в 08:09
  • 2
    update-rc.d - это то, что действительно важно – Tim 2 December 2012 в 15:26
  • 3
    кажется, гораздо более оригинальной темой, чем ответ, который был помечен как дефинитивный ответ на исходный вопрос. Благодаря! :) – Henning 6 April 2014 в 16:11
  • 4
    В моем случае файл /etc/init/ssh.conf существует, но status ssh и status sshd оба говорят «Неизвестное задание». Этот ответ, похоже, не затрагивает такую ​​возможность? – Brian Z 7 June 2015 в 06:33
  • 5
    status ssh дает мне «Неизвестную работу», но service ssh status работает для меня – ptim 27 March 2016 в 04:00

sysv-rc-conf

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

sudo apt-get install sysv-rc-conf

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

sudo sysv-rc-conf

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

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

Jobs-Admin

Другой альтернативой будет sysv-rc-conf , установив через

sudo apt-get install jobs-admin

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

enter image description here

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

chkconfig

И третий вариант будет Показать защищенные задания ,

sudo apt-get install chkconfig

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

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

chkconfig <service> on

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

chkconfig <service> off

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

chkconfig --add <service>

update-rc.d

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

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

118
ответ дан 25 May 2018 в 23:45
  • 1
    на сервере ubuntu: Package chkconfig is not available, but is referred to by another package. – pwned 22 April 2013 в 18:16
  • 2
    @pwned Вы можете редактировать и публиковать обновленную информацию о версии сервера. Благодарю вас. – atenz 26 April 2013 в 19:53
  • 3
    Я сделал то, что вы предложили, теперь для экспертной оценки. – pwned 26 April 2013 в 21:44
  • 4
    jobs-admin не позволяет изменять задания (Ubuntu 14.04), создавая вместо этого отчет о сбое ;-) – Sadi 20 May 2014 в 19:38
  • 5
    sysv-rc-conf не подходит для использования с upstart или systemd, он явно относится только к старой системе System 5 rc, которая не была стандартной по умолчанию для Ubuntu Linux в течение почти десятилетия. Ошибка в Debian # 791689 подтверждает это и спрашивает, почему она не была помечена как конфликтующая с systemd. – JdeBP 17 November 2015 в 13:41

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

sudo apt-get install rcconf
sudo rcconf

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

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

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

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

48
ответ дан 25 May 2018 в 23:45
  • 1
    Это все еще работает с выскочкой? – oKtosiTe 7 January 2011 в 00:18
  • 2
    К сожалению нет. Но он работал во всех случаях, которые я хотел изменить: работа с выскочкой - это, в основном, вещи, которые я никогда не хочу отключать, - аппаратные часы, демона журнала, сеть и т. Д. (На сервере Ubuntu, по крайней мере). Но это то, о чем нужно знать (я не был :), я обновил сообщение. – j-g-faustus 7 January 2011 в 00:59
  • 3
    К сожалению, mysql был преобразован в выскочку. И это сервис, который я использую только при выполнении какого-либо проекта. – MestreLion 27 May 2011 в 08:12
  • 4
    В Ubuntu 12.04 есть ошибка с rcconf, которая предотвращает запуск программы. Чтобы решить проблему, вам нужно установить пакет диалога. – devius 3 June 2012 в 03:08
  • 5
    Поскольку этот ответ был написан, update-rc.d был изменен, а некоторые из его устаревших функциональных возможностей были удалены . Ошибка Debian # 727735 отмечает, что rcconf не был изменен для соответствия. И нет, rcconf тоже не работает с systemd, поэтому не применимо ни к одной из систем инициализации по умолчанию для Ubuntu Linux в течение последнего десятилетия. – JdeBP 17 November 2015 в 13:35

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

Jobs-Admin
sudo apt-get install jobs-admin
18
ответ дан 25 May 2018 в 23:45
  • 1
    Но это слишком просто и не позволяет изменять «защищенные задания», (что это за работа? У Apple есть рабочие места, у операционной системы есть демоны!) – kakaz 20 December 2013 в 02:06
  • 2
    Я даже не позволяю изменять «незащищенные задания». (Ubuntu 14.04), создавая вместо этого отчет о сбое ;-) – Sadi 20 May 2014 в 19:37

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

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

12
ответ дан 25 May 2018 в 23:45

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

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

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

7
ответ дан 25 May 2018 в 23:45
  • 1
    Не забудьте проверить флажок «Дополнительно». кнопка. – not2qubit 4 February 2016 в 06:10

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

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