Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Общие вопросы Debian/Ubuntu
  • Search

Автозапуск собственного скрипта после перезагрузки системы Debian 8.x

Post Reply
  • Print view
Advanced search
24 posts
  • 1
  • 2
  • 3
  • Next
NORMANN
Posts: 35
Joined: Fri Aug 30, 2013 11:55 am

Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by NORMANN » Sun Apr 24, 2016 2:34 pm

Всем доброго времени суток! Я понимаю, что созданная мной тема не имеет ни какого отношения к панели VESTA, но все же надеюсь на помощь. Пробовал сам, почитав различные мануалы, обращался на Русскоязычное сообщество Debian, но там только ответили
поменяли систему инициализации. Нужно создать systemd юнит
У меня на VPS стоит Debian 7.10 с панелью VESTA
Есть скрипт xbt автозапуска XBT Tracker расположенный

Code: Select all

/etc/init.d/xbt
Сам скрипт выглядит таким образом

Code: Select all

#!/bin/bash

XBT_PATH="/home/xbt/Tracker"
case "$1" in
	start)
		echo "Start XBT Tracker"
		cd $XBT_PATH
		./xbt_tracker --conf_file xbt_tracker.conf
		echo $?
;;
	stop)
		echo "Stop XBT Tracker"
		kill `cat /var/run/xbt_tracker.pid`
		echo $?
;;
	restart)
		kill `cat /var/run/xbt_tracker.pid`
		sleep 2
		cd $XBT_PATH
		./xbt_tracker --conf_file xbt_tracker.conf
;;
	*)
		echo "Usage: /etc/init.d/xbt {start|stop|restart}"
		exit 1
;;
esac
exit 0
Чтобы он заработал надо его сделать исполняемым и поставить в автозапуск такими командами

Code: Select all

chmod +x /etc/init.d/xbt
update-rc.d xbt defaults
теперь он будет автоматически запускаться после перезагрузки системы, так же им можно управлять такими командами

Code: Select all

/etc/init.d/xbt start
/etc/init.d/xbt stop
/etc/init.d/xbt restart
Все это прекрасно работает для Debian 7.x
Но для Debian 8.x теми же командами скрипт не ставится в автозапуск, хотя вручную управляется нормально командами

Code: Select all

/etc/init.d/xbt start
/etc/init.d/xbt stop
/etc/init.d/xbt restart
Знаю что в Denian 8.x поменяли систему инициализации, нужно создать systemd юнит, после чего включить юнит в автозапуск при загрузке системы командой

Code: Select all

systemctl enable юнит
К примеру чтобы запустить приведенный выше скрипт, у меня получилось примерно такое:
- сам systemd юнит у меня называться xbt.service и лежит тут

Code: Select all

/etc/systemd/system/xbt.service
- и выглядит примерно так

Code: Select all

[Unit]
Description=xbt service
After=syslog.target

[Service]
ExecStart=/bin/bash '/etc/init.d/xbt'
Type=simple
 
[Install]
WantedBy=multi-user.target
- потом включаю юнит в автозапуск при загрузке системы так

Code: Select all

systemctl enable xbt
- и получаю такое

Code: Select all

Synchronizing state for xbt.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d xbt defaults
insserv: warning: script 'K01xbt' missing LSB tags and overrides
insserv: warning: script 'xbt' missing LSB tags and overrides
Executing /usr/sbin/update-rc.d xbt enable
update-rc.d: error: xbt Default-Start contains no runlevels, aborting.
Где, что упустил/пропустил/не то сделал?
В общем перепробовал создание различных конфигураций systemd юнитов и ни один не работает. Печально, то что работало без проблем на Debian 7.x, на Debian 8.x ни в какую не желает.
Заранее, всем кто откликнется и поможет разобраться, спасибо. Уверен, что решение довольно таки простое, но у меня пока не получается подружиться с systemd.
Может через cron запускать? На подобии такой команды

Code: Select all

sudo /etc/init.d/xbt start
Только как сделать чтобы запускалось одноразово, а не через определенные промежутки времени?
И надо чтобы запускалось уже после apache2, nginx, mysql. Без mysql XBT Tracker вообще работать не будет.
Top

userV
Posts: 37
Joined: Mon Apr 11, 2016 5:14 pm

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by userV » Mon Apr 25, 2016 12:43 pm

Code: Select all

#!bin/bash
if [ $(pidof mysqld)>'0' ]
then
	echo "Запускаем"
else
	sleep 1m
	echo "Пробуем снова"
fi  
UPD. Но логичнее запускать цикл)

Code: Select all

while [[ $(pidof mysqld) == '' ]]
do
	echo 'wait'
	sleep 2s
done
Top

