別のエイリアスと後者のエイリアスに二重引用符と一重引用符を含むwatchコマンドでエイリアスをどのように使用できますか?

別のエイリアスと後者のエイリアスに二重引用符と一重引用符を含むwatchコマンドでエイリアスをどのように使用できますか?

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

しかし、いくつかの問題が発生しました。

  1. watch vov私の端末()で動作させることはできません/bin/bash
  2. 私のalias.bashrc
  3. 私に割り当てられた(短いバージョン)はalias使用できません。watch vov.bashrc

これら3つの問題を解決するのに役立ちますか?

ベストアンサー1

watchシェルエイリアスにも同じ問題がありました。エイリアスがなぜ監視されないのかはわかりませんが、エイリアスをシェルスクリプトに入れて呼び出すと、watchこの問題を解決できます。

ファイルを作成し、最初の行にvovshebangを使用し#!/bin/bashscontrol...etc次の行にshebangを使用し、ファイルを保存するchmod +x vovか、mv vov ~/.local/bin/別の場所に保存します$PATH

それからあなたはできますwatch -t -n 1 -c vov

どのフラグが必要かを忘れてしまったので、次のようなwatchシェルスクリプトがあります。これを行うことができます。showatch -t -n 1 -c "$1"sho vov

おすすめ記事