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.
top
dzieli użycie procesora między użytkownika, procesy systemowe i nice
procesy, chcemy sumę trzech. Możemy więc działać top
w b
trybie ATCH, który pozwala nam analizować jego dane wyjściowe. Jednak, jak wyjaśniono tutaj , pierwsza iteracja top -b
zwraca wartości procentowe od uruchomienia, dlatego potrzebujemy co najmniej dwóch iteracji ( -n 2
), aby uzyskać bieżący procent. Aby przyspieszyć, możesz ustawić d
opóźnienie między iteracjami na 0.01
. Wreszcie grep
wiersz zawierający procenty procesora, a następnie wykorzystany gawk
do 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 top
róż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}'