Автозагрузка в CentOS

19 Jul 2010 | Автор: anchous |

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

Собственно в CentOS процесс загрузки работает по принципу System V и расписан в файле  /etc/inittab, точнее расписано то как процесс INIT отрабатывает уровни загрузки. В системе фалы загрузки находятся в каталоге /etc/rc.d и носят названия rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, и rc6.d. Пользователи могут размещать файлы в этих каталогах которые будут контролировать запуск сервисов в системе.В свою очередь эти фалы линкуются на каталог /etc/rc.d/init.d и содержащиеся в них скрипты запуска процессов. В этой связи для запуска сервиса необходимо создать полноценный файл запуска сервиса в /etc/init.d, после чего задать символический линк на него из папки соответствующей тому уровню запуска, на котором необходимо стартовать данный сервис. Файлик запуска сервиса будет выглядеть следующим образом, хотя можно расписать все  пару строк просто строкой запуска сервиса:

#!/bin/bash
#
# chkconfig: 35 90 12
# description: Foo server
#

# Get function from functions library
. /etc/init.d/functions

# Start the service FOO
start() {
initlog -c “echo -n Starting FOO server: ”
/path/to/FOO &
### Create the lock file ###
touch /var/lock/subsys/FOO
success $”FOO server startup”
echo
}

# Restart the service FOO
stop() {
initlog -c “echo -n Stopping FOO server: ”
killproc FOO
### Now, delete the lock file ###
rm -f /var/lock/subsys/FOO
echo
}

### main logic ###
case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status FOO
;;
restart|reload|condrestart)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart|reload|status}”
exit 1
esac

exit 0

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

Для добавления сервисов находящихся в попдапках rc0.d – rc6.d в автозагрузку в системе есть специальная утилита chkconfig, с помощью которой можно добавлять или исключать сервисы.

# chkconfig -l service_name # просмотреть уровни автозагрузки сервиса
# chkconfig  –level 34 service_name on|off|reset # вкключить или выключить сервис на 3 и 4 уровнях
# chkconfig  –del service_ name # удалить службу
# chkconfig  service_name on|off # включить или выключить службу на всех уровнях
ну и есессно главная команда:
# man chkconfig

Помимо этого можно воспользоваться утилитой ntsysv , для редактирования всех уровней или задач редактирования для определенного уровня:
# ntsysv –level 34

VN:F [1.9.21_1169]
Rating: 9.2/10 (9 votes cast)
VN:F [1.9.21_1169]
Rating: +3 (from 3 votes)
Автозагрузка в CentOS, 9.2 out of 10 based on 9 ratings

Теги: ,

Отзывов: 3 на «Автозагрузка в CentOS»

  1. Автор: Oleg на 20 Dec 2011

    Ошибка в коде, немогу найти где. Не роботает короче

    [Reply]

    anchous Reply:

    прям вот ошибка-ошибка?
    плохо когда нельзя найти, особенно не ища.. :)
    вероятнее всего в кавычках при копировании

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 4.0/5 (4 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 6 votes)
  2. Автор: Александр на 06 Jun 2013

    запуска сервиса в файл /etc/rc.local. Это файл будет отработан в самом конце загрузки системы, но перед выдачей меню логина.
    Дописал, сервис SD стартует, но до логина не доходит.
    Наугад добавил exit, не помогло. Что не так далаю?

    [Reply]

    VA:F [1.9.21_1169]
    Rating: 1.0/5 (3 votes cast)
    VA:F [1.9.21_1169]
    Rating: -1 (from 3 votes)

Ваш отзыв