Estoy tratando de crear un script init.d para mi servidor que debería iniciar / detener el servidor teamspeak y algunas aplicaciones node.js usando "pm2". Aquí está mi guión:
#! /bin/sh
### BEGIN INIT INFO
# Provides: my_service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts/stops all my services
# Description: starts/stops all my services
### END INIT INFO
echo "running script with argument: $1" >> /log.txt
case "$1" in
start)
/usr/local/bin/pm2 resurrect >> /log.txt 2>&1
/home/teamspeak/ts3server_startscript.sh start >> /log.txt 2>&1
;;
stop)
/usr/local/bin/pm2 dump >> /log.txt 2>&1
/usr/local/bin/pm2 delete all >> /log.txt 2>&1
/home/teamspeak/ts3server_startscript.sh stop >> /log.txt 2>&1
;;
esac
echo "done" >> /log.txt
Como puede ver, los scripts registran el stdout & stderr de cada comando en /log.txt.
Lo extraño es que cuando ejecuto /etc/init.d/my_service start/stop
manualmente, funciona muy bien. Pero cuando emito un reinicio, los comandos 3 pm2 fallan. Aquí está el registro que obtengo después de reiniciar la máquina:
running script with argument: stop
exec: 29: : Permission denied
exec: 29: : Permission denied
Stopping the TeamSpeak 3 serverdone
done
running script with argument: start
exec: 29: : Permission denied
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
done
¿Tienes alguna idea de lo que podría ser? ¿Está relacionado con pm2, o es un error en mi script?
Lo que no entiendo es, ¿por qué es diferente cuando el script se ejecuta automáticamente en el apagado / arranque desde que lo inicio manualmente usando el shell?
#! /bin/sh
o tienes#!/bin/sh
? El primer vistazo para SPACE slash bin slash sh ...