Запуск программы при загрузке с экрана

Запуск программы при загрузке с экрана

Вот мой скрипт в 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

Вам необходимо перейти в установочный каталог 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 в вашем initscript, чтобы изменить пользователя, используемого для запуска сервера.

Связанный контент