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
我在和 shell 别名方面也遇到了同样的问题。我不确定为什么别名无法观看,但您可以通过将别名放入 shellscript 中并调用watch
它来解决(或解决)这个问题。
创建一个文件,在第一行使用vov
shebang #!/bin/bash
,然后scontrol...etc
在后续行中使用 shebang,保存该文件,chmod +x vov
(mv vov ~/.local/bin/
或 上的其他位置$PATH
)。
然后你可以做watch -t -n 1 -c vov
我忘记了 flagswatch
需要什么,所以我有一个名为 的 shellscript sho
,看起来像watch -t -n 1 -c "$1"
这样,你可以这样做sho vov
。