상태 표시줄에 대한 스크립트를 작성했습니다 dwm
. 그 중 일부는 시스템의 각 코어에 대한 현재 CPU 사용량을 찾는 것입니다. 스스로 방법을 찾았지만 그 안의 버그를 수정하는 데 도움이 필요합니다. 이것은 주문입니다: top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
. 이는 top
기본적으로 각 코어를 표시한다고 가정합니다. top
을 누른 1
다음 W
현재 구성을 .toprc
홈 폴더의 파일 에 저장하면 됩니다 . 이제 top
열 때마다 모든 코어가 표시됩니다. 앞서 언급한 명령에는 다음과 같은 변수에 할당할 때 단점이 있습니다.
CPU=$(top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}')
그런 다음 다음과 같이 사용하십시오. $CPU
상태 표시줄에 원하는 출력이 표시되지만 각 CPU 백분율 사이에는 서로 분리된 두 개의 기호가 있으며 이를 합산합니다. 어떻게 제거합니까? 여기서 문자열 대신 배열을 사용하는 것과 관련이 있나요?xsetroot
xsetroot -name "$CPU"
v
t
왼쪽에 질문이 보이시죠?그림.
주문하다:
top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
예제 출력:
14.3
12.0
8.0
10.0
이 스크립트를 사용하는 모든 사람을 위한 참고 사항: 코어의 CPU 사용량 100%
이 명령에 의해 배열 출력에 도달하면 현재 부하가 있는 열이 한 열에서 3
다른 열로 이동됩니다 2
. 따라서 열의 출력이 awk '{print $3}'
표시됩니다 . 괜찮다면 그냥 떠나세요. 그렇지 않은 경우 인쇄 막대를 사용할 수도 있습니다 . 그러면 그렇게 해 . 이러한 모든 함정을 피하는 솔루션은 다음과 같습니다.us,
3
awk
2
:
top -bn 2 | grep -F '%Cpu' | tail -n 4 | gawk '{print $2 $3}' | tr -s '\n\:\,[:alpha:]' ' '
답변1
나에게 값 사이의 "물건"은 다음을 사용할 때 얻을 수 있는 개행 문자(8진수 문자 코드 12)의 시각적 표현인 것 같습니다.
echo -e 'a\012b'
다음과 같이 출력을 파이핑해 볼 수 있습니다 tr '\n' ' '
.
echo -e 'a\012b' | tr '\n' ' '