debian.org / О Debian Где взять Debian Поддержка Уголок разработчика Новости Wiki

Автор Тема: Автозапуск собственного скрипта  (Прочитано 10495 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nikanofff

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 24
Доброго времени суток уважаемые форумчане. Столкнулся с такой проблемой (вопросом). В общем стоят у меня игровые сервера. Соответственно для их запуска требуется запустить скрипт (этого самого запуска). Содержимое его таково:

#!/bin/sh
while true
do
screen -AmS myserver1 ./srcds_run -console -game dod +map dod_anzio +hostport 27015 +clientport 27005 +maxplayers 32 -exec server.cfg
sleep 1
done

Так вот вопрос в том что как к примеру мне сделать так чтоб при старте системы он активировался (запускался) так же автоматически? Читал и про /etc/init.d и про другое, но так ничего и не понял. Если не трудно объясните мне порядок действий.


Т.е или этот же скрипт копировать в эту папку а в этом скрипте указывать полную директорию, или иной какой способ.

Спасибо за внимание
 

Оффлайн yoric

  • Старожил
  • ****
  • Сообщений: 685
  • gentoo
  • Jabber: yoric@jabber.ru
Re: Автозапуск собственного скрипта
« Ответ #1 : 07 Май 2015, 20:05:34 »
Можно прямо так как есть вписать в /etc/rc.local, или оформить в виде файла и вызов оттуда же.
 

Оффлайн nikanofff

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 24
Re: Автозапуск собственного скрипта
« Ответ #2 : 07 Май 2015, 20:10:25 »
Можно прямо так как есть вписать в /etc/rc.local, или оформить в виде файла и вызов оттуда же.


Я вам конечно премного благодарен. А можно подробнее?) Я только осваиваю Дебиан (линукс) и некоторые моменты мне ещё не понятны. Как нибудь можно указать что к примеру такой то кусок скрипта вписать сюда и будет стартовать. Или как нибудь для меня не наученного в этом плане объяснить?
 

Оффлайн yoric

  • Старожил
  • ****
  • Сообщений: 685
  • gentoo
  • Jabber: yoric@jabber.ru
Re: Автозапуск собственного скрипта
« Ответ #3 : 07 Май 2015, 21:24:45 »
Впишите имя этого скрипта в /etc/rc.local, лучше с полным путём.
/где/находится/скрипт/имя.скриптаНапример, /usr/local/bin/name.scriptПеред exit 0
 

Оффлайн sandaksatru

  • Терминатор
  • Местный житель
  • ***
  • Сообщений: 487
  • Ушёл в спячку
Re: Автозапуск собственного скрипта
« Ответ #4 : 08 Май 2015, 10:33:22 »
Поскольку там while true
do
имхо лучше отделить его от консоли и перенаправить вывод в лог:
/где/находится/скрипт/имя.скрипта &>/var/log/имя_сервиса &
 

Оффлайн yoric

  • Старожил
  • ****
  • Сообщений: 685
  • gentoo
  • Jabber: yoric@jabber.ru
Re: Автозапуск собственного скрипта
« Ответ #5 : 08 Май 2015, 11:30:49 »
А, ну да, виноват, закорючку забыл в конце (&). Как минимум, для начала, потом видно будет.
 

Оффлайн 315th

  • Местный житель
  • ***
  • Сообщений: 101
Re: Автозапуск собственного скрипта
« Ответ #6 : 09 Май 2015, 13:56:08 »
Вот этот совет
Можно прямо так как есть вписать в /etc/rc.local, или оформить в виде файла и вызов оттуда же.
из раздела вредных.
nikanofff, если хотите оформить запуск Ваших игровых серверов надлежащим образом смотрите файл /etc/init.d/skeleton, в котором описаны необходимые функции запуска и остановки. А ваш скрипт запуска отправьте куда подальше.
Debian GNU/Linux 7.11 (wheezy) - CLI
ICH7; D525MV; r8169; Linux 4.14.32-atomd525mv-imq-ja1 (i686); Intel Atom D525 1.8 GHz
 

