Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Ba3KaTa в Mar 10, 2015, 09:46



Титла: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 09:46
Здравейте приятели и драги съфорумници. Имам едно питане, което ме мъчи отдавна. Имам гейм сървър на Counter-Strike 1.6 под Ubuntu 14.04 Server. С всичко се оправих, но не мога да го накарам да тръгва при буутване на ОС. Сървъра се намира в home/x3reme/cs/game и го стартирам с един изпълним файл ./start . Стартира се чрез програмата screen, a ето и съдържанието на файла start.

screen -A -m -d -S hlds ./hlds_run -game cstrike -pingboost 3 -autoupdate -port 27015 +maxplayers 32 +map de_dust2

Ще ви бъда изключително благодарен, ако ми помогнете :) .


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: BRADATA в Mar 10, 2015, 10:05
сложи
Код:
/home/x3reme/cs/game/start
преди
Код:
exit 0
реда в /etc/rc.local


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: bvbfan в Mar 10, 2015, 10:17
Файлът start трябва да съдържа
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. screen -A -m -d -S hlds ./hlds_run -game cstrike -pingboost 3 -autoupdate -port 27015 +maxplayers 32 +map de_dust2


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: 4096bits в Mar 10, 2015, 10:17
Аз съм почитател на tmux


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 10:58
И така съм пробвал, не иска и не иска да се стартира.
Ето го файла rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/x3reme/cs/game/start
exit 0


И скрипта start оправих, но не иска да се стартира и това е. Пробвах и с cronjob, но отново същия резултат.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: laskov в Mar 10, 2015, 11:21
А като го стартираш със същия ред или с ./start ръчно в терминал тръгва ли?


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 11:25
Да, тръгва си, така го ползвам от месец, но ако се ресне машината ( с тия токови удари и спирания на тока) трябва да влизам и да го пускам ръчно, та затова искам да тръгва след boot-ване на ОС.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: ray в Mar 10, 2015, 11:26
Здравейте,

Първо виж дали имаш този файл/връзка /bin/sh (може да пробваш и с /bin/bash, трябва да ги има).

Какви са правата на файла: /etc/rc.local (изпълним ли е ?).

В зависимост от дистрибуцията може би ползваш systemd, там май имаше някакви промени (трябва да го добавиш като услуга и да е изпълним).
Също така не се гарантира че стартира последен.

Последно опитай ръчно да стартираш скрипта: /home/x3reme/cs/game/start да видим какво ще стане (видях че си писал че така работи).

Успех.
Румен


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 11:37
Имам и двата файла.

Ето правата на rc.local
x3reme@system:~$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 305 Mar 10 11:20 /etc/rc.local

Като отида до него и го стартирам с ./start или с целия ред от файла start, тръгва.

При опит с
/home/x3reme/cs/game/start
нищо не се случва.

Извинявам се, но не съм толкова запознат с линукс, така, че не се смейте, ако изтърся някоя глупост :) .


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: neter в Mar 10, 2015, 11:56
Обърни внимание, че в командата си описал изпълнимия файл с относителен път:
screen -A -m -d -S hlds ./hlds_run -game cstrike -pingboost 3 -autoupdate -port 27015 +maxplayers 32 +map de_dust2
При това, ако изпълниш командата от папка, различна от тази, която съдържа изпълнимия файл, то файлът няма да бъде намерен и няма да бъде изпълнен. Затова не ти се получава изпълнението на скрипта при зареждане на системата или при изпълнение с пълен път, когато не си в неговата папка. Впиши пълния път до изпълнимия файл!


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 12:02
Опитай със следното:

Код:
sudo cp /home/x3reme/cs/game/start /etc/init.d/
sudo chmod +x /etc/init.d/start
sudo update-rc.d start defaults

и reboot-ни да видиш дали ще запали. Имай на предвид, че start не е добро име за скрипт :)


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 12:12
Опитай със следното:

Код:
sudo cp /home/x3reme/cs/game/start /etc/init.d/
sudo chmod +x /etc/init.d/start
sudo update-rc.d start defaults

и reboot-ни да видиш дали ще запали. Имай на предвид, че start не е добро име за скрипт :)

И така не се получава.

Значи въведох целия път в скрипта, обаче същата работа, не мога да го изпълня от друга папка, освен от тази в която се намира. А като съм в нея се изпълнява и с целия път до скрипта - /home/x3reme/cs/game/start. От другаде не мога да го стартирам и е ясно, че аз греша някъде.

Код:
screen -A -m -d -S hlds /home/x3reme/cs/game/hlds_run -game cstrike -pingboost 3 -autoupdate -port 27015 +maxplayers 32 +map de_dust2


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 12:15
Извинявай, чета между редовете...

