Iniciando o programa na inicialização com tela

Iniciando o programa na inicialização com tela

Aqui está meu script em 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

Meu problema é que ao iniciar a sessão de tela nada acontece. Se eu digitar linha por linha funciona bem, mas no script nada funciona. Ele cria a sessão de tela, mas nenhum comando é enviado a ela. O que estou fazendo de errado?

Responder1

Você precisa ir para o diretório de instalação do McMyAdmin antes de executá-lo. Você não pode executar o script start.sh de outro diretório.

Mudar:

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

para

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

Além disso, não é uma idéia brilhante colocar o McMyAdmin em /opt/ e executá-lo como root. Em vez disso, você deve criar um usuário apenas para ele e usar uma linha @reboot no crontab do usuário ou usar su em seu script de inicialização para alterar qual usuário é usado para executar o servidor.

informação relacionada