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
이 세 가지 문제를 해결하도록 도와주실 수 있나요?
답변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