1

我有一个脚本可以打开与插入的设备一样多的终端选项卡,然后在这些设备上运行测试。测试完成后,我想清理所有终端选项卡。我在后台运行一些东西,不知道每个过程什么时候完成。

如何检查终端的当前选项卡中是否有进程正在运行?

我计划在终端的每个选项卡没有正在运行的进程后,在 AppleScript 中执行命令 W 来终止每个终端命令。

谢谢!

4

3 回答 3

3

如果你使用 AppleScript,你可以检查 busy 属性:

tell application "Terminal"
    repeat with t in tabs of windows
        if busy of t is false then
            do script "exit" in t
        end if
    end repeat
end tell

exit如果将“首选项 > 设置 > 外壳 > 当外壳退出时”设置为“关闭窗口”,则关闭选项卡。

于 2013-07-18T06:14:56.347 回答
2

一个简单的解决方案是获取您在终端中运行的每个命令并将“; exit”(不带引号)附加到它。

例如,如果您的命令之一是“ls”,您可以将其更改为“ls;exit”。

不幸的是,如果您想让终端窗口保持打开状态以查看所显示内容的结果,这将不起作用。不过,这可以通过将第一个命令的结果输出到某个文件来解决。

再次使用 ls 的示例,您可以运行“ls >> testfile.txt; exit”将 ls 的结果输出到文件,然后在执行完成后关闭终端窗口。

于 2013-07-17T18:52:19.110 回答
1

您可以使用“作业”来检查是否有任何进程在后台运行。

于 2013-07-18T06:05:00.103 回答