簡體   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