У меня есть следующий сценарий, который перезапускается Бог когда я перезагружаю свой сервер (Ubuntu). Как я могу заставить бога запускаться как пользователь "рельсы"?
#!/bin/sh
### BEGIN INIT INFO
# Provides: god
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: God
### END INIT INFO
NAME=god
DESC=god
PID=/home/rails/xxx/shared/pids/god.pid
LOG=/home/rails/xxx/shared/log/god.log
set -e
# Make sure the binary and the config file are present before proceeding
test -x /usr/bin/god || exit 0
# Create this file and put in a variable called GOD_CONFIG, pointing to
# your God configuration file
test -f /etc/default/god && . /etc/default/god
[ $GOD_CONFIG ] || exit 0
. /lib/lsb/init-functions
RETVAL=0
case "$1" in
start)
echo -n "Starting $DESC: "
/bin/su rails -c '/usr/bin/god -c $GOD_CONFIG -P $PID -l $LOG'
RETVAL=$?
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
kill `cat $PID`
RETVAL=$?
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
kill `cat $PID`
/bin/su rails -c '/usr/bin/god -c $GOD_CONFIG -P $PID -l $LOG'
RETVAL=$?
echo "$NAME."
;;
status)
/bin/su rails -c '/usr/bin/god status'
RETVAL=$?
;;
*)
echo "Usage: god {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
Любая помощь с этим была бы потрясающей, так как я совсем неопытный игрок, когда дело касается серверов.
Команда sudo используется для запуска вещей от имени других пользователей, например:
sudo -u rails ls $someDir
Поэтому я думаю, что следующее должно работать (попробуйте и убедитесь):
sudo -u rails /usr/bin/god -c $GOD_CONFIG -P /var/run/god.pid -l /var/log/god.log
Кроме того, проверьте страницу руководства sudo, команда god зависит от некоторых установленных переменных среды ...
Обычно это выполняется в сценариях инициализации с su
:
su rails -c "/usr/bin/god -c $GOD_CONFIG -P /var/run/god.pid -l /var/log/god.log"
Я не тестировал это, поэтому у меня может быть что-то странное не так.
Кроме того, предполагая, что он до сих пор работал от имени root, убедитесь, что ваши файлы pid и log не принадлежат root и недоступны для пользовательских рельсов.
Проверьте разрешения на свой скрипт. Они должны быть доступны для чтения и исполнения.
Кроме того, в нескольких местах вашего скрипта у вас есть:
usr/bin/god ...
Вероятно, это должно быть:
/usr/bin/god ...