Grunt pid文件和​​Grunt-kill

时间:2017-07-08 00:54:48

标签: 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,而且很好地使用#34;"提供了一个grunt界面,您只需单击一个按钮即可运行命令......您可能已经猜到了,没有地方可以输入这样的命令。

1 个答案:

答案 0 :(得分: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。可能按进程名称和用户登录名进行过滤?

另一方面,我在电子学习领域工作,因此服务器规范和适应框架将给我一些功课。 :)