gpt4 book ai didi

perl - 作为单独用户运行应用程序的最佳初始化脚本

转载 作者:行者123 更新时间:2023-12-01 16:22:23 24 4
gpt4 key购买 nike

我有一个在用户帐户(基于 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 的原因)

这真的是最好的方法吗?这对我来说似乎很笨重,但我不是管理员类型。

最佳答案

您可以使用starman的--pid选项让它在应用程序启动时写入PID,如果您使用与给定start-stop-daemon相同的文件名,那么它会很好地工作.

例如,来 self 的 init.d 脚本之一:


SITENAME=mysite
PORT=5000
DIR=/websites/mysite
SCRIPT=bin/app.pl
USER=davidp<p></p>

<p>PIDFILE=/var/run/site-$SITENAME.pid</p>

<p>case "$1" in
start)
start-stop-daemon --start --chuid $USER --chdir $DIR \
--pidfile=$PIDFILE \
--exec /usr/local/bin/starman -- -p $PORT $SCRIPT -D --pid $PIDFILE
;;
stop)
start-stop-daemon --stop --pidfile $PIDFILE
;;
*)
echo "Usage: $SCRIPTNAME {start|stop}" >&2
exit 3
;;
esac
</p>

它非常接近你已经在做的事情,我承认它有点笨拙,但它确实有效 - 让 Starman 写入 PID 文件意味着 start-stop-daemon 可以可靠地启动和停止它。

关于perl - 作为单独用户运行应用程序的最佳初始化脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com