alias vov="scontrol -o show nodes | grep -e \"-lkeb\" -e \"-gpu\"| awk '{ printf(\"%-15s%-9s%-7s%-18s%-11s%-9s%s\n\", substr(\$1, 10), substr(\$4, 10), substr(\$5, 8), substr(\$9, 6), substr(substr(\$23, 12)/1024,0,5), substr(substr(\$24, 10)/1024,0,5), substr(\$38, 11))}' | awk '{printf(\"%-15s%-7s%-9s%-18s%-7s%-9s%50-s%2-s%9-s%9-s%9-s\n\", \$1, \$3, \$2, \$4, \$5, \$6, \"|\"\$7, \"|\", \$3-\$2, \$5-\$6, substr(\$4,length(\$4))-substr(\$7,length(\$7)))}' | awk '\$11 != 0' | awk 'BEGIN {print \"NodeName CPUTot CPUAlloc Gres MemTot MemAlloc AllocTres CPUAvail MemAvail GPUAvail CPU/GPU\"}{print \$0 FS \$9/\$11}'"
上記のコードを私のファイルに書くとうまく.bashrc
いきます。
watch "scontrol -o show nodes | grep -e \"-lkeb\" -e \"-gpu\"| awk '{ printf(\"%-15s%-9s%-7s%-18s%-11s%-9s%s\n\", substr(\$1, 10), substr(\$4, 10), substr(\$5, 8), substr(\$9, 6), substr(substr(\$23, 12)/1024,0,5), substr(substr(\$24, 10)/1024,0,5), substr(\$38, 11))}' | awk '{printf(\"%-15s%-7s%-9s%-18s%-7s%-9s%50-s%2-s%9-s%9-s%9-s\n\", \$1, \$3, \$2, \$4, \$5, \$6, \"|\"\$7, \"|\", \$3-\$2, \$5-\$6, substr(\$4,length(\$4))-substr(\$7,length(\$7)))}' | awk '\$11 != 0' | awk 'BEGIN {print \"NodeName CPUTot CPUAlloc Gres MemTot MemAlloc AllocTres CPUAvail MemAvail GPUAvail CPU/GPU\"}{print \$0 FS \$9/\$11}'"
上記のコードをターミナル()に貼り付けても/bin/bash
問題ありません。実際に見なければならないコードはvov
。
しかし、いくつかの問題が発生しました。
watch vov
私の端末()で動作させることはできません/bin/bash
。- 私の
alias
。.bashrc
- 私に割り当てられた(短いバージョン)は
alias
使用できません。watch vov
.bashrc
これら3つの問題を解決するのに役立ちますか?
答え1
watch
シェルエイリアスにも同じ問題がありました。エイリアスがなぜ監視されないのかはわかりませんが、エイリアスをシェルスクリプトに入れて呼び出すと、watch
この問題を解決できます。
ファイルを作成し、最初の行にvov
shebangを使用し#!/bin/bash
、scontrol...etc
次の行にshebangを使用し、ファイルを保存するchmod +x vov
か、mv vov ~/.local/bin/
別の場所に保存します$PATH
。
それからあなたはできますwatch -t -n 1 -c vov
どのフラグが必要かを忘れてしまったので、次のようなwatch
シェルスクリプトがあります。これを行うことができます。sho
watch -t -n 1 -c "$1"
sho vov