繁体   English   中英

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

[英]How to pass node name to ssh through pipe in linux command line?

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

qstat显示如下

  • 作业 ID 先前名称用户 state 在队列槽提交/开始 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

打印

  • 节点02
  • 节点22

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

  • ssh node02 ps aux | grep amp_run.py

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

但以下失败,

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

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

这是一个简单的 xargs 用法。 当来自 pipe 的 arguments 在下一条命令中定位到任意位置时,-I{} 定位到该位置。 所以命令应该是lime this。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM