한 명령의 출력을 다른 명령의 출력으로 나누는 방법은 무엇입니까?

한 명령의 출력을 다른 명령의 출력으로 나누는 방법은 무엇입니까?

어떤 서버가 과부하되었는지 알 수 있도록 서버 부하를 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/loadavguptime또한 명령이 로드를 가져오는 위치에서도 로드를 가져와야 합니다 .

답변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개의 숫자를 제공하고 이를 나누어 답을 인쇄하도록 요청합니다.

답변4

zsh를 사용하는 경우 다음을 시도해 보세요.

echo $(($(grep -c processor /proc/cpuinfo) / $(uptime | awk '{print $11}')))

스크린샷

관련 정보