Iniciando programa en arranque con pantalla

0

Aquí está mi script en 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

Mi problema es que al comenzar la sesión de pantalla, no pasa nada. Si escribo línea por línea funciona bien, pero en el script nada funciona. Crea la sesión de pantalla pero no se le envían comandos. ¿Qué estoy haciendo mal?

Adam Schiavone
fuente

Respuestas:

1

Tiene que cd al directorio de instalación de McMyAdmin antes de poder ejecutarlo. No puede ejecutar su script start.sh desde otro directorio.

Cambio:

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

a

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

Tampoco es una idea brillante poner McMyAdmin en / opt / y ejecutarlo como root. En su lugar, debe crear un usuario solo para él y usar una línea @reboot en ese crontab de usuarios, o usar su en su initscript para cambiar qué usuario se usa para ejecutar el servidor.

PhonicUK
fuente
Eso parece no hacerlo. Es lo más raro. Parece que no puedo enviar un comando a la pantalla dentro del script. No puedo enviar nada. Esto funcionaría bien fuera del guión.
Adam Schiavone