我有一个在用户帐户(基于 Plack)中运行的应用程序,并且需要一个初始化脚本。
它看起来就像“sudo $user start_server ...”一样简单。我刚刚使用 start-stop-daemon 编写了一个 LSB 脚本,它确实很笨拙且冗长。感觉这不是正确的方法。
经过一番搜索并查看示例日志后,我仍然不确定执行此操作的最佳方法是什么,并且我没有找到一个有凝聚力的指南。
现在我可以使用它:
start-stop-daemon --background --quiet --start --pidfile $PIDFILE \
--make-pidfile --chuid $DAEMONUSER \
--exec $DAEMON -- $DAEMON_OPTS
DAEMON 和 DAEMON_OPTS 为:
DAEMON="/home/mediamogul/perl5/perlbrew/perls/current/bin/start_server"
DAEMON_OPTS="--port $PORT -- starman --workers $WORKERS /home/mediamogul/MediaMogul/script/mediamogul.psgi"
然后,这需要我调整如何检测运行,因为它是一个 perl 脚本,所以 perl 显示为命令而不是“start_server”。
(我在该用户帐户上的 perlbrew 中运行它,因此它与系统 perl 完全分开,这就是路径指向用户目录中的 perl 的原因)
这真的是最好的方法吗?这对我来说似乎很笨重,但我不是管理员类型。
您可以使用--pid
starman 的选项让它在应用程序启动时写入 PID,如果您使用与给定 start-stop-daemon 相同的文件名,那么它会很好地工作。
例如,来自我的 init.d 脚本之一:
SITENAME=mysite
PORT=5000
DIR=/websites/mysite
SCRIPT=bin/app.pl
USER=davidp
PIDFILE=/var/run/site-$SITENAME.pid
案例“$1”
开始)
启动-停止-守护进程 --start --chuid $USER --chdir $DIR \
--pidfile=$PIDFILE \
--exec /usr/local/bin/starman -- -p $PORT $SCRIPT -D --pid $PIDFILE
;;
停止)
启动-停止-守护进程 --stop --pidfile $PIDFILE
;;
*)
echo "用法: $SCRIPTNAME {start|stop}" >&2
3号出口
;;
埃萨克
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)