3aB}{o3 Опубликовано 22 августа, 2012 Жалоба Опубликовано 22 августа, 2012 Ребят помогите, имеется vps сервер OpenVZ, CentOS Linux 6.2 на нем стоит два игровых сервера (стояло, теперь только один,так как второй не запускается) тут мне как то в голову взбрело обновить движок сервера, этого сделать не получилось а вот накосячил конкретно в папке пользователя удалось, после чего решил удалить пользователя и его домашний каталог командой userdel -r meat, после какого-то времени решил поставить сервер снова, поставил, при попытки запуска сервера при помощи скрипта : #!/bin/bash# authors: Puma http://c-s.net.ua# version: 1.2#. /lib/lsb/init-functions###################################################### Configuration#####################################################server_name="Meat" #Название сервераscreen_name="meat" #Название screen-сессииuse_user="meat" #Имя юзера от которого запускается серверpath="/home/meat" #Путь до ROOT-директории сервера (без /в конце)hlds_ip="127.0.0.1" #IP сервера ,не ставить 0.0.0.0hlds_port="27016" #Порт сервераhlds_players="21" #Максимальное количество игроков на сервереhlds_map="de_dust2_2x2" #Имя первоначальной карты при запускеhlds_options="-sys_ticrate 10000 -pingboost 1" #Дополнительные параметры запускаusecore="0,1"priority="0" #Приоритет для сервера (-20 - Высокий ;20 - Низкий)hlds_pid="${screen_name}.pid" #Имя pid файла сервераclear_logs="0" # очишать лог файлы при запуске сервера через скрипт?clear_cache="0" # очишать кэши системы перед запуском сервера? # работает только под рутомchecker_cmd="/bin/qstat" #Команда пакета qStat отвечающего за проверку сервера###################################################### End of configuration#####################################################if [ ! -x $path/hlds_run ]; then printf "${title}${txtred} Set permissions 777 for hlds_run\n" chmod -R 777 $pathfiif [ $use_user == "meat" ]; then start1=""else start1="sudo -u ${use_user}"fitxtwht='\e[0;37m' # Whitetxtgrn='\e[0;32m' # Greentxtylw='\e[0;33m' # Yellowtxtred='\e[0;31m' # Redtitle="${txtwht}[${txtgrn}${hlds_ip}:${hlds_port}${txtwht}]"# check screen pid: ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'# check hlds pid: ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'start() { if [ "`ps -ef | grep SCREEN | grep $screen_name | grep $hlds_ip | grep $hlds_port | grep -v grep | wc -l`" -gt 0 ]; then if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep $hlds_ip | grep $hlds_port | grep -v grep | wc -l`" -gt 0 ]; then printf "${title} Server ${server_name} already started\n" exit 1 fi fi cd ${path} if [ ${clear_logs} == 1 ]; then ${start1} rm -f ${path}/debug.log ${start1} rm -f ${path}/cstrike/qconsole.log ${start1} rm -fr ${path}/cstrike/logs/*.log ${start1} rm -fr ${path}/cstrike/addons/amxmodx/logs/*.log printf "${title} Server logs cleared\n" fi if [ ${clear_cache} == 1 ] && [ ${use_user} == "meat" ]; then echo 3 > /proc/sys/vm/drop_caches printf "${title} Cache && buffers cleared\n" fi printf "${title} Starting ${server_name}\n" /usr/bin/screen -AmdS ${screen_name} ${start1} ./hlds_run -game cstrike +ip ${hlds_ip} +port ${hlds_port} +map ${hlds_map} +maxplayers ${hlds_players} ${hlds_options} -pidfile ${hlds_pid} sleep 3 ${start1} taskset -pc ${usecore} `cat ${path}/${hlds_pid}` > /dev/null ${start1} renice -n ${priority} -p `cat ${path}/${hlds_pid}` > /dev/null if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then printf "${title} Server successfully started! \n" else printf "${title}${txtred} Server crashed on start \n" fi}kill_process() { if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ]; then printf "${title} Kill: `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep`\n" ${start1} kill -9 "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" ${start1} rm -f ${path}/${hlds_pid} else printf "${title}${txtylw} Cannot kill hlds process of ${server_name} server\n" fi}stop() { if [ "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}' | wc -l`" -eq 1 ]; then /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name} -p 0 -X eval "stuff "quit"" /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name} -p 0 -X eval "stuff "$(printf \\r)"" sleep 1 ${start1} rm -rf ${path}/${hlds_pid} if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ]; then printf "${title}${txtred} Server not stopped!\n" else printf "${title} Server has been stopped\n" fi else printf "${title}${txtylw} Cannot stop server ${server_name}, screen session not found!\n" fi}status() { printf "${title} Get status of server ${server_name}\n" ${start1} ${checker_cmd} -retry 3 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep ${hlds_ip} exit 1}console() { if [ "`ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | wc -l`" -gt 0 ] && [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat ${path}/${hlds_pid}`" ]; then printf "${title} Connecting to ${server_name} server console\n" printf "${title}${txtylw} For exit from console press Ctrl+A,D\n" printf "${title}${txtylw} Don't press Ctrl+C\n" sleep 1 /usr/bin/screen -wipe > /dev/null /usr/bin/screen -dr `ps -ef | grep SCREEN | grep ${screen_name} | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`.${screen_name} else printf "${title}${txtred} Cannot connect to ${server_name} server console, server not started!\n" fi}checker() { time=`date +%X` date=`date +%D` if [ -f ${checker_cmd} ]; then if [ ! -x ${checker_cmd} ]; then printf "${title}${txtred} Check run privileges of ${checker_cmd}\n" exit 1 fi else printf "${title}${txtred} Check qstat/quakestat binar\n" fi checknoresp=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep response` if [ -n "${checknoresp}" ]; then printf "${title} ${server_name} server is: ${txtred}[NO RESPONSE]\n" printf "[${time} - ${date}] *[NO RESPONSE]* ${checknoresp}\n" >> $path/checker.log kill_process sleep 1 start sleep 1 printf "StartUP ${title}:" >> ${path}/checker.log if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then printf " *[OK]* \n" >> ${path}/checker.log else printf " *[FAILED]* \n" >> ${path}/checker.log fi exit 1 fi checkdown=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep DOWN` if [ -n "${checkdown}" ]; then printf "${title} ${server_name} server is: ${txtred}[DOWN]\n" printf "[{$time} - ${date}] *[DOWN]* ${checkdown}\n" >> ${path}/checker.log start sleep 1 printf "StartUP ${title}:" >> ${path}/checker.log if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then printf " *[OK]* \n" >> ${path}/checker.log else printf " *[FAILED]* \n" >> ${path}/checker.log fi exit 1 fi checkup=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep cstrike` if [ -n "${checkup}" ]; then printf "${title} ${server_name} server is: ${txtgrn}[OK]\n" printf "[${time} - ${date}] *[OK]* ${checkup}\n" >> ${path}/checker.log fi if [ "`ps -e -o pid,cpuid,nice,cmd | grep hlds_ | grep -v SCREEN | grep -v grep | grep -v sh | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | awk '{print $3}'`" != ${priority} ]; then if [ "`ps -ef | grep hlds_ | grep -v hlds_run | grep ${hlds_ip} | grep ${hlds_port} | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then printf "${title}${txtylw} ${server_name} server priority is changed because server is crashed\n" ${start1} taskset -pc ${usecore} "`cat ${path}/${hlds_pid}`" > /dev/null ${start1} renice -n ${priority} -p "`cat ${path}/${hlds_pid}`" > /dev/null else printf "${title}${txtylw} ${server_name} server priority cant be restore because not found pidfile!\n" fi else printf "${title} ${server_name} server priority is good!\n" fi}case "$1" in start) start ;; stop) stop ;; restart) stop kill_process sleep 2 start ;; status) status ;; console) console ;; checker) checker ;; *) printf "${title} How to use: ${txtgrn}$0 {start|stop|restart|status|console|checker}${txtwht}\n" exit 1esac на что получаю ответ : Цитата: [ meat@127.0.0.1 ~]$ ./h.sh start [127.0.0.1:27016] Starting Meat You are not the owner of /var/run/screen/S-meat. cat: /home/meat/meat.pid: No such file or directory Sorry, user meat is not allowed to execute '/bin/taskset -pc 0,1' as meat on 127.0.0.1. cat: /home/meat/meat.pid: No such file or directory Sorry, user meat is not allowed to execute '/usr/bin/renice -n 0 -p' as meat on 127.0.0.1. cat: /home/meat/meat.pid: No such file or directory сервер не запускается, честно не могу понять в чем дело, в etc/sudoers прописано следующие : ## Allow root to run any commands anywhere root ALL=(ALL) ALLmeat ALL=NOPASSWD: /usr/bin/renicemeat ALL=NOPASSWD: /bin/tasksethlds ALL=NOPASSWD: /usr/bin/renicehlds ALL=NOPASSWD: /bin/taskset до удаление пользователя meat и его каталога с файлами сервера, данный скрипт работал отлично и проблем не было, после создания по новой пользователя meat и соответственно установки сервера начался данный геморрой, до удаления пользователя meat его ID был 502, после удаления и нового создания стал ID 501, может в этом загвоздка ? прошу вашей помощи в решение проблемы, так как в Linux новичок, спасибо Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.