Вопросы относительно .sh скриптов

TolikCorp

Участник
Сообщения
874
Реакции
334
Привет, я в одной из соседних тем дорабатывал универсальный ЗАПУСКАТР, сделал подхват настроек из скрипта с данными сервера. Но вопрос в этом:

PHP:
			st_count=0
			while [ $st_count -lt 5 ]
			do
# command
			echo Completed $st_count
			st_count="$(( $st_count + 1 ))"
			sleep 1
			done
			screen -S $screen_name -X -p0 stuff 'exit'`echo -ne '\015'`
			echo Completed exit
			sleep 5
			kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
			echo Completed k0
			kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')
			echo Completed k1
			kill -9 $(ps ax | grep ${screen_name}_update | grep -v grep | awk '{print $1}')
			echo Completed k2
			screen -wipe > /dev/null 2>&1
			echo Completed wipe
переменные game_port и т.д. нормальные
Вывод такой:

PHP:
No screen session found.
Completed 4
No screen session found.
Completed
kill: 112: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
Completed k0
Т.е. скрипт останавливается после завершения процесса
Как это исправить?

Добавлено через 35 минут
Запускаю стандартным методом: sh /blablabla/file.sh
 
Последнее редактирование:

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Вообще, что скрипт должен делать?
Пока вижу только разнообразные способы убийства процессов серва...

