使用 Jekyll,如何从命令行停止分离的服务器进程?

With Jekyll, how do I stop a detached server process from the command line?

我正在尝试编写一个脚本,从命令行启动 Jekyll,执行另一个进程,然后停止它。

逻辑是这样的:

  1. 启动 jekyll 服务。
  2. 运行 调用 Prince 的进程从 HTML 文件构建 PDF。
  3. 停止 Jekyll 服务器。

我对命令行不是很有经验。我想我必须在 Jekyll 中使用 --detach 命令才能在预览服务器构建后继续 运行ning 脚本。但是如果我分离 Jekyll,停止服务器的唯一方法是杀死一个特定的 PID,但是 PID 号似乎是随机生成的。

有人对如何构建此脚本有任何提示吗?

如果你不知道 PID,你可以这样做:

kill $(ps aux | grep '[j]ekyll' | awk '{print }')

explanations here

在OSX中,你可以发出

killall jekyll

我把它放到了 g运行t-shell 任务中。剩下的问题是 kill 和 killall 似乎都没有 --quiet 设置。如果它 运行 没有 return 代码或消息,那么 shell:jekyllStop g运行t 任务可能是我默认的第一步。如果 jekyll 恰好不是 运行ning,则默认 stops/fails。您可以让 g运行t 继续使用 --force,但该参数将适用于所有任务。

shell: {
  jekyllStop: {
    command: "killall jekyll"
  }
},

运行 "shell:jekyllStop" (shell) 任务 未找到属于您的匹配进程 警告:命令失败:找不到属于您的匹配进程 使用 --force 继续。

由于警告而中止。

进程已完成,退出代码为 6

另一种停止 Jekyll 进程的方法(没有 PID)

pkill -f jekyll