Screeps私人服务器配置init.d
问题描述:
我正在尝试为我的screeps私人服务器创建一个init.d脚本。我遇到了一些问题。Screeps私人服务器配置init.d
- 我想运行一个后台程序用户screeps不是root
screeps-daemon
- 我想,以确保它在正确的工作目录下运行。
使用initd-forever我产生如下:
#!/bin/bash
### BEGIN INIT INFO
# If you wish the Daemon to be lauched at boot/stopped at shutdown :
#
# On Debian-based distributions:
# INSTALL : update-rc.d scriptname defaults
# (UNINSTALL : update-rc.d -f scriptname remove)
#
# On RedHat-based distributions (CentOS, OpenSUSE...):
# INSTALL : chkconfig --level 35 scriptname on
# (UNINSTALL : chkconfig --level 35 scriptname off)
#
# chkconfig: 2345 90 60
# Provides: /usr/local/bin/screeps
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: forever running /usr/local/bin/screeps
# Description: /usr/local/bin/screeps
### END INIT INFO
#
# initd a node app
# Based on a script posted by https://gist.github.com/jinze at https://gist.github.com/3748766
#
if [ -e /lib/lsb/init-functions ]; then
# LSB source function library.
. /lib/lsb/init-functions
fi;
pidFile="/var/run/forever/screeps.pid"
logFile="/var/run/Screeps.log"
workingDir="/var/local/screeps"
command="start"
nodeApp="/usr/local/bin/screeps"
foreverApp="/usr/local/bin/forever"
start() {
echo "Starting $nodeApp"
# Notice that we change the PATH because on reboot
# the PATH does not include the path to node.
# Launching forever with a full path
# does not work unless we set the PATH.
PATH=/usr/local/bin:$PATH
export NODE_ENV=production
su - screeps-daemon -c \
`foreverApp start --workingDir $workingDir --pidFile $pidFile -l $logFile -a -d -c "$command" $nodeApp`
RETVAL=$?
}
restart() {
echo -n "Restarting $nodeApp"
$foreverApp restart $nodeApp
RETVAL=$?
}
stop() {
echo -n "Shutting down $nodeApp"
$foreverApp stop $nodeApp
RETVAL=$?
}
status() {
echo -n "Status $nodeApp"
$foreverApp list
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "Usage: {start|stop|status|restart}"
exit 1
;;
esac
exit $RETVAL
但我收到以下错误:
sudo /etc/init.d/screeps start [email protected]
Starting /usr/local/bin/screeps
su: unrecognized option '--minUptime'
Usage: su [options] [LOGIN]
Options:
-c, --command COMMAND pass COMMAND to the invoked shell
-h, --help display this help message and exit
-, -l, --login make the shell a login shell
-m, -p,
--preserve-environment do not reset environment variables, and
keep the same shell
-s, --shell SHELL use SHELL instead of the default in passwd
这可能stareing我的脸简单的东西,但我看不到它现在。
答
它看起来像你用于su的命令行引用反引号。这将导致shell执行命令:
foreverApp start --workingDir $workingDir --pidFile $pidFile -l $logFile -a -d -c "$command" $nodeApp
然后追加任何返回到后su命令行“苏 - screeps守护-C”。
很可能是运行foreverApp命令和它返回
尝试用单引号引用',而不是反引号`(其中“--minUptime”很可能产生这是)帮助消息的错误
sudo - screeps-daemon -c \
"$foreverApp start --workingDir $workingDir $nodeApp $command --password <my-password> --runners_cnt 4 --processors_cnt 4"
凡runners_cnt
和processors_cnt
应根据国内外众多处理器核心来设置要全身心地投入到T:
答
我通过更换你的执行脚本来修正这个问题他嘲笑服务器。
别忘了跑sudo update-rc.d <scriptname> defaults