我编写了一个zsh
脚本,该脚本启动许多屏幕会话并在每个会话中运行不同的命令。执行脚本时总共有 72 个屏幕,因此手动检查屏幕是否job
完成是一项非常耗时的任务。我可以运行一些单独的脚本来检查屏幕会话是否有正在运行的作业,并在没有正在运行的作业时终止会话吗?你有什么想法吗?我想不出任何可靠地检查所有屏幕会话中发生的情况的方法,提前谢谢。
答案1
我可以想象输出日志屏幕的功能可以帮助您实现这一点(请参阅手册页了解详情)。您可以生成会话的输出日志并检查它们以查看您的作业是否已完成。
或者您可以检查正在运行的进程树(例如使用pstree
)以查看屏幕会话中的 shell 是否仍有正在运行的子进程。但是,我可以想象pstree
在脚本中解析的输出很麻烦且容易出错,因此您可能实际上希望使用内核接口(以获取正在运行的进程树)来实现这一点。