Оффлайн nikanofff

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 24
Re: Автозапуск собственного скрипта
« Ответ #7 : 10 Май 2015, 19:25:23 »
Цитировать
nikanofff, если хотите оформить запуск Ваших игровых серверов надлежащим образом смотрите файл /etc/init.d/skeleton, в котором описаны необходимые функции запуска и остановки. А ваш скрипт запуска отправьте куда подальше.

Не совсем вас понял. Глянул этот /etc/init.d/skeleton Там как я понял описаны какие то функции запуска, остановки. Т.е каким то образом необходимо внести там "процесс запуска" моего скрипта, или же в этом файле полностью указать (в самом файле) все буковки из моего скрипта?
 

Оффлайн yoric

  • Старожил
  • ****
  • Сообщений: 685
  • gentoo
  • Jabber: yoric@jabber.ru
Re: Автозапуск собственного скрипта
« Ответ #8 : 10 Май 2015, 20:49:37 »
А как у Вас вообще прогресс? Через rc.local сделали? Ну и сойдёт для начала, тоже мне, бином Ньютона))
 

Оффлайн 315th

  • Местный житель
  • ***
  • Сообщений: 101
Re: Автозапуск собственного скрипта
« Ответ #9 : 10 Май 2015, 23:00:46 »
Не совсем вас понял. Глянул этот /etc/init.d/skeleton Там как я понял описаны какие то функции запуска, остановки. Т.е каким то образом необходимо внести там "процесс запуска" моего скрипта, или же в этом файле полностью указать (в самом файле) все буковки из моего скрипта?
Вам нужно переписать скрипт таким образом чтобы он был работоспособным, соответствовал LSB, и не ломал систему. Если Вы посмотрите на другие скрипты запуска, поставляемые с пакетами из репазитария (ssh, apache, squid, etc...), то они состоят обычно из двух файлов:
1. /etc/default/scriptname
2. /etc/init.d/scriptname
В первом обычно указываются необходимые параметры запуска приложения, во втором функции.
Для примера простенький скрипт, использующий dtach (не прижился у меня screen, увы) написанный за 7 минут с колёс:
/etc/default/cs: ShowHide
Код: (bash) [Выделить]
csuser=root
game=dod
map=dod_anzio
sport=27015
cport=27005
maxplayers=32
cfg=/etc/cs/server.cfg

/etc/init.d/cs: ShowHide
Код: (bash) [Выделить]
#!/bin/sh
### BEGIN INIT INFO
# Provides:          csdm
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

export PATH=/sbin:/usr/sbin:/bin:/usr/bin
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="gameserver"
NAME="cs"
BIN=/usr/bin/srcds_run
DAEMON=/usr/bin/dtach
SOCKET=/tmp/$NAME.dtach
PIDFILE=/var/run/$NAME.pid

[ -x "$BIN" ] || exit 0
. /lib/init/vars.sh
. /lib/lsb/init-functions

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME || exit 0
DAEMON_ARGS="-console -game $game +map $map +hostport $sport +clientport $cport +maxplayers $maxplayers -exec $cfg"

cs_start(){
start-stop-daemon --start -q --name $NAME -o -c $user -u $user --pidfile $PIDFILE -Sx $DAEMON -- -n $SOCKET $BIN $DAEMON_ARGS
}

cs_stop(){
start-stop-daemon --stop --name $NAME --oknodo --pidfile $PIDFILE
}

case $1 in
start)
log_daemon_msg  "Starting $DESC: $NAME"
cs_start > /dev/null 2>&1
log_end_msg $?
;;
stop)
log_daemon_msg  "Stopping $DESC: $NAME"
cs_stop > /dev/null 2>&1
log_end_msg $?
;;
restart|reload)
log_daemon_msg "Restarting $DESC: $NAME"
cs_stop > /dev/null 2>&1
sleep 3
cs_start > /dev/null 2>&1
log_end_msg $?
;;
status)
    status_of_proc $BIN $NAME
    ;;
