1. Рады видеть Вас на русскоязычном форуме TeamSpeak!

    У нас Вы можете скачать последнюю версию:

    Перед регистрацией рекомендуем ознакомиться

    с Правилами форума.

    Присоединяйтесь! Учите и обучайтесь!

    Скрыть объявление
  2. Новая группа "Новичок" на нашем форуме!

    Новые пользователи будут попадать в группу "Новичок".

    Это сделано для того чтобы "Новички" ознакомились с форумом, так как в большинстве случаев проблема с которой вы хотите обратиться уже обсуждалась.

    Перейти в тему обсуждения
    Быстрый переход в группу Пользователь
  3. VPS/VDS и дедикейт сервера в аренду с DDoS защитой

    • Низкий пинг
    • Действующий SLA
    • Рублевые цены без привязки к курсу валют

    Бесплатный тестовый период VPS-OpenVZ

    Попробовать

Разное Скрипт управления SinusBot (init.d) 2015-11-13

Скрипт управления запуском / стопом / рестартом / консолью / статусом SinusBot

  1. god007

    god007 Премиум Пользователь

    Регистрация:
    16 мар 2014
    Сообщения:
    24
    Симпатии:
    11
    Баллы:
    377
    Пользователь god007 разместил новый ресурс:

    Скрипт управления SinusBot - Скрипт управления запуском / стопом / рестартом / консолью / статусом SinusBot

    Узнать больше об этом ресурсе...
     
  2. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    после выполнения команды
    Код:
    update-rc.d sinusbot defaults
    пишет:
    Код:
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
            LANGUAGE = (unset),
            LC_ALL = "en_US.UTF-8",
            LANG = (unset)
        are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    insserv: warning: script 'wide-dhcpv6-client' missing LSB tags and overrides
    Подскажите пожалуйста как бороться с этим, буду очень благодарен!
    --- Сообщение объединено, 23 ноя 2016 ---
    Разобрался с en_US.UTF-8 и wide-dhcpv6-client

    После команды:
    Код:
    update-rc.d sinusbot defaults
    никаких ошибок не вылезает, но демон не стартует, пишет что нет такого файла sinusbot, хотя файл лежит в папке /etc/init.d/
     
    • Учись грамотности! Учись грамотности! x 1
  3. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    печально, что форум мёртвый! Неделю никто не может ответить!!!
     
    • Пост ни о чём Пост ни о чём x 1
  4. darkangel66

    darkangel66Icon TEAM-HOST.RU ATHP Премиум Пользователь

    Регистрация:
    12 июн 2012
    Сообщения:
    471
    Симпатии:
    201
    Баллы:
    672
    мало восклицательных знаков.
    стоит всё же различать "не может" и "не хочет" и "ни знает". Если такой проблемы ни у кого ранее не было то и опыта решения ни у кого нет. Вот и не пишет ни кто.

    форум живой, просто ни вам ни мне тут ни кто ни чем не обязан.
    Захотели ответили, не захотели не ответили.
     
    Последнее редактирование: 30 ноя 2016
    • Пост ни о чём Пост ни о чём x 2
    • Нравится Нравится x 1
  5. VJean

    VJean ǝноɯʚıqж Администратор Знаток

    Регистрация:
    26 июл 2014
    Сообщения:
    1.772
    Симпатии:
    389
    Баллы:
    775
    просто проблема в невнимательности и в незнании линуха. никто не видит смысла отвечать на риторический вопрос.
     
    • Нравится Нравится x 2
    • Пост ни о чём Пост ни о чём x 1
  6. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    замечательно:-) Я так понимаю что тут собрались все скудные профи или наоборот незнающие люди. А вообще вы так ответили, я был более лучшего мнения о данном форуме и о его обитателях!
    --- Сообщение объединено, 30 ноя 2016 ---
    Возникла следующая проблема, после занесения скрипта в автозагрузку debian 8 получилась следующая проблема, после reboot сервера ни один демон не стартует, все демоны приходится запускать ручками через консоль. Подскажите в чём может быть проблема (скрипт синуса также стартует через команду service sinusbot start) ? А то вообще неудобно перезапускать сервер и после вручную делать старт служб.
     
    • Не нравится Не нравится x 1
    • Пост ни о чём Пост ни о чём x 1
  7. VJean

    VJean ǝноɯʚıqж Администратор Знаток

    Регистрация:
    26 июл 2014
    Сообщения:
    1.772
    Симпатии:
    389
    Баллы:
    775
    @Tornado161rus О, гуру! Если бы вы знали, то дебиан 8 переведен на systemd. Там init.d как козе седло.
    И если НИ ОДИН демон не стартует, то поздравляю Вас с убиением системы.
     
  8. darkangel66

    darkangel66Icon TEAM-HOST.RU ATHP Премиум Пользователь

    Регистрация:
    12 июн 2012
    Сообщения:
    471
    Симпатии:
    201
    Баллы:
    672
    Торнадо, обозвав форум мертвым и оскорбив всех форумчан вы всё еще надеетесь на помощь? вы или очень молод или очень .....
    но не будем о этом.
     
    • Пост ни о чём Пост ни о чём x 2
    • Нравится Нравится x 1
  9. Gho$t

    Gho$t Знаток Премиум Пользователь

    Регистрация:
    5 сен 2011
    Сообщения:
    432
    Симпатии:
    151
    Баллы:
    616
    Гуглить systemd, берем данный скрипт, будем его использовать для запуска и остановки синуса.
    Создать в /etc/systemd/system файл sinus.service и вписать туда это
    Код:
    [Unit]
    Description=Sinus Bot
    After=syslog.target
    After=network.target
    
    [Service]
    Type=forking
    WorkingDirectory=/opt/sinus
    User=sinus
    Group=sinus
    
    OOMScoreAdjust=-100
    Restart=always
    
    ExecStart=/opt/sinus/start.sh start
    ExecStop=/opt/sinus/start.sh stop
    ExecReload=/opt/sinus/start.sh restart
    TimeoutSec=300
    
    [Install]
    WantedBy=multi-user.target
    

    пути до бота, скрипта, юзера который будет запускать синуса меняем на свои.

    Берем скрипт запуска синус бота и сохраняем там, где указано в sinus.service.
    Код:
    #! /bin/bash
    ### BEGIN INIT INFO
    # Provides: ts3bot
    # Required-Start: $local_fs $network
    # Required-Stop: $local_fs $network
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Description: Sinusbot
    ### END INIT INFO
    
    ##################################################################################
    # #
    # Usage: ./launch.sh {start|stop|status|restart|console|update|backup} #
    # - start: start the bot #
    # - stop: stop the bot #
    # - status: display the status of the bot (down or up) #
    # - restart: restart the bot #
    # - console: display the bot console #
    # - update: runs the bot updater (with start & stop)
    # - backup: archives your bot root directory
    # To exit the console without stopping the server, press CTRL + A then D. #
    # #
    ##################################################################################
    
    SCREEN_NAME="sinusbot"
    USER="sinus"
    DIR_ROOT="/opt/sinus/"
    DIR_BACKUP="/opt/sinus/backup/"
    BOT_RUNCMD="./sinusbot"
    BOT_UPDATE_ARG=" -update"
    SCREEN_IGNORE_TTY="N" # Y = Ignore the tty, you can access the bot screen as root (i not recommend it) root should be disabled :) | N = disabled
    
    # No edits necessary beyond this line
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    if [ ! -x `which screen` ]; then echo "ERROR: You need screen for this script (try apt-get install screen)"; exit 1; fi
    if [ ! -x `which tar` ]; then echo "WARNING: You need tar for the Backup Function (try apt-get install tar)";  fi
    
    function start {
        if [ ! -d $DIR_ROOT ]; then echo "ERROR: $DIR_ROOT is not a directory"; exit 1; fi
        if status; then echo "$SCREEN_NAME is already running"; exit 1; fi
    
        # Start bot
        if [ `whoami` = root ]
        then
            su - $USER -c "cd $DIR_ROOT ; screen -AmdS $SCREEN_NAME $BOT_RUNCMD"
        else
            cd $DIR_ROOT
            screen -AmdS $SCREEN_NAME $BOT_RUNCMD
        fi
    }
    
    function backup {
    
        DATE=$(date +%Y-%m-%d)
      
        if [ `whoami` = root ]
        then
            su - $USER -c "cd $DIR_ROOT ; tar -cjpf $DIR_BACKUP/sinusbot-$DATE.tar.bz2 $DIR_ROOT"
        else
            cd $DIR_ROOT
            tar -cjpf $DIR_BACKUP/sinusbot-$DATE.tar.bz2 $DIR_ROOT
        fi
    }
    function update {
        if [ `whoami` = root ]
        then
            su - $USER -c "cd $DIR_ROOT ; $BOT_RUNCMD$BOT_UPDATE_ARG"
        else
            cd $DIR_ROOT
            $BOT_RUNCMD$BOT_UPDATE_ARG
        fi
    }
    
    function stop {
        if ! status; then echo "$SCREEN_NAME could not be found. Probably not running."; exit 1; fi
    
        if [ `whoami` = root ]
        then
            su - $USER -c "screen -S $SCREEN_NAME -X stuff '\003'"
        else
            screen -S $SCREEN_NAME -X stuff '\003'
        fi
    }
    
    function status {
        if [ `whoami` = root ]
        then
            su - $USER -c "screen -ls" | grep [.]$SCREEN_NAME[[:space:]] > /dev/null
        else
            screen -ls | grep [.]$SCREEN_NAME[[:space:]] > /dev/null
        fi
    }
    
    function console {
        if ! status; then echo "$SCREEN_NAME could not be found. Probably not running."; exit 1; fi
    
        if [ `whoami` = root ]
        then
          
            if [ $SCREEN_IGNORE_TTY == 'Y' ]
            then
            su - $USER -c "script -q -c 'screen -x $SCREEN_NAME' /dev/null"
            else
            su - $USER -c "screen -x $SCREEN_NAME"
            fi
        else
            screen -x $SCREEN_NAME
        fi
    }
    
    function usage {
        echo "Usage: $0 {start|stop|status|restart|console}"
        echo "On console, press CTRL+A then D to stop the screen without stopping the server."
    }
    
    case "$1" in
    
    start)
        echo "Using following data:"
        echo "USER: $USER"
        echo "DIR ROOT: $DIR_ROOT"
        echo "BOT RUN CMD: $BOT_RUNCMD"
        echo ""
        sleep 2
        echo "Starting $SCREEN_NAME..."
        start
        sleep 2
        echo "$SCREEN_NAME started successfully"
    ;;
    
    stop)
        echo "Stopping $SCREEN_NAME..."
        stop
        sleep 2
        echo "$SCREEN_NAME stopped successfully"
    ;;
    
    restart)
        echo "Restarting $SCREEN_NAME..."
        status && stop
        sleep 5
        start
        sleep 2
        echo "$SCREEN_NAME restarted successfully"
    ;;
    
    status)
        if status
        then echo "$SCREEN_NAME is UP"
        else echo "$SCREEN_NAME is DOWN"
        fi
    ;;
    
    console)
        echo "Open console on $SCREEN_NAME..."
        console
    ;;
    
    update)
        if status
        then stop && sleep 5 && update
        else update
        fi
      
    ;;
    
    backup)
    
        if [ -d "$DIR_BACKUP" ]
        then
                if status
                then stop && sleep 5 && backup
                else backup
                fi
        else echo "BACKUP DIRECTORY NOT EXISTS. EXIT!"; exit 1;
        fi
      
    ;;
    
    *)
        usage
        exit 1
    ;;
    
    esac
    
    exit 0
    
    И все. Выполняем systemctl enable sinus.service и наш скрипт systemd запомнит.
    systemctl start sinus.service - Запускаем синус бота
    systemctl stop sinus.service - Останавливаем бота и systemd не будет пытаться его перезапустить
    systemctl -l status sinus.service - Смотрит статус сервиса, если будут ошибки там все будет написано
    ss+(2016-12-01+at+09.40.10).png
    Основной процесс это screen, но не суть, если упадет sinusbot, screen тоже упадет и systemd его перезапустит. Но если упадет клиент тс, придется запустить его из веб морды синуса =)
    Перед тем как ковырять синус бота, например, надо его переместить или установить нового, надо выключить его в systemd иначе сервис будет пытаться его запустить.
    Вот и все, гуру поправить если есть косяки, дополнить советом. Источник, гуглопоиск, хабр, и наш форум =)
     
    • Нравится Нравится x 1
  10. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    После ввода команды
    Код:
    systemctl enable sinus.service
    
    Получаю такое:
    Код:
    -bash: systemctl: command not found
     
  11. Gho$t

    Gho$t Знаток Премиум Пользователь

    Регистрация:
    5 сен 2011
    Сообщения:
    432
    Симпатии:
    151
    Баллы:
    616
    Покажите вывод команды: cat /etc/*version*
     
  12. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    Код:
    8.6
    cat: /etc/subversion: Is a directory
    Установил пакет systemd с зависимостями. Добавил в автозагрузку сервис, после перезагрузки sinusbot не стартует автоматически, а команда:
    Код:
    systemctl start sinusbot.service
    
    выдаёт такой результат:
    Код:
    Failed to get D-Bus connection: Unknown error -1
    Сейчас пытаюсь найти решение данной проблемы.
     
    Последнее редактирование: 1 дек 2016
  13. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    Gho$t, у вас нет советов по решению данной проблемы?
     
  14. Gho$t

    Gho$t Знаток Премиум Пользователь

    Регистрация:
    5 сен 2011
    Сообщения:
    432
    Симпатии:
    151
    Баллы:
    616
    ps aux | grep dbus что говорит?
     
  15. Tornado161rus

    Tornado161rus Пользователь

    Регистрация:
    12 окт 2014
    Сообщения:
    21
    Симпатии:
    1
    Баллы:
    225
    Код:
    message+  1503  0.0  0.1  42244  1420 ?        Ss    2016   0:01 /usr/bin/dbus-daemon --system
    root      6712  0.0  0.0  12668  1000 pts/3    R+   19:52   0:00 grep dbus
    
     
Загрузка...