【问题标题】:How to pass node name to ssh through pipe in linux command line?如何通过 linux 命令行中的管道将节点名称传递给 ssh?
【发布时间】:2020-07-21 21:06:31
【问题描述】:

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

qstat如下所示

  • job-ID 优先名用户状态提交/在队列槽 ja-task-ID 开始
  • 3508392 0.60500 joonho0 joonho r 04/09/2020 12:17:03 skylake@node02 36
  • 3508393 0.60500 joonho1 joonho r 04/09/2020 12:17:03 skylake@node22 36
  • 3509074 0.00000 amplong16 joonho qw 04/09/2020 13:22:20 36

在我的审判中,

  • qstat | awk '/@/ {打印 $8}' |剪切 -d@ -f2

打印

  • node02
  • node22

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

  • ssh node02 ps aux | grep amp_run.py

我可以在哪里检查作业“amp_run.py”是否正在运行。

但以下失败,

  • qstat | awk '/@/ {打印 $8}' |切-d@ -f2 | xargs ssh ps 辅助 | grep amp_run.py

有没有办法在命令行中执行此操作,而不是编写脚本?或者有什么其他建议来检查被占用节点而不是所有节点中正在运行的作业?

【问题讨论】:

    标签: linux ssh pipe xargs


    【解决方案1】:

    这是一个简单的 xargs 用法。 当来自管道的参数位于下一个命令中的任何位置时, -I{} 定位该地点。所以命令应该是lime this。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2011-06-28
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多