Ubuntu上的Sublime Text构建系统:无论成功与否

时间:2015-06-02 15:06:57

标签: linux bash ubuntu sublimetext build-system

我试图先杀死一个正在运行的进程

pkill -f "java.*MySketch"

然后再次运行

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

然而,在第一次构建时,该过程未运行,因此pkill找不到任何内容。我希望构建系统跳过此错误,然后继续执行processing-java

Processing.sublime-构建

  "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进程。

1 个答案:

答案 0 :(得分:0)

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

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

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