Habilis Опубликовано 27 февраля, 2018 Жалоба Поделиться Опубликовано 27 февраля, 2018 (изменено) Даров пачаны, Хабиля допилил стартовый скрипт под Линукс на Герке Скрипт теперь проверяет статус серверов по .пид файлу и может выполнять активное логгирование Хабиля кароч школьник и не силен в Кодинге, если кто круче кодит исправьде ошибки (если найдете) можете сравнить с оригиналом https://github.com/HerculesWS/Hercules/blob/master/athena-start вот в этом Вэб сервисе https://www.diffchecker.com/ и посматреть чего Хабиля наменял в скрипте. вот сам скрипт #!/bin/sh # athena starting script by rowla # modified by shazeya@syafi.com (NL101541) # even more modified by Habilis ################################################################################### # Note from Habilis ################################################################################### # Added new options and optional arguments # athena-start { start | stop | restart | status } # Can now check status of your servers (Running/ not running) # It also performs check if server is already running, # before starting server. # This code can perform logging of your servers # if you use -l # The logs will be [yyyy-mm-dd_H-M-S]_[SERVER NAME].log # under the log/ folder of your emulator. # The date and time in the log file name is the date and time of the server start. ################################################################################### PROGRAM=$0 ARG=$1 ISFORCE=0 ISLOG=0 PATH=./:$PATH # Where logs per server will be stored LOG_DIR="./log" L_SRV=login-server C_SRV=char-server M_SRV=map-server print_start() { # more << EOF echo "Athena Starting..." echo " (c) 2003 Athena Project" echo " modified by shazeya@syafi.com" echo "" #echo "Debug informations will appear," #echo "since this is a test release." #echo "" echo "checking..." #EOF } # Will return the server running status, based on the .pid file. # As accurate, as .pid file check could be... get_status(){ PIDFILE=.$1.pid if [ -e ${PIDFILE} ]; then ISRUN=$(ps ax | grep $(cat ${PIDFILE}) | grep $1) PSRUN=$(echo "$ISRUN" | awk '{ print $1 }') fi } # This will start servers With or without logging # Map, Char, Login server log files will appear under /log folder # ex : 2018-02-02_16-05-09_map-server.log # Date and time, when server started start_serv(){ if [ $2 -eq 1 ]; then LOGRUN="$LOG_DIR/`date +"%Y-%m-%d_%H-%M-%S"`_$1.log" FIFO="$1_fifo" if [ -e ./${FIFO} ]; then rm "$FIFO"; fi mkfifo "$FIFO"; tee "$LOGRUN" < "$FIFO" & "./$1" > "$FIFO" 2>&1 & PID=$! echo "$PID" > .$1.pid else ./$1& echo "$!" > .$1.pid fi } check_files() { for i in ${L_SRV} ${C_SRV} ${M_SRV} do if [ ! -f ./$i ]; then echo "$i does not exist, or can't run." echo "Stop. Check your compile." exit 1; fi done # more << EOF echo "Check complete." echo "Looks good, a nice Athena!" #EOF } # Additional params check for logging or a force start/restart while :; do case $2 in -l|--log) ISLOG=1 ;; -f|--force) ISFORCE=1 ;; *) break esac shift done case $ARG in 'start') print_start check_files if [ $ISLOG -eq 1 ]; then if [ ! -d "$LOG_DIR" ]; then mkdir -p $LOG_DIR; fi echo "Logging is enabled in $LOG_DIR" fi echo "Now Started Athena." for i in ${L_SRV} ${C_SRV} ${M_SRV} do if [ $ISFORCE -eq 1 ]; then start_serv $i $ISLOG else get_status $i if [ -z ${PSRUN} ]; then start_serv $i $ISLOG else echo "Cannot start '${i}', because it is already running p${PSRUN}" fi fi done ;; 'status') for i in ${L_SRV} ${C_SRV} ${M_SRV} do get_status ${i} if [ ${PSRUN} ]; then echo "'${i}' is running p${PSRUN}"; else echo "'${i}' seems to be down"; fi done ;; 'stop') for i in ${L_SRV} ${C_SRV} ${M_SRV} do PIDFILE=.${i}.pid if [ -e ./${PIDFILE} ]; then kill $(cat ${PIDFILE}) if [ $ISFORCE -eq 0 ]; then while true; do get_status ${i} if [ ${PSRUN} ]; then echo "'${i}' is running p${PSRUN} waiting for the process to end"; sleep 2; else break fi done fi rm ${PIDFILE} fi done ;; 'restart') if [ $ISFORCE -eq 1 ]; then FORCE="-f"; else FORCE=""; fi if [ $ISLOG -eq 1 ]; then LOGGING="-l"; else LOGGING=""; fi $PROGRAM stop "$LOGGING" "$FORCE" $PROGRAM start "$LOGGING" "$FORCE" ;; *) echo "Usage: athena-start { start | stop | restart | status }" echo "You can force { start | stop | restart } by adding -f" echo "To enable logging: './athena-start[start | restart] -l'" echo "-l will write all terminal output into a file" echo "log/[yyyy-mm-dd_H-M-S]_[SERVER NAME].log" ;; esac Подробнее у хабили в блоге (англ) https://habilisbest.com/hercules-start-script-improvement Записка от Хабили : ВНИМАНИЕ, это кустарная модификация, Саппорт и Девелоперы Герка могут быть не в силах вам помочь, если что. Изменено 27 февраля, 2018 пользователем Habilis Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения