我知道命令,例如 qsub、qstat -a、qstat -an 等。
但是,如何才能在任何给定时间内找到单个用户在队列中有多少个作业(不一定所有作业都在运行)?
答案1
我认为您正在寻找 的“用户”选项qstat
。qstat -u username
列出属于给定用户的所有作业。可以使用反斜杠包含通配符:qstat -u \\*
列出所有作业。
要回答您的具体问题(总工作量),您可以使用wc
计算qstat
输出的行数:
qstat -u username | wc -l
但是这会比实际作业多出两个,因为qstat
有两个标题行。因此您可能需要的完整命令是:
expr $(qstat -u username | wc -l) - 2
它根据用户名请求作业,计算行数,然后减去 2。
答案2
标题行数可能不是 2(例如,在我们的 Cray 上是 5)。另一个解决方案是:
qselect -u username | wc -l
qselect
不产生标题行。
答案3
一个实际的解决方案是,
qstat -u username |grep username |wc -l
这样标题行的数量就无关紧要了。