检查 Torque 作业是否 Running/Queued 的脚本
Script to Check if Torque Jobs are Running/Queued
有没有办法以编程方式检查是否有 运行 and/or 个排队的作业?我正在寻找一个脚本(可以是 Bash、Python 或任何其他典型语言)来执行此操作,然后在必要时采取一些操作,例如关闭服务器(或者在我的情况下, Google Compute Engine 中的一个实例)。我还想在采取行动之前检查是否有其他用户登录。我知道命令 qstat
,但不确定如何在脚本中使用它。命令 who
也是如此。我正在使用 Torque 和 Ubuntu 服务器。
谢谢。
编辑
考虑到 "down votes",我将尝试提供更多信息。我想在伪代码中做类似下面的事情:
if "no jobs queued" and "no jobs running" and "no users logged in" then
shutdown machine
endif
显然,缺少的部分是如何在脚本文件中检测引号内的条件。关闭部分在这里并不重要。如果有人能给我一些指示或分享一些想法,我将不胜感激。谢谢
import subprocess
def runCmd(exe):
p = subprocess.Popen(exe,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
retcode = p.poll()
line = p.stdout.readline()
yield line
if retcode is not None:
break
def hasRQJob():
jobs = runCmd('qstat')
for line in jobs:
columns = line.split()
if columns[-2] in ('Q','R'): return True
return False
上面的例子展示了如何使用python执行shell脚本并检查是否有作业运行或正在排队。函数runCmd
return 职位信息是这样的:
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
1773.cluster CC Jianhong.Zhou 00:00:00 C MasterStudents
1774.cluster RDPSO Wei.Fang 00:00:00 C PRCI
因此,很容易判断工作的状态。
查看是否有用户登录的方法可参考4 Ways to Identify Who is Logged-In on Your Linux System
对了python中执行shell脚本的方法可以参考Calling an external command in Python
有没有办法以编程方式检查是否有 运行 and/or 个排队的作业?我正在寻找一个脚本(可以是 Bash、Python 或任何其他典型语言)来执行此操作,然后在必要时采取一些操作,例如关闭服务器(或者在我的情况下, Google Compute Engine 中的一个实例)。我还想在采取行动之前检查是否有其他用户登录。我知道命令 qstat
,但不确定如何在脚本中使用它。命令 who
也是如此。我正在使用 Torque 和 Ubuntu 服务器。
谢谢。
编辑
考虑到 "down votes",我将尝试提供更多信息。我想在伪代码中做类似下面的事情:
if "no jobs queued" and "no jobs running" and "no users logged in" then
shutdown machine
endif
显然,缺少的部分是如何在脚本文件中检测引号内的条件。关闭部分在这里并不重要。如果有人能给我一些指示或分享一些想法,我将不胜感激。谢谢
import subprocess
def runCmd(exe):
p = subprocess.Popen(exe,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
retcode = p.poll()
line = p.stdout.readline()
yield line
if retcode is not None:
break
def hasRQJob():
jobs = runCmd('qstat')
for line in jobs:
columns = line.split()
if columns[-2] in ('Q','R'): return True
return False
上面的例子展示了如何使用python执行shell脚本并检查是否有作业运行或正在排队。函数runCmd
return 职位信息是这样的:
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
1773.cluster CC Jianhong.Zhou 00:00:00 C MasterStudents
1774.cluster RDPSO Wei.Fang 00:00:00 C PRCI
因此,很容易判断工作的状态。
查看是否有用户登录的方法可参考4 Ways to Identify Who is Logged-In on Your Linux System
对了python中执行shell脚本的方法可以参考Calling an external command in Python