我想通过 Sun Grid Engine(现在:Oracle Grid Engine?)上的 qsub 提交作业。我不希望使用 -sync yes 选项或 qrsh,因为我希望我的控制程序是单线程的并且能够一次启动许多作业。这些选项会阻塞我的控制程序的线程。
但是,我想收到我启动的进程的退出状态。从手册页来看,似乎没有办法在不阻塞我的线程的情况下获取此代码。除了修改我正在启动的作业以将其退出代码打印到标准输出之外,有没有办法获得这种状态?
我想通过 Sun Grid Engine(现在:Oracle Grid Engine?)上的 qsub 提交作业。我不希望使用 -sync yes 选项或 qrsh,因为我希望我的控制程序是单线程的并且能够一次启动许多作业。这些选项会阻塞我的控制程序的线程。
但是,我想收到我启动的进程的退出状态。从手册页来看,似乎没有办法在不阻塞我的线程的情况下获取此代码。除了修改我正在启动的作业以将其退出代码打印到标准输出之外,有没有办法获得这种状态?
答案是“qacct -j”。作业历史的摘要打印到标准输出,然后可以解析退出状态、开始和结束时间以及各种其他信息。
但是,必须正确配置 SGE 才能使该命令正常工作。
如果您在应用程序中提交作业,最简单、最快(比使用 qsub 提交更快)的方式(以及稍后获取退出状态)是使用 DRMAA API。这个简单的 API 在 Sun Grid Engine 中以 C 语言和 Java 语言提供了很长时间。Univa Grid Engine(Grid Engine 的商业继承者)和 Sun Grid Engine 分支也提供了必要的库。由于它是一个开放标准,您甚至可以提交完全其他的 DRMS,如 Condor/SLURM 等,而无需更改您的程序。GO、Python 或 TCL(和其他)的语言绑定可用。
见: http ://www.gridengine.eu/mangridengine/htmlman3/drmaa_wait.html
更多信息和 Go (#golang) DRMAA 语言绑定示例,您可以在此处找到:http: //www.gridengine.eu/programming-apis
干杯
丹尼尔
www.gridengine.eu