Настройка init.d-сервиса при отсутствии systemd
В дистрибутивах, где отсутствует systemd
(например, в старых версиях Linux, таких как CentOS 6), управление сервисами осуществляется через скрипты init.d
. В этой статье описывается, как создать и настроить совместимые с init.d
сервисы для запуска Smart Beat и Smart Beat Manager.
Установка Smart Beat и Smart Beat Manager
- Подготовка окружения
Создайте системных пользователей (smartbeat
и sbm
) и директории для размещения исполняемых файлов (/app/smartBeat
и /app/smartBeatManager
).
Скопируйте .elf
-файлы Smart Beat и Smart Beat Manager в соответствующие каталоги и сделайте их исполняемыми:
chmod +x /app/smartBeat/smartbeat.elf
chmod +x /app/smartBeatManager/sbm.elf
- Первичный запуск
Запустите приложения с 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
.