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

2024-04-18

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

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


您可以使用--pidstarman 的选项让它在应用程序启动时写入 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(使用前将#替换为@)

作为单独用户运行应用程序的最佳初始化脚本 的相关文章

随机推荐

  • 在存在 PDF iframe 的情况下选择文本后,文本输入开始向后输入

    预期的行为是什么 用户应该始终以正确的方向输入 即使他们以这种方式进行文本选择 什么地方出了错 如果我通过从右向左拖动鼠标并以 PDF iframe 结尾来选择输入 文本区域的文本 那么如果我开始键入 字符会向后插入 视频示例 https
  • 异步 servlet 不异步运行

    我有一个 servlet 它接受请求并写入长响应 响应位于使用 Thread sleep 1000 模拟长时间运行操作的循环中 我试图在这里设置一个异步请求 如代码所示 但它不起作用 当我向 servlet 调用多个请求时 它们都是连续执行
  • 在 pandas 中的列元素旁边添加数值

    这是我问的问题的进一步部分here https stackoverflow com questions 51574485 match keywords in pandas column with another list of elemen
  • 使用 HTML 输入类型文件从网络摄像头捕获摄像机录制视频

    在我的公司 我的任务是建立一个网站 用户可以在其中录制视频 这将被发送到服务器 一些事情将被完成 用户最终会收到一封电子邮件 嵌入该视频的微型网站的链接 经过一番研究 我得出的结论是 至少目前这是不可能的 在 iPad 上使用 getUse
  • typescript 参数可以注释为 const 吗?

    如果我不希望函数作用域内的参数值发生变化 有什么方法可以用 Typescript 对其进行注释吗 我试过了 function walk const fileName string string 但这不起作用 现在没有办法做到 也可能做不到
  • 应用程序崩溃后套接字仍在侦听

    我在 Windows 2008x64 上使用我的 C 应用程序之一时遇到问题 同一应用程序在 Windows 2003x64 上运行得很好 崩溃后 甚至有时在定期关闭 重新启动周期后 使用端口 82 上的套接字时会出现问题 它需要接收命令
  • 计算字符串中的常见字符 Python

    该代码的输出仍然是 4 但是 输出应该是 3 存在集合交集 因为我相信这是答案的关键 答案是 4 而不是 3 的原因来自于 s1 中与 s2 匹配的 2 个 qs 和 1 个 r 的数量 s2 qsrqq s1 qqtrr counts1
  • 未选择值的 DropDownList

    我在编辑页面内使用 DropDownListFor 辅助方法 但没有运气让它选择我指定的值 我注意到一个类似的问题 https stackoverflow com questions 1916462 dropdownlistfor in e
  • 有没有办法在 Azure DevOps Pipelines YAML 中参数化/动态设置变量组名称?

    我有一个嵌套的 Azure DevOps YAML 管道 name Some Release Pipeline trigger none variables group DEV VARIABLE GROUP This is the envi
  • 从 PHP 脚本调用节点

    我正在尝试使用 PHP 脚本调用节点脚本exec output exec usr bin node home user nodescript js nodescript js 是 var Scraper require google ima
  • Mac OSX 捆绑包的图标

    我编译了一个名为 MyBundle bundle 的 Mac OSX 捆绑包 它用作另一个应用程序的插件 我希望捆绑包有一个独特的图标 因此我将 Info plist 文件设置为
  • AspectJ 是如何工作的?

    我正在尝试了解 Aspect 的工作原理 我有 C C 背景 但魔法永远不会发生 我知道你可以用注释一些函数 Aspect然后写下Aspect的实现等等 但是 新代码是如何 以及在 什么时间 生成的 假设我没有编辑器 我使用编译java类j
  • elasticsearch中@timestamp和timestamp字段的区别

    当我使用日志存储向弹性搜索记录一些请求时 它将 timestamp 字段作为时间 当我使用 NEST 记录这些请求并设置时间戳字段时 它会放置时间戳字段 当我使用 kibana 查看数据时 这两个字段具有单独的名称 他们之间有什么区别 ti
  • 使用“-prune”时,从“find”命令中省略“-print”

    我一直无法完全理解 find 命令的 prune 操作 但实际上 至少我的一些误解源于省略 print 表达的影响 从 查找 手册页 如果表达式除 prune 之外不包含任何操作 则对表达式为 true 的所有文件执行 print 我一直
  • 使用 Tkinter 将鼠标悬停在文本上时更改文本颜色?

    所以我在 Tkinter 的画布上有一堆文本 我想让它在鼠标悬停在文本上时文本颜色发生变化 对于我的生活 我不知道如何做到这一点 并且似乎没有很多关于 Tkinter 的信息 for city in Cities CityText Citi
  • 优化康威的“生命游戏”

    为了进行实验 我 很久以前 实施了康威的生命游戏 http en wikipedia org wiki Conway s Game of Life 而且我知道this https stackoverflow com questions 18
  • Tkinter 主窗口焦点

    我有以下代码 window Tk window lift window attributes topmost True 这段代码的工作原理是将我的 Tkinter 窗口显示在所有其他窗口之上 但它仍然只解决了一半的问题 虽然该窗口实际上显示
  • 将 lambda 函数应用于 dask 数据框

    我正在寻找申请lambda如果列中的标签小于一定百分比 则使用 dask 数据框的函数来更改列中的标签 我使用的方法适用于 pandas 数据框 但相同的代码不适用于 dask 数据框 代码如下 df pd DataFrame A ant
  • 将多个单元格添加到单行

    我对此很陌生 当我尝试将多个单元格添加到一行时 它说有不可读的内容 这是我所拥有的 SpreadsheetDocument ssDoc SpreadsheetDocument Create saveFile SpreadsheetDocum
  • 作为单独用户运行应用程序的最佳初始化脚本

    我有一个在用户帐户 基于 Plack 中运行的应用程序 并且需要一个初始化脚本 它看起来就像 sudo user start server 一样简单 我刚刚使用 start stop daemon 编写了一个 LSB 脚本 它确实很笨拙且冗