我正试图为我的screeps私有服务器创建一个init.d脚本。我对几件事有意见。
screeps-daemon运行screeps。使用永不停息,我生成了以下内容:
#!/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 jcota@ubuntu
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这可能是很简单的事情,在我面前,但我现在看不到它。
发布于 2016-11-30 17:20:48
看起来,您为su使用的命令行在后面引用。这将导致shell执行以下命令:
foreverApp start --workingDir $workingDir --pidFile $pidFile -l $logFile -a -d -c "$command" $nodeApp然后将任何返回到su命令行的内容附加到"su - -c“之后。
很可能运行该foreverApp命令时出错,并且它正在返回帮助消息(这可能是生成"--minUptime“的地方)。
试着用单引号来引用‘而不是背勾’。
发布于 2017-12-03 20:35:34
我将您的执行脚本替换为:
sudo - screeps-daemon -c \
"$foreverApp start --workingDir $workingDir $nodeApp $command --password <my-password> --runners_cnt 4 --processors_cnt 4"在哪里应该设置runners_cnt和processors_cnt,这取决于家里的许多处理器内核,您想要将它们专用于screeps服务器。
别忘了运行sudo update-rc.d <scriptname> defaults
https://stackoverflow.com/questions/40872194
复制相似问题