perl – 作为单独用户运行应用程序的最佳init脚本
我有一个在用户帐户(基于Plack)中运行的应用程序,并且需要一个init脚本.
它看起来像“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 它与你已经在做的非常接近,我承认它有点笨拙,被授予,但是它有效 – 让Starman写入PID文件意味着start-stop-daemon可以可靠地启动和放大停下来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |