【问题标题】:How to get full path of command launched on LSF如何获取在 LSF 上启动的命令的完整路径
【发布时间】:2016-06-14 09:17:12
【问题描述】:

用户使用 bsub 在 LSF 上启动了一个作业。从jobId可以知道执行了哪个命令,但无法确定该命令的完整路径

Job <270090>, User <abhkumar>, Project <default>, 
Interactive pseudo-terminal mode, Command <virtuoso>

有没有办法找到它?或 PATH 变量与该命令?

【问题讨论】:

  • 我认为没有简单的方法可以做到这一点。在提交环境中捕获PATH变量,然后在作业的执行环境中设置。

标签: linux lsf


【解决方案1】:

这里有一些东西。但是有点乱。

[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

它很混乱,因为从 bjobs -l 解析作业 PID 很混乱。解析bjobs -o pids 更容易。该命令可能始终是第三个 pid。第一个是作业资源,第二个是作业脚本。如果该命令启动其他命令,那么这些 pid 也会出现。我怀疑 pid 的顺序是否保证不会因为与各种 LSF 功能(例如 cgroups、pim、blaunch)的交互而改变。所以告诫购买者。

这也很麻烦,因为您必须将ssh 发送到执行主机并检查 proc 文件系统。并且只有 root 或作业执行用户可以访问该特定进程的 /proc。

【讨论】:

    【解决方案2】:

    您可以使用以下内容来隔离您想要的内容:

    bjobs -o 'command' [job_ID]

    请参阅 bsub 手册页中的部分:

    bjobs -o "field_name[:[-][output_width]] ... [delimiter='character']"

    表 1 包含您可以查询的所有可能的输出字段。

    如果您使用-noheader,您可以消除除您想要的字段之外的所有输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 2020-11-29
      • 2010-10-11
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多