我有一个脚本可以打开与插入的设备一样多的终端选项卡,然后在这些设备上运行测试。测试完成后,我想清理所有终端选项卡。我在后台运行一些东西,不知道每个过程什么时候完成。
如何检查终端的当前选项卡中是否有进程正在运行?
我计划在终端的每个选项卡没有正在运行的进程后,在 AppleScript 中执行命令 W 来终止每个终端命令。
谢谢!
我有一个脚本可以打开与插入的设备一样多的终端选项卡,然后在这些设备上运行测试。测试完成后,我想清理所有终端选项卡。我在后台运行一些东西,不知道每个过程什么时候完成。
如何检查终端的当前选项卡中是否有进程正在运行?
我计划在终端的每个选项卡没有正在运行的进程后,在 AppleScript 中执行命令 W 来终止每个终端命令。
谢谢!
如果你使用 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
如果将“首选项 > 设置 > 外壳 > 当外壳退出时”设置为“关闭窗口”,则关闭选项卡。
一个简单的解决方案是获取您在终端中运行的每个命令并将“; exit”(不带引号)附加到它。
例如,如果您的命令之一是“ls”,您可以将其更改为“ls;exit”。
不幸的是,如果您想让终端窗口保持打开状态以查看所显示内容的结果,这将不起作用。不过,这可以通过将第一个命令的结果输出到某个文件来解决。
再次使用 ls 的示例,您可以运行“ls >> testfile.txt; exit”将 ls 的结果输出到文件,然后在执行完成后关闭终端窗口。
您可以使用“作业”来检查是否有任何进程在后台运行。