2

Я написал это просто запустить скрипт:

SESSION_NAME="session1"
COMMAND="python /opt/aaa/manage.py runserver 192.168.1.1:4300"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"
        echo "session1 started"
        ;;
    stop)
        echo "Stopping session1"
        screen -S session1 -X quit
        echo "."
        echo "session1 stopped"
        ;;
    restart)
        echo "Restarting session1"
        screen -S session1 -X quit
        echo "."
        screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"
        echo "session1 has restarted"
        ;;
    *)
        echo "Usage: /etc/init.d/session1 {start|stop|restart}"
        exit 1
        ;;
esac
exit 0

Но если я запускаю /etc/init.d/startscript.sh start, это не работает. Сеанс экрана не запускается. Не могли бы вы мне помочь? Спасибо за ответы.

4 ответа4

0

Я думаю, что проблема с вашей переменной $COMMAND . Имя команды должно быть исполняемым файлом python , остальное - аргументы. Но, если вы поставите его в кавычки, screen думает, что имя команды является целой строкой, и ищет исполняемый файл с этим именем.

Попробуй это:

COMMAND="/usr/bin/python /opt/aaa/manage.py runserver 192.168.1.1:4300"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" $COMMAND
        echo "$SESSION_NAME started"
        ;;
    ...

т.е. без кавычек, окружающих $COMMAND и без (ненужной) переменной $ARGUMENTS . Это должно работать.

0

Проблемы с сервисами являются пользовательскими и tty.

Альтернативный способ запуска экрана при загрузке - автоматический вход пользователя в систему и запуск экрана с предварительно настроенным набором окон и команд в ~/.screenrc.

Вернитесь к этому экрану при входе в систему.

0

Единственная причина, по которой я вижу, что ваш экран не запускается, из-за ошибки в команде python. Чтобы определить проблему, команда сценария может помочь вам. Он запишет вывод в файл журнала, который вы сможете прочитать.

Вот улучшенная версия скрипта с информацией, которую я обычно добавляю в свои скрипты:

#!/bin/sh
NAME=session1
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SESSION_NAME="session1"
COMMAND="python /opt/aaa/manage.py runserver 192.168.1.1:4300"
LOGPATH="/var/tmp/session1.log"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" script -a --flush -c "$COMMAND" $LOGPATH
        echo "session1 started"
        ;;
    stop)
        echo "Stopping session1"
        screen -S session1 -X quit
        echo "."
        echo "session1 stopped"
        ;;
    restart)
        echo "Restarting session1"
        screen -S session1 -X quit
        echo "."
        screen -dmS "$SESSION_NAME" script -a --flush -c "$COMMAND" $LOGPATH
        echo "session1 has restarted"
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 2
        ;;
esac
exit 0
0

Наконец, я использовал этот скрипт, но я удалил команду для нового окна - Как я могу автоматически запустить новое окно в том же сеансе экрана?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .