1

Я пытаюсь создать сценарий init.d для моего сервера, который должен запускать / останавливать сервер teampeak и некоторые приложения node.js, используя "pm2". Вот мой сценарий:

#! /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

Как видите, сценарии записывают stdout & stderr каждой команды в /log.txt.

Странно то, что когда я запускаю /etc/init.d/my_service start/stop вручную, это прекрасно работает. Но когда я запускаю перезагрузку, команды 3 pm2 терпят неудачу. Вот журнал, который я получаю после перезагрузки машины:

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

У вас есть идеи, что это может быть? Это связано с pm2, или это ошибка в моем скрипте?

Чего я не понимаю, так это того, почему скрипт автоматически запускается при включении / выключении при запуске вручную с помощью оболочки.

1 ответ1

1

Похоже, ваш звонок на pm2 не имеет достаточных разрешений. Попробуйте запустить его с помощью sudo, если вы еще не видели, работает ли он.

Кажется, сама ошибка происходит из pm2, потому что в вашем скрипте нет строки 29.

Обычно при запуске init.d запускается с другим пользователем с совершенно другим набором разрешений.

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