【问题标题】:Grunt pid files and Grunt-killGrunt pid 文件和 Grunt-kill
【发布时间】:2017-12-12 09:14:38
【问题描述】:

尝试使用 grunt-kill 创建一个任务,该任务将杀死我的 server-scorm 任务,并最终杀死所有相关任务。说明非常简短,因为它假设我知道所有关于 PID 文件的信息(我不知道,不是开发人员的错误)并且Grunt Manual 对它们进行了 0 引用。

问题是我不知道如何正确引用 PID 文件路径以及 Grunt 使用什么命名方案。

我可以在运行以下命令时获取 ID:

ps aux | grep grunt 

但是当PID每次都改变时当然对我没有好处,所以我不能直接引用它。

说明说要把它放在配置中:

kill: {
  myService: {
    src: [ 'my-service.pid' ]
  },
  secondary: {
    pid: 'secondary.pid'
  }
}

这是一个如何使用它的示例...但是['my-service.pid']我不知道如何做到这一点。

就我而言,我要杀死的命令 grunt 任务的名称是 server-scorm,所以我假设它是:

kill: {
  serverScorm: {
    src: [ 'server-scorm.pid' ]
  },
}

当然,当我运行它时,它不会识别它。我明白了:

似乎这个难题的缺失部分是我无法访问 server-scorm.pid 或它所调用的任何内容。

如果您想知道为什么我不使用cntrl+c,那是因为团队正在使用一个名为括号的 IDE,它“很好地”提供了一个繁琐的界面,您只需单击一个按钮,它就会运行命令...正如您可能已经猜到的那样,没有地方可以输入这样的命令。

【问题讨论】:

  • 你可以尝试使用 grunt-shell 来运行类似的东西: ps aux | grep grunt > server-scorm.pid 和 grunt kill 依赖于此。

标签: javascript node.js gruntjs pid


【解决方案1】:

我正在从您在 GitHub 上的错误报告中复制我的答案。

嗨@phillt grunt-kill 插件本身不能确定任何进程的pid,因为没有pid,它怎么知道你想要哪个进程?每个应用程序“发现”它的方式可能不同,甚至可能运行多个进程。

本插件有两种方式判断pid:

  • 指定 pid 文件。这需要您尝试杀死的进程将其 pid 写入文件。这是 Unix 中守护进程的常见模式,尤其是当它们作为服务在后台运行时。方法是在启动时,将应该被杀死的主进程的 PID 写入一个已知位置的文件中,然后像grunt-kill 这样的工具可以读取该文件并知道要杀死哪个进程。例如,RedHat 上的 Apache Web 服务器通常将其 pid 文件写入/var/run/httpd.pid 之类的文件。我不熟悉 server-scorm,所以不能确定它是否使用 pid 文件。
  • 指定 PID 本身或返回 PID 的函数。如果你有办法以编程方式可靠地找到 PID,你可以将它写成你的 Gruntfile 中的一个函数,grunt-kill 会很高兴地执行它来发现 PID。您可能可以在 ps aux 周围放置一些过滤器来查找 pid。也许按进程名称和用户登录名过滤?

顺便说一句,我在电子学习领域工作,所以 server-scorm 和适应框架会给我一些功课。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多