Титла: Обяснение на урок
Публикувано от: PornStar в Sep 26, 2012, 19:59
Здравейте,
От скоро се занимавам с линукс и не съм много напред, та зак'во ми е тоя линукс освен за цс сървъри, наех си аз VPS, настроих сървърите, всичко, и остана само едно, стартиращ скрипт ама нещо не ми се получава, ето го самия скрипт и 'обяснението' - http://amxmodxbg.org/forum/archive/linux-%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B8%D1%80%D0%B0%D1%89-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%B7%D0%B0-counterstrike-%D1%81%D1%8A%D1%80%D0%B2%D1%8A%D1%80%D0%B8-33998.html. Ще съм благодарен на някой, който ми обясни от до как става, има един файл hlds-2.txt, к'во да го правя ми кажи..., нищо не пише в тая тема, милиарди грешки ми дава, а няма кой да ми помогне. Вие сте последната ми надежда.
Btw: Ползвам Debian, без графична среда.
Благодаря !
Титла: Re: Обяснение на урок
Публикувано от: edmon в Sep 26, 2012, 22:15
още ли я мъчите тая игра....:))
Титла: Re: Обяснение на урок
Публикувано от: go_fire в Sep 26, 2012, 22:26
Пускай си сървъра на ОС дето познаваш и се не бой. Тоя пуст ГНУ/Линукс на теб с нищо няма да е полезен. Приятелски съвет, та да се спестиш много беди и несполуки.
Титла: Re: Обяснение на урок
Публикувано от: dev_urandom в Sep 26, 2012, 23:55
Здравейте,
От скоро се занимавам с линукс и не съм много напред, та зак'во ми е тоя линукс освен за цс сървъри <cut>
Мъка, и аз се чудя за какво ти е ...
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 13:36
Аз ако имах възможност щях да се преместя, но това предлагат от хостинг компанията. Ако някой ще помага, да помага, както казах, ако имах възможност щях да мина на windows.
Титла: Re: Обяснение на урок
Публикувано от: zdraganov в Sep 27, 2012, 14:14
Погледни документацията http://amxmodxbg.org/doc/ ($2) . Скрипта не успях да го открия, но може да пейстнеш изхода от изпълнението му да анализираме тук.
Титла: Re: Обяснение на урок
Публикувано от: go_fire в Sep 27, 2012, 15:02
Ами щом плащаме за домуване, няма нищо по-логично от това да изискаме от поддръжката да ни реши проблема. Още повече, че най-вероятно нямаш пълен достъп до машината (то се не знае, не си описал ограниченията на услугата). Но питам се аз, от кой зор, тръгваш да се занимаваш с нещо, набутваш се с пари, а нито си го проиграл предварително, нито имаш грамотно техническо лице на разположение.
Тази тема не е за този раздел. Да има игра намесена, има и ОС намесена, но не и някаква връзка между двете.
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 15:32
Още повече, че най-вероятно нямаш пълен достъп до машината (то се не знае, не си описал ограниченията на услугата)
наех си аз VPS
Аз мисля, че това е напълно описателно и съпорта на хостинга по никакъв начин няма какво да се занимава с проблема му. Сега да оставим настрана личните си мнения за автора, и, ако някой ще помага, да го направи. Ако не - да си мълчи (т. 4 от Правилата на форума). PornStar, наистина не се разбира какъв е този скрипт, що е. За да има някой достъп до темите във форума, посочен от теб, трябва да е регистриран. По принцип във форума има доста теми за CS сървъри, може да пуснеш търсене за hlds в търсачката и да погледнеш. Имаше и нещо за стартиращ скрипт, което обаче май остана недоизяснено. Най-добре е да ни опишеш подробно каква Линукс дистрибуция се ползва (това влияе на това къде се поставя скрипта и какви команди го правят стартиращ със зареждането на системата), какво пише във въпросния урок, какво пробваш ти от него и каква грешка ти дава. ПС. Хубаво ще е и да покажеш на всички, че, въпреки липсата на някои предварителни знания и умения, имаш воля да се научиш на нещата и да разсъждаваш, а не само да копираш и да искаш реения наготово. :)
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 16:37
Здравейте, В темата бях го написал, но няма нищо, използвам Debian, без графична среда. Ето го "урока": Здравейте
Поради това, че спирам Virtual.New.BG, за да не се загуби полезния скрипт го качвам тук!
Този скрипт прави следното:
* Държи вашия сървър винаги пуснат, демек когато крашне скрипта ще го дигне отново * Конзола която е в отделна сесия и винаги можете да влезете в нея * Имате възможност по-всяко време (чрез команда) да спрете, пуснете сървъра дори и да го рестартирате * Автоматично стартиране на сървъра всеки път щом пуснете вашата машина * Лесно се настройва и върши много добра работа
И нека да започнем с настройките на скрипта: (Той е прикачен по-долу в поста) 1. Преди да започнем със скрипта, трябва да инсталиране едно приложение ако го нямате със следната команда: За Debian базираните: Код: apt-get install screen
За RedHat базираните Код: yum install screen
2. Правите файл с някакво име в папката /etc/init.d Код: nano /etc/init.d/classic
3. Слагате в него съдържанието и го настройвате: Код: TITLE='Counter-Strike Dedicated Server' - Най-добре е тук да сложите името на сървъра ви (За да не се бъркате) SESSION='hlds' - Името на сесията, чрез която по-късно ако ви се наложи да влезнете в конзолата на сървъра DAEMON='hlds_run' - Името на демота който ще стартирате (Както обикновено той е hlds_run) DIR='/home/hlds' - Пътя до директорията на сървъра USER='root' - Под какъв потребител да върви сървъра (Препоръчително е да си остане root)
# Game options IP='127.0.0.1' - Ип-то на сървъра през което той да тръгне PORT='27015' - Порта на сървъра MAP='de_dust2' - Стартиращата карта (С коя карта да тръгне сървъра) GAME='cstrike' - Коя модификация искате да пуснете (За CS - cstrike. За Half-Life - valve) PLAYERS='21' - Колко максимални играча да има сървъра TICRATE='600' - sys_ticrate на сървъра PINGBOOST='2' - Буустера на сървъра възможности 1, 2 или 3 SVLAN='0' - sv_lan опцията RCON='' - И rcon паролата (Ако не искате такава оставете това празно)
4. След като сте настроили сървъра е време да му зададем права: Код: chmod +x името-на-файла
Пример: Код: chmod +x classic
5. Сега време да вкараме скрипта в процесите на Linux-а за Debian базирани: Код: update-rc.d името-на-файла defaults 99
Пример: Код: update-rc.d classic defaults 99
5. Сега време да вкараме скрипта в процесите на Linux-а за RedHat базирани: Код: chkconfig --level 345 името-на-файла on
Пример: Код: chkconfig --level 345 classic on
6. Вече скрипта е готов за работа, ето и командите да опериране с него: 6.1. Стартиране на сървъра: Код: /etc/init.d/classic start
6.2. Спиране на сървъра: Код: /etc/init.d/classic stop
6.3. Рестартиране на сървъра: Код: /etc/init.d/classic restart
7. Как да влезем в неговата сесия (Демек в конзолата на сървъра) Код: /etc/init.d/името-на-файла watch
Пример: Код: /etc/init.d/classic watch
8. Как да излезем от конзолата без сървъра да спре: 8.1. Натискате едновременно комбинацията от бутони: Код: Ctrl + A + D
Внимание: Ако настинете комбинацията Код: Ctrl + C
Сървъра ви ще спре!
Промени: 1. Преправяне на скрипта, за да тръгне на новия Debian Squeezy 2. Пренаписване времето за което сървъра се рестартира (Така се избягват евентуално дубликиране на сесиите) 3. Добавяне на нова опция в скрипта "watch" която Ви позволява директно влизане в конзолата на сървъра 4. Премахване на HighPriority опцията, тъй като беше излишна
Има един прикачен файл, съдържанието му: #!/bin/sh ### BEGIN INIT INFO # Provides: csservers # 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 # This script edit by kostov[Virtual.New.BG] # Server options TITLE='Counter-Strike Dedicated Server' SESSION='hlds' DAEMON='hlds_run' DIR='/home/slidenew2' USER='root'
# Game options IP='213.145.104.230' PORT='37015' MAP='slide_kzfr_woodslide' GAME='cstrike' PLAYERS='5' TICRATE='580' PINGBOOST='2' SVLAN='0' RCON=''
# Server options string OPTS="-game $GAME +ip $IP +maxplayers $PLAYERS +map $MAP -port $PORT +sv_lan $SVLAN +rcon_password $RCON +sys_ticrate $TICRATE -pingboost $PINGBOOST -master -noipx -nojoy +log off -pidfile $DIR/$GAME/$SESSION.pid"
# Screen command CURRENT_USER=$(/usr/bin/whoami) if [ "$CURRENT_USER" = "$USER" ]; then INTERFACE="/usr/bin/screen -A -m -d -S $SESSION" else INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $SESSION" fi
service_start() { if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then echo -e "Cannot start $TITLE. Server is already running." else if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then kill -9 `cat $DIR/$GAME/$SESSION-screen.pid` echo "Killing process ID $id" echo "Removing $TITLE screen pid file" rm -rf $DIR/$GAME/$SESSION-screen.pid break fi if [ -f $DIR/$GAME/$SESSION-screen.pid ]; then rm -rf $DIR/$GAME/$SESSION-screen.pid fi echo "Removing $TITLE pid file" rm -rf $DIR/$GAME/$SESSION.pid screen -wipe 1> /dev/null 2> /dev/null service_start fi else if [ -x $DIR/$DAEMON ]; then echo "Starting $TITLE" cd $DIR $INTERFACE $DIR/$DAEMON $OPTS sleep 15 ps -ef | grep SCREEN | grep "$SESSION" | grep -v grep | awk '{ print $2}' > $DIR/$GAME/$SESSION-screen.pid echo "$TITLE screen process ID written to $DIR/$GAME/$SESSION-screen.pid" echo "$TITLE server process ID written to $DIR/$GAME/$SESSION.pid" echo "$TITLE started." chmod 666 $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null chown $USER $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null sleep 15 fi fi }
service_stop() { if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then echo "Stopping $TITLE" for id in `cat $DIR/$GAME/$SESSION-screen.pid` do kill -9 $id echo "Killing process ID $id" echo "Removing $TITLE screen pid file" rm -rf $DIR/$GAME/$SESSION-screen.pid break done echo "Removing $TITLE pid file" rm -rf $DIR/$GAME/$SESSION.pid screen -wipe 1> /dev/null 2> /dev/null echo "$TITLE stopped." else echo -e "Cannot stop $TITLE. Server is not running." fi }
service_watch() { if [ `screen -wipe | grep $SESSION | grep -v grep | awk '{ print $2 }'` == '(Attached)' ]; then echo -e "Someone is already attached to the console of the server.\n Might want to check who" else screen -r $SESSION fi }
case "$1" in 'start') service_start ;; 'stop') service_stop ;; 'restart') service_stop sleep 10 service_start ;; 'watch') service_watch ;; *) echo "Usage $0 start|stop|restart|watch" esac
exit 0 Какво правя аз? Във създадения файл (примерно classic) поставям съдържанието на горния код и следвам стъпките описани в урока. Тръгна да пускам сървъра, но нищо, нито съобщението, нито нищо, пробвах да спра сървъра, но ми изписа, че сървъра изобщо не е бил стартиран?
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 17:22
2. Правите файл с някакво име в папката /etc/init.d Код: nano /etc/init.d/classic
3. Слагате в него съдържанието и го настройвате: Прикаченият файл е самият стартиращ скрипт, който трябва да сложиш в твоята система под името /etc/init.d/classic (classic може да го смениш и с нещо по твой избор). След това трябва да го редактираш така, че настройките, които е описал човека, да отговарят на твоите. Може да тръгнем стъпка по стъпка. Първо, може ли изхода от командите: GeSHi (Bash): ls -l /etc/init.d/classic cat /etc/init.d/classic
Първата ще покаже дали файлът съществува и някои негови допълнителни атрибути, като права за достъп и собственик. Втората ще ни покаже съдържанието му. Също така, на Дебиана качен ли е прикачения файл и под какво име (вкл. в коя директория)? И, за всеки случай, имаш ли идея какво е абсолютно и относително име на файл (абсолютен и относителен път до файл)?
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 17:41
root@stzvps:~# ls -l /etc/init.d/classic --wx-wx-wx 1 root root 3768 Sep 27 13:39 /etc/init.d/classic А резултата от cat си е самия код #!/bin/sh ### BEGIN INIT INFO # Provides: csservers # 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 # This script edit by kostov[Virtual.New.BG] # Server options TITLE='x4x0r' SESSION='hlds' DAEMON='hlds_run' DIR='/home/ZombiePlague' USER='root'
# Game options IP='79.124.16.82' PORT='27015' MAP='de_dust2' GAME='cstrike' PLAYERS='5' TICRATE='580' PINGBOOST='2' SVLAN='0' RCON=''
# Server options string OPTS="-game $GAME +ip $IP +maxplayers $PLAYERS +map $MAP -port $PORT +sv_lan $SVLAN +rcon_password $RCON +sys_ticrate $TICRATE -pingboost $PINGBOOST -master -noipx -nojoy +log off -pidfile $DIR/$GAME/$SESSION.pid"
# Screen command CURRENT_USER=$(/usr/bin/whoami) if [ "$CURRENT_USER" = "$USER" ]; then INTERFACE="/usr/bin/screen -A -m -d -S $SESSION" else INTERFACE="sudo -u $USER /usr/bin/screen -A -m -d -S $SESSION" fi
service_start() { if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then echo -e "Cannot start $TITLE. Server is already running." else if [ "$(ps -p `cat $DIR/$GAME/$SESSION.pid` | wc -l)" -gt 1 ]; then kill -9 `cat $DIR/$GAME/$SESSION-screen.pid` echo "Killing process ID $id" echo "Removing $TITLE screen pid file" rm -rf $DIR/$GAME/$SESSION-screen.pid break fi if [ -f $DIR/$GAME/$SESSION-screen.pid ]; then rm -rf $DIR/$GAME/$SESSION-screen.pid fi echo "Removing $TITLE pid file" rm -rf $DIR/$GAME/$SESSION.pid screen -wipe 1> /dev/null 2> /dev/null service_start fi else if [ -x $DIR/$DAEMON ]; then echo "Starting $TITLE" cd $DIR $INTERFACE $DIR/$DAEMON $OPTS sleep 15 ps -ef | grep SCREEN | grep "$SESSION" | grep -v grep | awk '{ print $2}' > $DIR/$GAME/$SESSION-screen.pid echo "$TITLE screen process ID written to $DIR/$GAME/$SESSION-screen.pid" echo "$TITLE server process ID written to $DIR/$GAME/$SESSION.pid"
echo "$TITLE started." chmod 666 $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null chown $USER $DIR/$GAME/*.pid #1> /dev/null 2> /dev/null sleep 15 fi fi }
service_stop() { if [ -f $DIR/$GAME/$SESSION.pid ] || [ -f $DIR/$GAME/$SESSION-screen.pid ]; then echo "Stopping $TITLE" for id in `cat $DIR/$GAME/$SESSION-screen.pid` do kill -9 $id echo "Killing process ID $id" echo "Removing $TITLE screen pid file" rm -rf $DIR/$GAME/$SESSION-screen.pid break done echo "Removing $TITLE pid file" rm -rf $DIR/$GAME/$SESSION.pid screen -wipe 1> /dev/null 2> /dev/null echo "$TITLE stopped." else echo -e "Cannot stop $TITLE. Server is not running." fi }
service_watch() { if [ `screen -wipe | grep $SESSION | grep -v grep | awk '{ print $2 }'` == '(Attached)' ]; then echo -e "Someone is already attached to the console of the server.\n Might want to check who" else screen -r $SESSION fi }
case "$1" in 'start') service_start ;; 'stop') service_stop ;; 'restart') service_stop sleep 10 service_start ;; 'watch') service_watch ;; *) echo "Usage $0 start|stop|restart|watch" esac
exit 0 Може да не съм написал правилната директория, когато вляза в ftp главната директория е root, и там се намира самата папка ZombiePlague. В скрипта съм писал /home/ZombiePlague.
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 18:24
root@stzvps:~# ls -l /etc/init.d/classic --wx-wx-wx 1 root root 3768 Sep 27 13:39 /etc/init.d/classic
Като за начало, това не е добре - правата за достъп не дават четене на никой и писане и изпълняване на всички. Имаш ли познания за права за достъп под Линукс (и Unix-like системи)? Да ти потърсим подходящо четиво, преди да ти кажем как да ги нагласиш? А резултата от cat си е самия код Много добре, значи си се справил със създаването на файла. Остава и настройките да са правилни (тук аз не мога да ти помагам). В скрипта съм писал /home/ZombiePlague. Това ме обърка. В смисъл, в скрипта (изхода от cat) няма никъде /home/ZombiePlague. Каква е тази папка - папката със сървъра ли?
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 18:38
root@stzvps:~# ls -l /etc/init.d/classic --wx-wx-wx 1 root root 3768 Sep 27 13:39 /etc/init.d/classic Като за начало, това не е добре - правата за достъп не дават четене на никой и писане и изпълняване на всички.
Имаш ли познания за права за достъп под Линукс (и Unix-like системи)? Да ти потърсим подходящо четиво, преди да ти кажем как да ги нагласиш?
А резултата от cat си е самия код Много добре, значи си се справил със създаването на файла. Остава и настройките да са правилни (тук аз не мога да ти помагам).
В скрипта съм писал /home/ZombiePlague. Това ме обърка. В смисъл, в скрипта (изхода от cat) няма никъде /home/ZombiePlague. Каква е тази папка - папката със сървъра ли?
Грешката беше моя, да това е папката на сървъра. А за правата предполагам, че ще стане така: chmod 777 -R classic, като предварително съм влязъл в папката init.d (имам предвид cd /etc/init.d/)
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 18:53
Грешката беше моя, да това е папката на сървъра. А за правата предполагам, че ще стане така:
chmod 777 -R classic, като предварително съм влязъл в папката init.d (имам предвид cd /etc/init.d/)
Ако това е папката на сървъра, предполагам, че вечи си оправил съответния ред в скрипта. За правата - 755 ми се струва максимумът, който би трябвало да е нужен. За това колко е минимумът, обаче, не мога да кажа. :) След като оправиш тези неща, трябва да си готов с точки 1 до 4 от указанията. Пробвай нататък (5 и 6) и кажи дали всичко е наред.
Титла: Re: Обяснение на урок
Публикувано от: dejuren в Sep 27, 2012, 19:03
леко встрани от темата 8. Как да излезем от конзолата без сървъра да спре: 8.1. Натискате едновременно комбинацията от бутони: Код: Ctrl + A + D
Внимание: Ако настинете комбинацията Код: Ctrl + C Сървъра ви ще спре!
Тук авторът е допуснал малка грешка. Комбинацията Ctrl + A се натиска първо, следвана от D (не Ctrl+D). Имаш ли познания за права за достъп под Линукс (и Unix-like системи)? Да ти потърсим подходящо четиво, преди да ти кажем как да ги нагласиш? Винаги давам двете като подходящи четива ;) http://wiki.ubuntuusers-bg.org/doku.php?id=ubuntu_chicks http://wiki.ubuntuusers-bg.org/doku.php?id=work_with_console
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:16
root:~# /etc/init.d/classic start root:~# /etc/init.d/classic stop -e Cannot stop x4x0r. Server is not running.
Титла: Re: Обяснение на урок
Публикувано от: ddantgwyn в Sep 27, 2012, 19:34
root:~# /etc/init.d/classic start
След това казва ли нещо? И покажи какво ще казва root:~# /etc/init.d/classic stаtusведнага след като стартираш скрипта
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:42
root:~# /etc/init.d/classic start root:~# /etc/init.d/classic status Usage /etc/init.d/classic start|stop|restart|watch
:(
След това пробвах със стоп, и пак пише, че не е пуснат.
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 19:43
Може да покажеш и изхода от GeSHi (Bash): ls -ld /home/ZombiePlague
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:46
root:~# ls -ld /home/ZombiePlague ls: cannot access /home/ZombiePlague: No such file or directory root@:~# ls -ld /root/ZombiePlague drwxr-xr-x 7 root root 4096 Sep 26 21:01 /root/ZombiePlague root@stzvps:~#
Какво по-дяволите?
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:49
ТРЪГНАА !!! ПИЧ, ЗАДЪЛЖЕН СЪМ ТИ ! ХИЛЯДИ БЛАГОДАРНОСТИ !
Титла: Re: Обяснение на урок
Публикувано от: ddantgwyn в Sep 27, 2012, 19:51
ТРЪГНАА !!! ПИЧ, ЗАДЪЛЖЕН СЪМ ТИ ! ХИЛЯДИ БЛАГОДАРНОСТИ !
ааа, аз невинен, то така си беше ::) а ако визираш bop_bop_mara -- тя е девойка :D
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:53
Извинявам се :D
Титла: Re: Обяснение на урок
Публикувано от: bop_bop_mara в Sep 27, 2012, 19:54
ТРЪГНАА !!! ПИЧ, ЗАДЪЛЖЕН СЪМ ТИ ! ХИЛЯДИ БЛАГОДАРНОСТИ !
Значи в крайна сметка проблемът беше в правата на скрипта и обърканото име на директорията със сървъра?
Титла: Re: Обяснение на урок
Публикувано от: PornStar в Sep 27, 2012, 19:57
Точно така. За това даже не ми трябваше да зная нещо относно Linux, ама а де.
|