Перейти к основному содержимому
Версия: 5.1

Настройка init.d-сервиса при отсутствии systemd

В дистрибутивах, где отсутствует systemd (например, в старых версиях Linux, таких как CentOS 6), управление сервисами осуществляется через скрипты init.d. В этой статье описывается, как создать и настроить совместимые с init.d сервисы для запуска Smart Beat и Smart Beat Manager.

Установка Smart Beat и Smart Beat Manager

  1. Подготовка окружения

Создайте системных пользователей (smartbeat и sbm) и директории для размещения исполняемых файлов (/app/smartBeat и /app/smartBeatManager).

Скопируйте .elf-файлы Smart Beat и Smart Beat Manager в соответствующие каталоги и сделайте их исполняемыми:

chmod +x /app/smartBeat/smartbeat.elf
chmod +x /app/smartBeatManager/sbm.elf
  1. Первичный запуск

Запустите приложения с root-правами для первичной инициализации:

/app/smartBeat/smartbeat.elf install --ignore-systemd
/app/smartBeatManager/sbm.elf install --ignore-systemd

Это приведет к созданию необходимых рабочих папок и конфигурационных файлов.

После генерации передайте права на директории соответствующим пользователям:

chown -Rf smartbeat:smartbeat /app/smartBeat/
chown -Rf sbm:sbm /app/smartBeatManager/

Создание init.d сервисов

В системах без поддержки systemd служебные процессы управляются через скрипты init.d. Ниже приведены рабочие init.d-скрипты для Smart Beat и Smart Beat Manager.

Скрипт для Smart Beat

Сервис для работы с smartBeat:

### BEGIN INIT INFO
# Provides: smartbeat
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Smart Beat Service
# Description: Service to run the Smart Beat application
### END INIT INFO

NAME="smartbeat"
DESC="Smart beat Service"
DAEMON="/app/smartBeat/smartbeat.elf"
DAEMON_OPTS="run"
PIDFILE="/var/run/$NAME.pid"
USER="smartbeat"
WORKDIR="/app/smartBeat"

test -x $DAEMON || exit 0

case "$1" in
start)
echo "Starting $DESC..."
su -c "cd $WORKDIR && nohup $DAEMON $DAEMON_OPTS > /dev/null 2>&1 &" $USER
echo "$DESC started."
;;
stop)
echo "Stopping $DESC..."
pkill -f "$DAEMON $DAEMON_OPTS"
echo "$DESC stopped."
;;
restart)
echo "Restarting $DESC..."
$0 stop
sleep 10
$0 start
;;
status)
if pgrep -f "$DAEMON $DAEMON_OPTS" > /dev/null; then
echo "$DESC is running."
else
echo "$DESC is not running."
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}"
exit 1
;;
esac

exit 0

Скрипт для Smart Beat Manager

Сервис для работы с smartBeatManager:

### BEGIN INIT INFO
# Provides: smartbeatmanager
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Smart Beat Manager Service
# Description: Service to run the Smart Beat Manager application
### END INIT INFO

NAME="sbm"
DESC="Smart Beat Manager Service"
DAEMON="/app/smartBeatManager/sbm.elf"
DAEMON_OPTS="run"
PIDFILE="/var/run/$NAME.pid"
USER="sbm"
WORKDIR="/app/smartBeatManager"

test -x $DAEMON || exit 0

case "$1" in
start)
echo "Starting $DESC..."
su -c "cd $WORKDIR && nohup $DAEMON > /dev/null 2>&1 &" $USER
echo "$DESC started."
;;
stop)
echo "Stopping $DESC..."
pkill -f "$DAEMON"
echo "$DESC stopped."
;;
restart)
echo "Restarting $DESC..."
$0 stop
sleep 1
$0 start
;;
status)
if pgrep -f "$DAEMON" > /dev/null; then
echo "$DESC is running."
else
echo "$DESC is not running."
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}"
exit 1
;;
esac

exit 0

Теперь управление сервисами возможно с помощью стандартных команд:

service smartBeat.service start

# Доступны также команды:
# service smartBeat.service stop
# service smartBeat.service status
# service smartBeat.service restart

Аналогично - для smartBeatManager.service.