用户使用 bsub 在 LSF 上启动了一个作业。从jobId,我可以知道执行了哪个命令,但无法确定该命令的完整路径
Job <270090>, User <abhkumar>, Project <default>,
Interactive pseudo-terminal mode, Command <virtuoso>
有没有办法找到它?或带有该命令的 PATH 变量?
这里有一些东西。但它有点乱。
[mclosson@host ~]$ bjobs -l 806
Job <806>, User <mclosson>, Project <default>, Status <RUN>, Queue <normal>, Co
mmand <sleep 100000>, Share group charged </mclosson>
Thu Jul 7 15:58:18: Submitted from host <host>, CWD <$HOME>;
Thu Jul 7 15:58:19: Started 1 Task(s) on Host(s) <host>, Allocated 1 Slot(s
) on Host(s) <host>, Execution Home </home/mclosson>, E
xecution CWD </home/mclosson>;
Thu Jul 7 15:58:20: Resource usage collected.
MEM: 5 Mbytes; SWAP: 0 Mbytes; NTHREAD: 4
PGID: 11125; PIDs: 11125 11127 **11129**
[mclosson@host ~]$ bjobs -o pids 806
PIDS
11125,11127,**11129**
[mclosson@host ~]$ ls -l /proc/**11129**/exe
lrwxrwxrwx 1 mclosson lsf 0 Jul 7 15:59 /proc/11129/exe -> /bin/sleep
它很混乱,因为从中解析作业 PIDbjobs -l
很混乱。解析bjobs -o pids
更容易。该命令可能总是第三个 pid。第一个是作业资源,第二个是作业脚本。如果该命令启动其他命令,那么这些 pid 也会出现。我怀疑 pid 的顺序不会因为与各种 LSF 功能(例如,cgroups、pim、blaunch)的交互而改变。所以买者自负。
它也很混乱,因为您必须到ssh
执行主机并检查 proc 文件系统。并且只有 root 或作业执行用户可以访问该特定进程的 /proc。
您可以使用以下内容来隔离您想要的内容:
bjobs -o 'command' [job_ID]
请参阅 bsub 手册页中的部分:
bjobs -o "field_name[:[-][output_width]] ... [delimiter='character']"
表 1 包含您可以查询的所有可能的输出字段。
如果您使用-noheader
,您可以消除除所需字段之外的所有输出。