다른 별칭과 후자의 별칭에 큰따옴표 및 작은따옴표가 포함된 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

이 세 가지 문제를 해결하도록 도와주실 수 있나요?

답변1

watch쉘 별칭에도 동일한 문제가 있었습니다. 별칭이 왜 감시되지 않는지 잘 모르겠지만 별칭을 쉘스크립트에 넣고 호출하면 watch이 문제를 해결할 수 있습니다.

파일을 만들고, 첫 번째 줄에 vovshebang을 사용한 #!/bin/bash다음, scontrol...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

관련 정보