Procurando por uma maneira conveniente de encontrar o número da CPU executando o script atual

0

Eu quero implementar um script simples de demonstração que imprima o nome do host e o número da CPU que está executando o script.

hostname -s cuida da primeira parte da saída. Existe uma maneira similarmente conveniente de obter o número da CPU?

(Eu entendo que, em geral, um processo pode incluir vários threads, que podem ser executados em várias CPUs. Aqui, no entanto, presumo que o script seja executado em um único thread.)

    
por kjo 01.10.2017 / 01:59

2 respostas

4

Isso é semelhante à solução de Jesse_b acima, mas solicita as informações para o script usando seu pid:

#!/bin/bash                                                                     

host=$(hostname -s)                                                             
processor=$(ps -hp $$ -o psr)                                                   

echo "Script running on ${host} on processor ${processor}"

A opção -h suprime o cabeçalho, a opção -p $$ seleciona o processo com o pid dado e $$ é o pid do script em execução, e a opção -o psr seleciona apenas o campo psr - o processador para o qual o processo está atualmente atribuído.

    
por 01.10.2017 / 05:15
0

Eu acredito que isso é o que você está procurando, embora esse script geralmente seja executado em mais de um thread. Acredito que isso também não seja super preciso, porque um script cria um grupo de processos. Isso está procurando pelo ppid e muitos dos comandos do script criarão seus próprios pid dentro desse grupo de processos. Portanto, qualquer comando que tenha terminado e fechado, ou qualquer processo iniciado após a linha ps -aF não será capturada.

#!/bin/bash
hostname -s
echo -e "Proccess:\t$(pgrep "$(basename $0)")"
echo -e "$(ps -aF | grep "$(pgrep $(basename $0))" | awk '{print "CPU:\t\t"$7}')"
    
por 01.10.2017 / 04:27