Форумы

Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Пнд Ноя 22 2010, 11:54
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
Разберем на примере создание простого скрипта инициализации для RHEL ( CentOS).

#!/bin/sh
# chkconfig: 345 80 20
# description: PingStat server daemon

BASE="/opt/PingSTAT2_01"
. /etc/init.d/functions

start() {
	echo -n Starting PingStat server:
	daemon --user=monit $BASE/pingstat $BASE/pingstat.conf
	retval=$?
	echo
	[ "$retval" = 0 ] && touch /var/lock/subsys/pingstat
	return $retval
}

stop() {
	echo -n Stopping PingStat server:
	killproc pingstat
	retval=$?
	echo
	[ "$retval" = 0 ] && rm -f /var/lock/subsys/pingstat
	return $retval
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	status)
		status pingstat
		;;
	restart)
		stop
		start
		;;
	*)
		echo "Usage: pingstat {start|stop|status|restart}"
		exit 1
		;;
esac

exit 0


Первые три строки – служебные:

Первая – shebang, указывает системе с помощью какого интерпретатора исполнять скрипт.

Вторые две – необходимы для работы утилиты chkconfig. Цифровые параметры указывают что скрипт должен стартовать на 3,4,5 уровнях запуска и его приоритеты для старта/остановки.

Затем идет подключение /etc/init.d/functions к нашему скрипту. Нам он нужен, т.к. в нем содержится набор функций, использующихся для запуска, остановки процесса, определения его PID и т.п.

Далее описываем две наши основные функции – start и stop.
В функции start мы запускаем /opt/PingSTAT2_01/pingstat с параметром /opt/PingSTAT2_01/pingstat.conf под пользователем monit.

Результат выполнения мы записываем в переменную retval. Затем анализируем эту переменную, и если ее значение равно 0, что значит успешный запуск нашего процесса, создаем lock файл /var/lock/subsys/pingstat.

В функции stop мы завершаем наше приложение и удаляем lock файл.
«Руководит» работой нашего скрипта оператор case. Он сравнивает значение переменнной $1 со своими параметрами, и в случае совпадения выполняет соответствующие функции. В переменной $1 содержится первый параметр, который мы передаем нашему init скрипту при запуске.2

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

Оригинал

[ Редактирование Пнд Ноя 22 2010, 11:55 ]
Наверх
centos init script   init script для Linux своими руками   

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System