【问题标题】:How to run multiple shell scripts from applescript in background如何在后台从applescript运行多个shell脚本
【发布时间】:2016-12-03 03:44:39
【问题描述】:

我正在从苹果脚本启动一个 jar 应用程序。

do shell script quoted form of jvmpath & " -jar -XstartOnFirstThread -Dapple.awt.UIElement=true -Dfile.encoding=UTF8 " & quoted form of jarpath & " " & quoted form of parameters

脚本一直运行,直到我退出我的 jar 应用程序。

但我需要启动另一个应用程序表单 shell 脚本。

由于我在 Cocoa 应用程序中执行此操作,因此我想在后台执行此操作。

因此,我可以在终端的多个实例中启动多个脚本(这样它们就不会相互阻塞)。

注意:我通过在两个不同的终端窗口中运行该命令对其进行了测试,可以正常工作。

【问题讨论】:

  • 如果你不想等待'do sheet script'命令的结束,你必须将它的输出重定向到其他地方,一个文件或不去任何地方。例如,在“do shell”命令末尾添加“
  • @pbell 我遇到了解决方案并将其作为备份。但想法是启动两个后台进程。这样做可以让我在退出 jar 时回叫我的可可应用程序。

标签: applescript


【解决方案1】:

请参阅Technical Note TN2065,特别是对“我想启动后台服务器进程;如何使 shell 脚本不等到命令完成?”问题的答案?和“我已经启动了一个后台进程;如何获取它的进程 ID,以便我可以使用其他 shell 命令控制它?”。

在后台运行两个命令的 AppleScript 代码如下所示:

set pid1 to do shell script command1 & " &> /dev/null & echo $!"
set pid2 to do shell script command2 & " &> /dev/null & echo $!"

pid1 和 pid2 变量将被设置为两个命令的进程 ID。您可以稍后通过调用如下函数来检查命令是否仍在运行:

on isProcessRunning(pid)
    try
        do shell script "kill -0 " & pid
        set isRunning to true
    on error
        set isRunning to false
    end try
    return isRunning
end isProcessRunning

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2013-04-18
    • 2011-08-27
    相关资源
    最近更新 更多