Ubuntu 上的 Sublime Text 构建系统:无论成功与否,都无法链接 pkill 命令

Sublime Text build system on Ubuntu: Cannot chain pkill command regardless of success

我试图先杀死一个 运行ning 进程

pkill -f "java.*MySketch"

然后运行再

processing-java --sketch="~/MySketch" --output="~/MySketch/build-tmp" --run --force

然而,在第一次构建时,过程不是 运行ning,所以 pkill 什么也没找到。我希望构建系统跳过此错误并继续执行 processing-java.

Processing.sublime-build

  "linux": {
    // Close old sketch on build
    "shell_cmd": "pkill -f \"java.*$file_base_name\" ; processing-java --sketch=\"$file_path\" --output=$file_path/build-tmp --run --force"
  },

我试过使用 ; 并在 pkill 命令末尾附加 || true。也试过 pgrep -f "java.*MySketch" | xargs kill > /dev/null 2>&1 但它仍然无法在 Sublime Text 中工作。将所有内容移动到 build.sh 脚本也不起作用。它在终端中工作。 在 Sublime 中它说 Finished in 0.3s with exit code -15。所以我想终止信号(SIGTERM)不是找不到进程而什么都不做,而是结束了我的整个shell_cmd?! SIGKILL (pkill -9 -f ...) 也是。

我唯一设法在 Sublime Text 中工作的是一揽子案例,它杀死了所有 java 个进程,pkill java ; processing-java bla bla bla

谢谢!

更新: pkill 首先自杀,因为我的正则表达式模式不够智能,无法仅匹配真实的 java 进程。

问题是这个构建系统首先杀死了自己,因为它自己的命令行匹配 java.*MySketch

解决方法:\"java.*$file_base_name\"替换为\"java.*$file_path\$\"

详细信息: 查看了我要终止的进程的命令行,发现它以 --sketch-path=~/Sketchbook/MySketch 结尾,而构建系统的命令行以 [=14 结尾=].使用 (blabla)$ 正则表达式来匹配字符串的结尾。由于 Sublime Build 系统,不得不带着极端的偏见逃避它... \$.