NORMANN
Posts: 35
Joined: Fri Aug 30, 2013 11:55 am

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by NORMANN » Mon Apr 25, 2016 2:17 pm

userV, это Вы к чему? Мой вопрос не понятен? Нужен systemd юнит.
Top

userV
Posts: 37
Joined: Mon Apr 11, 2016 5:14 pm

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by userV » Mon Apr 25, 2016 3:39 pm

NORMANN wrote:userV, это Вы к чему? Мой вопрос не понятен? Нужен systemd юнит.
Я ответил на последний ВАШ вопрос. Как запустить скрипт после запуска mysql и т.д стандартной автозагрузкой.
Что накосячили в systemd разбираться долго и муторно. Надеюсь кто то другой ответит.
Top

NORMANN
Posts: 35
Joined: Fri Aug 30, 2013 11:55 am

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by NORMANN » Mon Apr 25, 2016 3:46 pm

userV wrote: стандартной автозагрузкой.
Стандартной автозагрузкой, приведенный мной выше скрипт и так работает замечательно и запускается как надо, но в Debian 7.x, а вот в Debian 8.x этот способ уже не работает, нужен systemd юнит
Top

userV
Posts: 37
Joined: Mon Apr 11, 2016 5:14 pm

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by userV » Mon Apr 25, 2016 3:50 pm

NORMANN wrote:
userV wrote: стандартной автозагрузкой.
Стандартной автозагрузкой, приведенный мной выше скрипт и так работает замечательно и запускается как надо, но в Debian 7.x, а вот в Debian 8.x этот способ уже не работает, нужен systemd юнит
Быть такого не может. /etc/rc.local и update-rc.d ххх defaults не работают?
Top

NORMANN
Posts: 35
Joined: Fri Aug 30, 2013 11:55 am

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by NORMANN » Mon Apr 25, 2016 4:39 pm

userV wrote: Быть такого не может. /etc/rc.local и update-rc.d ххх defaults не работают?
Вы полностью читали мое первое сообщение? Я вроде и написал какую ошибку выдает. И если бы работало, то наверно и тему бы не создавал. Эта проблема началась только в 8-х версиях, до этого все прекрасно было и не один год.
Top

userV
Posts: 37
Joined: Mon Apr 11, 2016 5:14 pm

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by userV » Mon Apr 25, 2016 5:51 pm

NORMANN wrote:
userV wrote: Быть такого не может. /etc/rc.local и update-rc.d ххх defaults не работают?
Вы полностью читали мое первое сообщение? Я вроде и написал какую ошибку выдает. И если бы работало, то наверно и тему бы не создавал. Эта проблема началась только в 8-х версиях, до этого все прекрасно было и не один год.
/etc/rc.local тоже просить дописать дефолтные уровни запуска? Что то ваш дебиан выделывается.

https://wiki.debian.org/LSBInitScripts
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
Top

NORMANN
Posts: 35
Joined: Fri Aug 30, 2013 11:55 am

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by NORMANN » Tue Apr 26, 2016 8:47 am

Добавил в скрипт

Code: Select all

### BEGIN INIT INFO
# Provides:          xbt
# Required-Start:    $remote_fs $syslog $local_fs 
# Required-Stop:     $remote_fs $syslog $local_fs 
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start xbt at boot time
# Description:       Enable service provided by xbt.
### END INIT INFO
при выполнении команды

Code: Select all

update-rc.d xbt defaults
ошибок не появилось, в rc0.d, rc1.d, rc6.d появилось K01xbt , в rc2.d, rc3.d, rc4.d, rc5.d появилось S03xbt,
но однако же после перезагрузки ОС автозапуск не просходит, так и приходится вручную запускать командой

Code: Select all

/etc/init.d/xbt start
В скрипте уже менял

Code: Select all

#!/bin/bash
на

Code: Select all

#!/bin/sh
результат тот же. В принципе на Debian 7.x и так и так работает, в 8-й пока нет.
Но хоть сдвиг какой-то появился, что при установки в автозапуск уже ошибку не выдает.
С systemd юнит пока решил повременить, удалил его, пытаюсь без него.
Top

userV
Posts: 37
Joined: Mon Apr 11, 2016 5:14 pm

Re: Автозапуск собственного скрипта после перезагрузки системы Debian 8.x
  • Quote

Post by userV » Tue Apr 26, 2016 10:52 am

vi /etc/rc.local и перед exit
/home/xbt/Tracker/xbt_tracker --conf_file xbt_tracker.conf

:)

в /etc/init.d/ много примеров
Top


Post Reply
  • Print view

24 posts
  • 1
  • 2
  • 3
  • Next

Return to “Debian/Ubuntu”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password