【问题标题】:Modifying Shell Script for Cygwin Usage修改 Cygwin 使用的 Shell 脚本
【发布时间】:2013-07-24 13:32:44
【问题描述】:

我正在修改一个 shell 脚本以在 Cygwin 中工作(路径等)。我面临的一个问题是这一行:

ps 斧头 | grep -v grep | grep $DB_JAVA_CLASS > /dev/null 2>&1

使用 ps 和 procps 尝试此操作,它似乎并没有通过 Java 类名定位该进程,即使我知道该进程正在通过 /cygdrive/c/windows/system32/javaw 的证据运行 从手动 ps ax/procps ax 显示。如果有多个正在运行,我不想检查 java 进程本身。

是否有一些等效的 Cygwin 方法可以用来获得相同的结果?基本上,脚本会检查进程是否已经在运行,如果没有,则生成进程。

感谢您提供的任何见解。

【问题讨论】:

    标签: cygwin ps procps


    【解决方案1】:

    我想你的 Java 进程是标准的 Windows 进程而不是 Cygwin 进程; 您需要添加 -W 标志来列出这些。还要小心使用-

    ps auxW    # won't work
    ps aux -W  # will probably do what you want
    

    另一种选择是

    ps -efW
    

    参见例如我编写的 psgrep 脚本来杀死延迟进程(例如 Microsoft OneNote)。

    【讨论】:

    • 感谢您的宝贵时间。虽然有用的信息,但它仍然没有使用 java 类名返回进程。我想我需要寻找一些替代方案。欢迎任何其他建议。
    • 你是对的 - 我应该验证一下!我记得以前看过一个完整的命令行,但是当我现在尝试时,我也没有列出任何参数。