C-подобный:
[COLOR=#000000][COLOR=#0000BB]
[COLOR=Red]#! /bin/sh
# Где обозначена переменная screen_name ?
# screnname=css
[/COLOR]            st_count[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]0 
            [/COLOR][COLOR=#007700]while [ [/COLOR][COLOR=#0000BB]$st_count [/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]lt 5 [/COLOR][COLOR=#007700]] 
            do 
[/COLOR][COLOR=#FF8000]# command 
            [/COLOR][COLOR=#007700]echo [COLOR=Red]"[/COLOR][/COLOR][COLOR=#0000BB]Completed $st_count[COLOR=Red]"[/COLOR] 
            st_count[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"$(( [/COLOR][COLOR=#0000BB]$st_count[/COLOR][COLOR=#DD0000] + 1 ))" 
            [/COLOR][COLOR=#0000BB]sleep 1 
            done 
            screen [/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]S $screen_name [/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]X [/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]p0 stuff [/COLOR][COLOR=#DD0000]'exit'[/COLOR][COLOR=#007700]`[/COLOR][COLOR=#DD0000]echo -ne '\015'[/COLOR][COLOR=#007700]` 
            echo [/COLOR][COLOR=#0000BB]Completed [/COLOR][COLOR=#007700]exit 
            [/COLOR][COLOR=#0000BB]sleep 5 
[COLOR=DarkOrchid]
# В этих строках уж нет необходимости

            #kill [/COLOR][/COLOR][COLOR=DarkOrchid]-9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}') 
            #echo Completed k0 
            #kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}') 
            #echo Completed k1 
            #kill -9 $(ps ax | grep ${screen_name}_update | grep -v grep | awk '{print $1}') 
            #echo Completed k2 
            #screen -wipe > /dev/null 2>&1 
            #echo Completed wipe  [/COLOR][/COLOR][COLOR=DarkOrchid]

[/COLOR]
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Это связано с тем, что это лишь кусок.

PHP:
#!/bin/sh/
hldsupdatetool="/home/hldsupdatetool/steam"
server_dir="/home/user/css_1"
screen_name="css_1"
game_prefix_1="Counter-Strike Source"
game_prefix_2="cstrike"
game_port="29876"

отправка на серв сообщений об обновлении
i=0
while [$i -lt 5]
do
screen -S $screen_name -X -p0 stuff 'say Update server after a few seconds'`echo -ne '\015'`
sleep 1
done
посылка выхода
screen -S $screen_name -X -p0 stuff 'exit'`echo -ne '\015'`
sleep 5
Пробуем вырубить по порту, скрин сервера и, если есть скрин обновления этого серва, дабы не запустить несколько обновлений одного и того же сервера

kill -9 $(ps ax | grep "port $game_port" | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')
kill -9 $(ps ax | grep ${screen_name}_update | grep -v grep | awk '{print $1}')
чистка скрин листа
screen -wipe > /dev/null 2>&1
лог обновлений, лог предыдущ. обновления
cp ./screenlog.0 screenlog.1 > /dev/null 2>&1
rm ./screenlog.0 > /dev/null 2>&1
запуск обновления
screen -AmdLS ${screen_name}_update $hldsupdatetool -command update -game '"$game_prefix_1"' -dir "$server_dir" -retry -verify_all
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Вопрос со скрином решен?
 

TolikCorp

Участник
Сообщения
874
Реакции
334
еще нет, выходит из скрипта после одного из тасккила

Добавлено через 20 минут
и вот возник по ходу вопрос:
screen_name="css_1"
kill -9 $(ps ax | grep $screen_name | grep -v grep | awk '{print $1}')

допустим есть серверы css_1 и css_11
и при выполнении команды офаются оба
вариант только давать номера с 00001 ... 00011 или можно как-то огродить?

Добавлено через 1 час 2 минуты
Сам отвечу на свой вопрос:
kill -9 $(ps ax | grep SCREEN | grep -v grep | grep $ip | grep $port | awk '{print $1}')
тобишь
kill -9 $(ps ax | grep SCREEN | grep -v grep | grep 192.168.1.15 | grep 27015| awk '{print $1}')
Должно работать
 
Последнее редактирование:

TolikCorp

Участник
Сообщения
874
Реакции
334
PHP:
screen_name="css_1"
if [ screen -list | grep ${screen_name}_update ]; then
		server_status="2"
		info_status="Сервер обновляется"
			elif [ screen -list | grep ${screen_name} ]; then
				server_status="1"
				info_status="Сервер запущен"
					elif [ screen -list | grep ${screen_name}_install ]; then
						server_status="3"
						info_status="Сервер устанавливается"
							elif [ true ]; then
								server_status="-1"
								info_status="Статус не удалось получить, т.к. сервер выключен"
	fi
61 - строка с последним fi
[: 61: missing ]
grep: ]: Нет такого файла или каталога
[: 61: missing ]
grep: ]: Нет такого файла или каталога
[: 61: missing ]
grep: ]: Нет такого файла или каталога

Эхо на показ статуса
[--------- Код статуса: -1 - Статус не удалось получить, т.к. сервер выключен

Как нужно исправить?
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Покажи полный код, а то непонятно что куда.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
user@debian:~$ sh ./status.sh
There are screens on:
1509.css_1 (03.03.2013 06:00:34) (Detached)
9 Sockets in /var/run/screen/S-user.

[: 26: missing ]
grep: ]: Нет такого файла или каталога
[: 26: missing ]
grep: ]: Нет такого файла или каталога
[: 26: missing ]
grep: ]: Нет такого файла или каталога
Код статуса: -1 - Статус не удалось получить, т.к. сервер выключен
user@debian:~$
PHP:
#!/bin/sh/

#screen_name="$(grep screen_name= $server_conf | sed -e 's/.*"\(.*\)".*/\1/')"
	screen_name="css_1"
	screen -wipe > /dev/null 2>&1
	screen -list
# А что сервер делает?
####################################################
# -1 - Статус не удалось получить, т.к. сервер выключен
# 1 - Сервер запущен
# 2 - Сервер обновляется
# 3 - Сервер устанавливается

	if [ screen -list | grep ${screen_name}_update ]; then
		server_status="2"
		info_status="Сервер обновляется"
			elif [ screen -list | grep ${screen_name} ]; then
				server_status="1"
				info_status="Сервер запущен"
					elif [ screen -list | grep ${screen_name}_install ]; then
						server_status="3"
						info_status="Сервер устанавливается"
							elif [ true ]; then
								server_status="-1"
								info_status="Статус не удалось получить, т.к. сервер выключен"
	fi
	echo "$info_line_half Код статуса: $server_status - $info_status"

Добавлено через 17 минут
Ох, опять сам себе отвечаю)))
PHP:
#!/bin/sh/

#screen_name="$(grep screen_name= $server_conf | sed -e 's/.*"\(.*\)".*/\1/')"
	screen_name="css_1"
	screen -wipe > /dev/null 2>&1
	screen -list
# А что сервер делает?
####################################################
# -1 - Статус не удалось получить, т.к. сервер выключен
# 1 - Сервер запущен
# 2 - Сервер обновляется
# 3 - Сервер устанавливается

	if  screen -list | grep -q ${screen_name}_update ; then
		server_status="2"
		info_status="Сервер обновляется"
			elif  screen -list | grep -q ${screen_name} ; then
				server_status="1"
				info_status="Сервер запущен"
					elif screen -list | grep -q ${screen_name}_install; then
						server_status="3"
						info_status="Сервер устанавливается"
							elif [ true ]; then
								server_status="-1"
								info_status="Статус не удалось получить, т.к. сервер выключен"
	fi
	echo "$info_line_half Код статуса: $server_status - $info_status"
вот так рабит как надо)
 
Последнее редактирование:

acik_traiks

Что нибудь напишем?)
Сообщения
770
Реакции
627
Я понял что это скрипт на проверку но разве он что то делает как узнать где пути к серверу вводить и тд
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Ну как видно тут оно смотрит на скриннейм.
 
Сверху Снизу