2016-12-02 132 views
0

我正在从苹果脚本启动一个jar应用程序。如何在后台从苹果脚本运行多个shell脚本

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脚本。

因为我在可可应用程序中这样做,我想在后台执行此操作。

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

注意:我通过在两个不同的终端窗口中运行命令来测试它,按预期工作。

+0

如果你不想等待,做片脚本“命令结束时,你必须重定向它的输出别的地方,到一个文件或无处。例如在'do shell'命令末尾添加' pbell

+0

@pbell我遇到了解决方案并将其作为备份。但这个想法是启动两个后台进程。这样做可以让我在退出罐子时回电给我的可可应用程序。 –

回答

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 $!" 

和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