javascript - Grunt pid 文件和 Grunt-kill

标签 javascript node.js gruntjs pid

尝试使用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' ]
  },
}

当然,当我运行它时,它无法识别它。我明白了:

kill:serverScorm task fail

似乎这个难题的缺失部分是我无法访问 server-scorm.pid 或它的名称。

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

最佳答案

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

嗨@phillt grunt-kill 插件无法 native 确定任何进程的 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 和适应框架会给我一些作业。 :)

关于javascript - Grunt pid 文件和 Grunt-kill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981504/

相关文章:

javascript - 如何使用 Node.js 在 xml 中查找空元素?

node.js reqest.js/cheerio.js 返回空 json

javascript - Promise 的递归

express - 在 Express.js 项目中使用 Yeoman/Brunch/Grunt

javascript - 用 grunt 替换变量

javascript - grunt-angular-templates 将模板写入单独的文件中

javascript - 除了绑定(bind)之外,任何其他解决方案都可以解决 promise 中的上下文问题

javascript - d3-drag 库中 `constant.js` 的用途是什么?

用于填充数组的 javascript/jQuery 匿名函数

javascript - 如何在使用拆分后获取数组中的第一项