【问题标题】:Wait for background process等待后台进程
【发布时间】:2016-08-23 18:56:03
【问题描述】:

我正在创建一个应等待两个进程完成然后执行一些逻辑的applescript。第一个是Application,很容易等待。

set program to "Applications/xyz.app"

repeat until (application program is not running)
    delay 1
end repeat

现在我的后台任务不起作用,因为它是直接调用的可执行文件而不是应用程序。如果它有助于这个过程是aria2。谁能告诉我这是如何工作的,或者为我指出正确的方向以找到答案?

【问题讨论】:

    标签: macos applescript


    【解决方案1】:

    尝试使用pgrep 来查找名为aria2 的进程的进程ID,如下所示:

    do shell script "/usr/bin/pgrep aria2"
    

    我没有aria2,所以我只是猜测它的进程名称 - 先在终端中尝试它是否有效:

    pgrep aria2
    

    如果没有运行,将不会有输出。

    要查看更完整的输出,请运行:

    ps -aef | grep -i aria
    

    如果你想循环检查它,你可以这样做:

    set ariarunning to 0
    repeat until ariarunning > 0
       try
          set ariarunning to do shell script "/usr/bin/pgrep aria"
       end try
       delay 1
    end repeat
    

    【讨论】:

    • 谢谢你的作品!如果您不介意后续问题:我如何比较返回码? repeat until ((do shell script "/usr/bin/pgrep aria2c") = "") 延迟到程序关闭,但随后返回脚本错误“命令以非零状态退出”
    猜你喜欢
    • 2014-11-08
    • 2011-03-25
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2020-07-05
    • 2016-08-31
    相关资源
    最近更新 更多