我有以下重新启动的脚本上帝当我重启我的服务器(Ubuntu)时。我怎样才能让 god 以用户“rails”的身份启动?
#!/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
任何帮助都将非常感谢,因为在服务器方面我完全是新手。
答案1
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 命令依赖于正在设置的某些环境变量......
答案2
检查脚本的权限。它们应该是所有人都可读和可执行的。
另外,在脚本的几个地方,您有:
usr/bin/god ...
可能应该是:
/usr/bin/god ...
答案3
这通常在初始化脚本中通过以下方式实现su
:
su rails -c "/usr/bin/god -c $GOD_CONFIG -P /var/run/god.pid -l /var/log/god.log"
我还没有测试过,所以可能遇到了一些奇怪的错误。
此外,假设它到目前为止一直以 root 身份运行,请确保您的 pid 和日志文件不属于 root 所有,并且用户 rails 无法访问。