Como encontrar a política de agendamento e a prioridade dos processos ativos?

1

Eu quero fazer um script de shell que encontre todos os processos ativos e imprimir para o usuário a política de agendamento. Quero que o resultado seja assim.

pid 3042's current scheduling policy: SCHED_OTHER pid 3042's current scheduling priority: 0 pid 3043's current scheduling policy: SCHED_OTHER pid 3043's current scheduling priority: 0 pid 3044's current scheduling policy: SCHED_OTHER pid 3044's current scheduling priority: 0

Eu consegui fazer isso, mas apenas para um único processo com o uso dos comandos ps e chrt .

    
por Spyros 28.11.2017 / 13:44

2 respostas

0

Eu encontrei duas maneiras de fazer isso, elas podem não ser ótimas, mas elas fazem o trabalho.

  1. #! /bin/bash ps -u |grep [0-9]|awk '{print $2}' > test.txt cat test.txt |while read line do chrt -p $line 2 > /dev/null done

  2.  2

Desta forma, você não cria arquivos desnecessários.

ps -u|grep [0-9]|awk '{system("chrt -p" $2)} 2 > /dev/null

    
por 02.12.2017 / 01:52
0

Eu criei o seguinte comando usando ps e awk , o que dá uma saída muito semelhante, com apenas uma pequena diferença, pois mostra nomes abreviados da classe de agendamento. O mapeamento a seguir pode ajudar você:

  • TS é SCHED_OTHER
  • RR é SCHED_RR
  • FF é SCHED_FIFO

O comando:

ps -e -o s,pid,cls,pri | grep ^R | awk -v sq="'" '{print "pid",$2,sq,"s current scheduling policy:",$3,"\npid",$2,sq,"s current priority:",$4}'

A execução do comando acima no meu host fornece a seguinte saída:

pid 8456 ' s current scheduling policy: TS 
pid 8456 ' s current priority: 19
pid 12552 ' s current scheduling policy: TS 
pid 12552 ' s current priority: 19

EDITAR

Com base no comentário, o comando a seguir fornece uma saída exata usando chrt e supondo que um processo ativo seja um processo em execução ou executável R :

ps -e -o s,pid | grep ^R | awk '{system("chrt -p " $2)}'

Caso você queira obter a saída para todos os processos (em execução, em repouso, parado e zumbi), use o seguinte comando:

ls /proc | grep -e ^[0-9] | awk '{system("chrt -p " $0)}'|more
    
por 29.11.2017 / 00:19