![한 명령의 출력을 다른 명령의 출력으로 나누는 방법은 무엇입니까?](https://linux55.com/image/37870/%ED%95%9C%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9C%BC%EB%A1%9C%20%EB%82%98%EB%88%84%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
어떤 서버가 과부하되었는지 알 수 있도록 서버 부하를 CPU 코어 수로 나눈 값을 알고 싶습니다. 다음을 통해 CPU 코어 수를 얻을 수 있습니다.
$ grep -c processor /proc/cpuinfo
2
다음을 사용하여 서버 로드를 얻을 수 있습니다.
$ uptime | awk '{print $11}'
0.47,
0.47/2
이제 나누어서 을 얻고 싶습니다 0.23
.이 작업을 수행하기 위해 어떤 맨페이지를 읽어야 하는지 어떻게 알 수 있나요?저는 올바른 명령을 찾기 위해 다음 단계가 무엇인지 이해하는 방법을 정말로 찾고 있습니다. 명령 자체를 묻는 것이 아닙니다.
나는 이 문제를 온라인에서 검색해 보았지만 Google조차도 나를 올바른 방향으로 이끌 수 없었습니다. 그렇다면 대체 어떤 키워드를 검색해야 할까요? 명백한 "linux, Division, bash, 출력"은 도움이 되지 않습니다.
답변1
이렇게 하면 트릭을 수행할 수 있습니다.
(awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l
/proc/loadavg
uptime
또한 명령이 로드를 가져오는 위치에서도 로드를 가져와야 합니다 .
답변2
bash 스크립트를 작성하면 됩니다. 두 개의 값을 두 개의 다른 변수로 가져옵니다. 그런 다음 명령을 사용하여 bc
하나를 다른 것으로부터 분리하십시오 . 그렇게 쉽습니다.
답변3
decimal_places=2
dc <<< "${decimal_places}k $(uptime | awk '{print $11}'| cut -d"," -f1) $(grep -c processor /proc/cpuinfo) /p"
이 답변은 $()
bash에서 작동하므로 임시 변수가 필요하지 않습니다. 또한 계산기 dc를 사용합니다. 를 사용하여 dc에 정밀도를 말한 k
다음 2개의 숫자를 제공하고 이를 나누어 답을 인쇄하도록 요청합니다.