繁体   English   中英

Grunt pid文件和​​Grunt-kill

[英]Grunt pid files and Grunt-kill

尝试使用grunt-kill创建一个任务,该任务将杀死我的server-scorm任务,并最终杀死所有相关任务。 这些说明非常简短,因为它假设我对PID文件一无所知(我不是,不是开发人员的错),而Grunt手册对它们的引用为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任务失败

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

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

我正在从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。 也许按进程名称和用户登录名过滤?

附带说明一下,我在电子学习领域工作,因此服务器限时抢购和Adapt框架将给我一些功课。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM