Jak powiedzieli inni, prawdopodobnie najlepszym sposobem jest top. Wymaga to drobnych poprawek i analizy, ale możesz to zrobić, aby uzyskać bieżące wykorzystanie procesora jako procent.
topdzieli użycie procesora między użytkownika, procesy systemowe i niceprocesy, chcemy sumę trzech. Możemy więc działać topw btrybie ATCH, który pozwala nam analizować jego dane wyjściowe. Jednak, jak wyjaśniono tutaj , pierwsza iteracja top -bzwraca wartości procentowe od uruchomienia, dlatego potrzebujemy co najmniej dwóch iteracji ( -n 2), aby uzyskać bieżący procent. Aby przyspieszyć, możesz ustawić dopóźnienie między iteracjami na 0.01. Wreszcie grepwiersz zawierający procenty procesora, a następnie wykorzystany gawkdo zsumowania procesów użytkownika, systemu i ładnych procesów:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Pomyślałem, że możesz uzyskać te informacje ps -o pcpu ax, dodając% wykorzystania każdego uruchomionego procesu. Niestety, jak wyjaśniono tutaj , ps„zwraca procent czasu spędzonego w trakcie całego cyklu życia”, co nie jest tym, czego potrzebujesz.
EDYTOWAĆ
Na podstawie Twojego komentarza twoja wersja topróżni się od mojej i powinieneś użyć tego:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Aby uniknąć problemów z lokalizacją, ustaw ustawienia regionalne na C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'