【问题标题】:Sublime Text build system on Ubuntu: Cannot chain pkill command regardless of successUbuntu 上的 Sublime Text 构建系统:无论成功,都无法链接 pkill 命令
【发布时间】:2015-06-02 15:06:56
【问题描述】:

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

pkill -f "java.*MySketch"

然后再运行一次

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

但是在第一次构建过程中没有运行,所以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 脚本也不起作用。它在终端中工作。 在崇高它说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 进程。

【问题讨论】:

  • 例如,您可以使用“cmd”而不是“shell_cmd”并将其链接到带有多个指令、ifs、循环等的 shell 脚本 (.sh) 文件。{ "cmd": ["/path/script.sh"] }

标签: linux bash ubuntu sublimetext build-system


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多