Перейти к содержанию

3aB}{o3

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

    Никогда

Contact Methods

  • Website URL
    http://www.cs-krasnogorsk.ru

Profile Information

  • Location
    Россия

Достижения 3aB}{o3

  1. Ребят помогите, имеется 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 новичок, спасибо
×
×
  • Создать...