如何在linux命令行中通过管道将节点名称传递给ssh



节点中有几个作业,希望看到我的作业正在那里运行。由于内存问题,节点被我(用户(占用为睡眠(只是在没有实际作业的情况下占用了节点(,qstat显示运行状态,但实际上没有作业在运行。我需要使用ssh进行检查。

qstat显示如下

  • 作业ID优先名称用户状态在队列槽提交/启动ja任务ID
  • 3508392 0.60500 joonho 0 joonhor2020年9月4日12:17:03skylake@node0236
  • 3508393 0.60500 joonho1 joonhor2020年9月4日12:17:03skylake@node2236
  • 3509074 0.00000 amplong16 joonho qw 04/09/2020 13:22:20 36

在我的试验中,

  • qstat|awk'/@/{print$8}'|cut-d@-f2

打印

  • 节点02
  • 节点22

我想通过管道将这些信息传递给ssh,然后我可以使用

  • sshnode02ps aux|grep amp_run.py

在那里我可以检查作业"amp_run.py"是否正在运行。

但以下失败,

  • qstat|awk'/@/{print$8}'|cut-d@-f2|xargs ssh ps aux|grep amp_run.py

有没有一种方法可以在命令行中实现这一点,而不是制作脚本?或者有任何其他建议来检查占用的节点而不是所有节点中正在运行的作业?

这是一个简单的xargs用法。当来自管道的自变量位于下一个命令中的任何位置时,-我找到了这个地方。所以命令应该是lime this。

  • qstat|awk'/@/{print$8}'|cut-d@-f2|xargs-I{}ssh{}ps-aux|grep-amp_run.py

最新更新