*)
echo "Usage: service `basename $0` {start|stop|restart|reload|status}" >&2
;;
esac

exit 0

Еще раз повторю, это не есть готовое решение, это пример, вероятно вам потребуется отладка скрипта.
Документация:
https://wiki.debian.org/LSB
https://wiki.debian.org/LSBInitScripts
man update-rc.d
Debian GNU/Linux 7.11 (wheezy) - CLI
ICH7; D525MV; r8169; Linux 4.14.32-atomd525mv-imq-ja1 (i686); Intel Atom D525 1.8 GHz
 

Оффлайн nikanofff

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 24
Re: Автозапуск собственного скрипта
« Ответ #10 : 12 Май 2015, 11:57:06 »
Спасибо. буду пробовать себя "образовывать"
 

Оффлайн Shabow

  • Новичок форума
  • Сообщений: 2
Re: Автозапуск собственного скрипта
« Ответ #11 : 02 Июль 2015, 12:58:03 »
Лично для себя решил проблему через cron.
старт скрипта после загрузки системы  - @reboot     /home/me/myscript.sh
 

Оффлайн LONER

  • Новичок форума
  • Сообщений: 4
Re: Автозапуск собственного скрипта
« Ответ #12 : 23 Апрель 2016, 20:11:23 »
Всем доброго времени суток! Чтобы не создавать новую тему с похожим названием, решил свой вопрос задать в этой.

Есть скрипт автозапуска XBT Tracker расположенный
/etc/init.d/xbtсам скрипт выглядит таким образом
#!/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
Чтобы он заработал надо его сделать исполняемым и поставить в автозапуск такими командами
chmod +x /etc/init.d/xbt
update-rc.d xbt defaults
теперь он будет автоматически запускаться после перезагрузки системы, так же им можно управлять такими командами
/etc/init.d/xbt start
/etc/init.d/xbt stop
/etc/init.d/xbt restart

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

Каким образом поставить данный скрипт в автозапуск при перезагрузки системы в Debian 8.x, существуют какие-то подобные команды для 8-х версий?
Читал на различных форумах, как подобные скрипты ставятся в автозапуск на Debian 8.x, но что-то уж больно много лишних движений для этого приходится делать и не все до конца понятно, в итоге мне так и не удалось поставить его в автозапуск.
Заранее, всем кто откликнется и поможет разобраться, спасибо.
 

Оффлайн alsoijw

  • Fedora 25 GNOME 3 amd64
  • Ветеран
  • *****
  • Сообщений: 1231
Re: Автозапуск собственного скрипта
« Ответ #13 : 23 Апрель 2016, 20:23:36 »
LONER, поменяли систему инициализации. Нужно создать systemd юнит, после чего
Цитировать
Включить юнит в автозапуск при загрузке системы:
# systemctl enable юнит
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?
 

Оффлайн LONER

  • Новичок форума
  • Сообщений: 4
Re: Автозапуск собственного скрипта
« Ответ #14 : 23 Апрель 2016, 20:34:58 »
Нужно создать systemd юнит
Вот в этом-то и проблема. У меня дружба с этим не ладится.
поменяли систему инициализации
А для чего создавать такие сложности? Ведь и так все прекрасно работало. Приходилось выполнить всего две простеньких команды и автозапуск работал, зато теперь так все мудрено на мой взгляд, только из-за systemd все ни как не решаюсь перейти на 8-ю версию.
 

Русскоязычное сообщество Debian GNU/Linux

Re: Автозапуск собственного скрипта
« Ответ #14 : 23 Апрель 2016, 20:34:58 »


Теги:
 

Автозапуск с systemd

Автор maltsevvv

Ответов: 10
Просмотров: 1506
Последний ответ 05 Август 2018, 12:59:04
от maltsevvv
Автозапуск в cron процесса, запускаемого через screen

Автор ANALGIN

Ответов: 0
Просмотров: 1332
Последний ответ 06 Январь 2019, 14:50:42
от ANALGIN