Погледни какво е написал neter няколко поста по-нагоре...трябва да зададеш пълните пътеки до изпълнимите файлове...включително и на screen която вероятно е /usr/bin/screen


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 12:29
Добавих и /usr/bin/ преди screen, но отново не се изпълнява от никъде другаде, освен от неговата папка. Ако го накарам да тръгва и от други директории, съм сигурен, че с rc.local ще стане.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 12:35
Инсталирай strace (sudo apt-get install strace) и стартирай файла със следното:

Код:
strace -o strace.out -vf -s 1024 /home/x3reme/cs/game/start 

След което прикачи strace.out тук или качи съдържанието му (това е output-а от strace) във pastebin


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 12:38
Directory '/var/run/screen' must have mode 777.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 12:46
http://pastebin.com/xLpbBSc7

Не обръщай внимание, че директорията е /home/x3reme/cs/start, a не /home/x3reme/cs/game/start, понеже ползвам идентични машини и не искам да спирам работещия сървър за тестове :)


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 12:55
Мне....това е проблем със strace не със screen. Ако си chmod-нал директорията /var/run/screen/ после ще трябва да и върнеш 775

шит...
Опитай същият strace но изпълни само командата от файла, без screen и всичко това го направи във нов screen със пълните пътища.




Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 13:12
Нещо не схванах смисъла на последното изречение. Направих следното strace директно с кода от start без скрийн, но файла strace.out стана 84 МБ и няма как да му постна редовете или каквото и да било тук.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 13:27
Цитат
, без screen и всичко това го направи във нов screen със пълните пътища.
Да...няма много смисъл в последното изречение :)

Опитвам се да разбера, дали проблема е в скрийн-а или в командата за стартиране на услугата.
Ако изпълниш директно:

Код:
./path/to/file/hlds_run -game cstrike -pingboost 3 -autoupdate -port 27015 +maxplayers 32 +map de_dust2
Работи ли или не?


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 13:37
Само ти флудя темата с предположения...никога не съм се занимавал с game server-и...

Та...разтръсих се специално за твоя сървър и мисля че можеш да погледнеш следната тема:
https://forums.alliedmods.net/showthread.php?t=158393


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: neter в Mar 10, 2015, 13:57
Между другото, има ли някакво задължение това приложение да се пуска през screen, или е за удобство?


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 14:15
Между другото, има ли някакво задължение това приложение да се пуска през screen, или е за удобство?

За удобство е.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: k0tka в Mar 10, 2015, 14:16
Между другото, има ли някакво задължение това приложение да се пуска през screen, или е за удобство?

Доколкото прочетох може и с nohup и & , но по този начин няма да имаш достъп до "конзолата" от която вероятно има разни логове и/или опции за администратиране на услугата


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 14:34
Така, започна да се отваря отвсякъде, трябвало е да се добави във satrt и пътя до файла, където изпълнява hlds_run
Това е скрипта start -
#!/bin/bash
cd /home/x3reme/cs
screen -A -m -d -S hlds /home/x3reme/cs/hlds_run -game cstrike -autoupdate -port 27015 +maxplayers 24 +map de_dust2


Обаче го стартира като root, а аз искам да се стартира от потребител x3reme.

Пробвах със "su x3reme" в началото на кода, но при ръчно изпълнение ми иска парола, а чрез rc.local не се случва нищо


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: neter в Mar 10, 2015, 15:02
Пробвах със "su x3reme" в началото на кода, но при ръчно изпълнение ми иска парола, а чрез rc.local не се случва нищо
Синтаксисът е
Код:
su - x3reme -c "команда"
Бих ти препоръчал така да извикаш целия скрипт, а не да го слагаш само за основната команда вътре. Запази кавичките! И имай предвид, че пак ще ти иска парола, ако не го изпълниш с root права.


Титла: Re: Стартиране на screen при boot-ване на Ubuntu 14.04
Публикувано от: Ba3KaTa в Mar 10, 2015, 15:20
Пробвах със "su x3reme" в началото на кода, но при ръчно изпълнение ми иска парола, а чрез rc.local не се случва нищо
Синтаксисът е
Код:
su - x3reme -c "команда"
Бих ти препоръчал така да извикаш целия скрипт, а не да го слагаш само за основната команда вътре. Запази кавичките! И имай предвид, че пак ще ти иска парола, ако не го изпълниш с root права.

Най-накрая, благодаря на всички за отзивчивостта и помощта. Вече тръгва точно както го исках, благодаря ви много.