Centos 6 автозапуск скрипта
При старте системы запускаются жизненно необходимые для нее службы/демоны и т.д. Для включения в этот список необходимых вам компонентов, чтобы не делать каждый раз настройку вручную существуют различные способы, также непосредственно через специальные демоны автозагрузки.
В этой статье рассмотрим процесс добавления сервисов в автозагрузку для самых популярных дистрибутивов Linux: CentOS, Debian и Ubuntu.
Debian/Ubuntu
Для дистрибутивов Debian и Ubuntu управление автозагрузкой служб и доменов осуществляется с помощью утилиты update-rc.d с посредством демона init. Сама утилита работает с символическими ссылками связанных с init скриптами, которые управляют запуском/остановкой программ расположенных в каталоге /etc/init.d.
Коротко пройдемся по основных командах:
- вывод списка сервисов и их состояния
- добавить сервис в автозагрузку (service - название самого сервиса).
Опция -f отвечает за удаление символических ссылок.
CentOS 6
Здесь за автозагрузку демонов/программ/служб отвечает содержимое каталога /etc/rc.local. Управление этими процессами идет через команду chkconfig, которая кроме стандартных функций добавления/удаления служб с автозагрузки имеет уровни выполнения команды (уровни запуска). Уровни запуска - режимы работы операционной системы, каждый с каких несет в себе установленное направление функционала и ограничений. Всего уровней существует семь, которые нумеруются от 0 до 6.
0 уровень - прекращение работы системы.
1 уровень - однопользовательский режим, доступен только пользователю root.
2 уровень - многопользовательский режим, возможно работа с нескольких терминалов, вход уже как обычные пользователи.
3 уровень - также многопользовательский режим, настройка сетевых служб.
4 уровень - не используется.
5 уровень - включение графической подсистемы X11, для возможности использования графического интерфейса вместо командной строки.
6 уровень - перезагрузка системы.
- предоставления информацию по конкретному сервису
Здесь после использования команды на экране в консоли возле номеров уровней будут идти индикаторы on -включен, off - выключен, что определяет на каких уровнях работает или нет указанный сервис.
- для добавления сервиса на определенных уровнях
Где после --level указываются номера уровней (слитно) на которых будет доступен сервис.
Для версий Debian 8, Ubuntu 15.04, CentOS 7 и выше
В более новых версиях CentOS, Debian и Ubuntu в качестве демона автозагрузки сервисов применяется systemd. Systemd для этого использует unit-файлы из каталога /etc/systemd/system. Systemd является очень универсальным и многофункциональным менеджером систем Linux, и позволяет распределять запуск служб в процессе загрузки ОС (включать и отключать их), тем самым максимально контролировать сам запуск. Systemd идет в связке с командой systemctl через которую идет управление автозагрузкой сервисов в системе.
systemctl list-unit-files --type=service
Автозагрузка сервисов призвана немного облегчить рутинные задачи, с чем успешно справляется.
В CentOS для добавления сервисов (приложений) в автозагрузку существует служба chkconfig. При условии, что эти сервисы установлены из репозитория командой yum.
Чтобы включить автозагрузку, то есть чтобы приложение запустилось при старте сервера (при загрузке операционной системы) необходимо выполнить следующую команду:
Уровни выполнения в CentOS
Уровень 0 — остановка системы (halt) — работа системы должна быть прекращена;
Уровень 1 — однопользовательский режим работы — система инициализирует минимум служб и даёт единственному пользователю (как правило, суперпользователю) без проведения аутентификации командную строку. Как правило, этот режим используется для восстановления системы;
Уровень 2 — многопользовательский режим — пользователи могут работать на разных терминалах, вход в систему с процессом аутентификации;
Уровень 3 — многопользовательский сетевой режим — в отличие от предыдущего уровня, осуществляется настройка сети и запускаются различные сетевые службы;(используется преимущественно на серверных системах)
Уровень 4 — не имеет стандартного толкования и практически не используется;
Уровень 5 — запуск графической подсистемы — по сравнению с уровнем 3 производится также старт графической подсистемы X11, и вход в систему осуществляется уже в графическом режиме;
Уровень 6 — перезагрузка системы — при включении этого режима останавливаются все запущенные программы и производится перезагрузка.
Чтобы узнать текущий уровень выполнения достаточно выполнить команду runlevel.
В моем примере сервер находится на уровне выполнения 3, что является нормальным режимом его работы.
Автозагрузка на конкретные уровни выполнения Linux
По-умолчанию, команда chkconfig прописывает сервисы в автозагрузку по уровням 2, 3, 4, 5. Если необходимо изменить такой порядок, то следуют использовать следующие параметры:
Краткий список полезного применения утилиты chkconfig
Добавить в автозагрузку
Проверить включена ли служба в автозагрузку
Включить службу на всех уровнях (2, 3, 4, 5)
Включить службу на определенных уровнях
Выключить службу на всех уровнях (2, 3, 4, 5)
Выключить службу на определенных уровнях
Удалить службу из автозагрузки
Благодарности
Список источников информация с которых была использована при написании статьи:
Для автозапуска приложений Node.js есть много способов, но после некоторых поисков мне удалось отыскать такое решение, которое и работает, и не представляет большой трудности.
Сперва я испробовал работает превосходно, но только до тех пор, пока вам не понадобится запустить приложение при начальной загрузке системы. Я пробовал добавить строчку иногда она срабатывала, а иногда нет, и до сих пор я не разобрался, почему так.
Затем я поглядел на Upstart Upstart сделал сочинение скрипта для автозагрузчика таким же простым, во времена DOS, а Monit умеет проверять приложение, чтобы убедиться, что оно всё время работает.
Тут я понял, что моя потребность проста: запускать приложение при начальной загрузке системы, перезапускать, если оно упадёт (с приложениями Node.js такое и одного upstart достаточно для того, чтобы устроить и то, и другое.
В состав CentOS 6.2 upstart ужé входит, так что вам остаётся только поместить текстовый файл назвав его, например,
После этого можно будет подавать такие команды:
Приложение также будет запущено при начальной загрузке, и в CentOS 6.2 можно обойтись одним этим для запуска приложения и для поддержания его работы. Я обнаружил также, что в CentOS запуск посредством необходим, а другие варианты, кажется, не работают.
Примечания переводчика:
- Upstart не нуждается в полях description так что можно обойтись в скрипте без них вместо того, чтобы наполнять всякой чепухою.
- Если пути в системе прописаны корректно, то в скрипте можно набирать просто вместо то же самое касается и команд которые тогда не будут нуждаться в префиксе
- Помимо вышеперечисленных, существует также команда которая запускает сперва а затем Она бывает полезна в тех случаях, когда приходится одной командою (а не двумя) перезапустить, например, сервер чтобы очистить такой кэш, который у сервера хранится в памяти, или чтобы принудить сервер руководствоваться новой версией джаваскриптового файла, описывающего маршрутизацию на сайте.
- Команду можно подавать без страха: она откажется работать, если приложение с указанным ей именем ужé запущено, а не запустит ненужный второй экземпляр его.
- Без строчки и без противоположной ей команды как правило, можно обойтись. Убивать процесс по его номеру не придётся: куда проще подавать команду в которой используется имя приложения, которое всегда одно и то же, да притом и запоминается лучше.
- Указание «respawn» работает в upstart так хорошо, что все обычные методы выхода из джаваскриптового приложения (например, также приводят к его перезапуску, а не к окончательной остановке. Можете воспользоваться этим, если понадобится предусмотреть интерфейс для дистанционного перезапуска другого сервера.
В CentOS существует несколько уровней автозагрузки. Давайте их рассмотрим:
- Уровень 0 — остановка системы (halt) — работа системы должна быть прекращена;
- Уровень 1 — однопользовательский режим работы — система инициализирует минимум служб и даёт суперпользователю без проведения аутентификации командную строку. Как правило, этот режим используется для восстановления системы;
- Уровень 2 — многопользовательский режим — пользователи могут работать на разных терминалах, вход в систему с процессом аутентификации;
- Уровень 3 — многопользовательский сетевой режим — в отличие от предыдущего уровня, осуществляется настройка сети и запускаются различные сетевые службы;
- Уровень 4 — не имеет стандартного толкования и практически не используется;
- Уровень 5 — запуск графической подсистемы — по сравнению с уровнем 3 производится также старт графической подсистемы X11, и вход в систему осуществляется уже в графическом режиме;
- Уровень 6 — перезагрузка системы — при включении этого режима останавливаются все запущенные программы и производится перезагрузка.
"Теперь, когда мы мегамодные пацаны"©, и знаем про уровни выполнения, попробуем разобраться с системой управления.
Для работы с автозагрузкой в CentOS используется утилита chkconfig:
Необходимо знать всего пару команд, чтобы чувствовать себя вполне комфортно. Итак:
Интересно, что в CentOS 5 команда chkconfig без ключей выведет информацию о версии, а в CentOS 6 - покажет список служб. Но это не важно.
Если Вам нужна какая-то конкретная служба, грепать не нужно =) Просто делаем:
chkconfig --list < имя сервиса >
Пример, кому интересно:
Чтобы добавить (зарегистрировать) службу в chkconfig, нужно выполнить команду:
chkconfig --add < имя сервиса >
Соответственно, чтобы удалить:
chkconfig --del < имя сервиса >
На этом, в целом, и всё. Аккуратнее с экспериментами! ;)
Комментарии
А еще переключаться между
А еще переключаться между уровнями загрузки Centos можно командой init
Например:
init 2 - перейти из текущего уровня на уровень номер 2.
И собственно как я и ожидал:
init 6 - произошла перезагрузка системы. =)
Читайте также: