Вот мой скрипт в init.d (Debian Linux)

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/McMyAdmin

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting McMyAdmin "
screen -dmS Minecraft
sleep 2
screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`
;;
stop)
echo "Stopping McMyAdmin"
screen -S Minecraft -X stuff "\quit"`echo -ne '\015'`
;;
*)
echo "Usage: /etc/init.d/McMyAdmin {start|stop}"
exit 1
;;
esac

exit 0

Моя проблема в том, что при запуске сеанса экрана ничего не происходит. Если я набираю построчно, это работает нормально, но в сценарии ничего не работает. Он создает сеанс экрана, но никакие команды ему не отправляются. Что я делаю неправильно?

1 ответ1

1

Вы должны перейти в установочный каталог McMyAdmin, прежде чем вы сможете его запустить. Вы не можете запустить его скрипт start.sh из другого каталога.

Изменить:

screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`

в

cd /opt/McMyAdmin/
screen -S Minecraft -X stuff "sh start.sh"`echo -ne '\015'`

Также не очень хорошая идея поместить McMyAdmin в /opt / и запустить его как root. Вместо этого вы должны создать пользователя только для него и использовать либо строку @reboot в crontab этих пользователей, либо использовать su в своем начальном сценарии, чтобы изменить, какой пользователь используется для запуска сервера.

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