awk 또는 cut 명령을 사용하여 CPU 백분율 얻기


0

각 코어의 CPU 백분율을 얻기 위해 PHP 스크립트를 통해 Linux 명령을 실행하려고합니다.

...과 cut:

 $output = null;
 passthru("mpstat -P ALL | grep 0 | tr -s ' ' | cut -d ' ' -f 4", $output);
 echo "$output <br>";

...과 awk:

$output = null;
passthru("mpstat -P ALL | grep 0 | tr -s ' ' | awk '{print $4}'", $output);
echo "$output <br>";

두 문장으로 결과는 다음과 같습니다.

내 서버의 이름 2.19 2.21 2.30 2.26 2.22 2.20 2.14 2.09 2.07 0

내 서버에는 8 코어 CPU가 있으며 출력을 Google 차트에 직접 사용하려고하므로 서버 이름없이 8 코어에 대한 CPU 백분율 만 있으면됩니다.

이 문제를 도와 줄 수 있습니까?


그래서 당신의 문제는 무엇입니까? echo(implode("\n", $output)[1]);필요한 것은 무엇을 사용 합니까?
Salem

감사합니다, 그러나 그것은 여전히 ​​숫자 앞에 나에게 (서버 이름)을 제공합니다
Mohammed AL Jakry

서버 이름이 항상 같은 길이라면`cut '을 사용하여 첫 번째 부분을 제거 할 수 있습니다.
Hennes

덕분에 서버 이름이 항상 동일하지는 않습니다. 숫자 awkcut명령 만 받고 싶습니다 .
Mohammed AL Jakry

1
@MohammedALJakry 일부 페이스트 서비스를 사용하여 출력을 제공 할 수 있습니까 mpstat -P ALL? 출력에서 호스트 이름을 얻지 못하는 것과 정확히 동일한 명령을 실행합니다. 나는 다음과 같은 (4 코어)를 얻었다 :`05/23/2013 % usr 6.71 8.05 7.45 5.87 5.48`.
Salem

답변:


1

내 시스템 mpstat이 귀하의 질문에 표시 된 것과 다르기 때문에 문자열을 에코하고 있지만 출력이 게시 한 것이라면 작동해야합니다.

<?
$string="the name of my server 2.19 2.21 2.30 2.26 2.22 2.20 2.14 2.09 2.07 0";
$output=system("echo $string | perl -ne '/^.+?\s+([\d\. ]+)/; print \"$1\"'");
echo "$output <br>";
?>

Perl 스크립트는 [\d\. ]+서버 이름과 임의의 서버 이름을 가진 데이터를 구분해야하는 가장 긴 숫자, 소수점 및 공백 ( )을 찾고 인쇄합니다. 서버 이름이 다음과 같은 숫자로 끝나면 실패합니다 foo bar 12. 12서버 이름의 일부로 취급하지 않고 데이터의 일부로 취급합니다 .

서버 이름에 공백이 없으면 (필자가 아닌 것으로 가정) gawk원하는 경우이 버전을 사용할 수 있습니다 .

<?
$string="thenameofmyserver 2.19 2.21 2.30 2.26 2.22 2.20 2.14 2.09 2.07 0";
$output=system("echo $string | gawk '{for(i=2; i<=NF; i++){printf \"%s \",$(i)}}'");
echo "$output <br>";
?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.