Executa um comando armazenado em uma variável

1

Eu quero escrever um script que mostre a utilização da CPU para um serviço. abaixo é script e saída para o mesmo. Por favor, ajude.

Script:

yourpid=$(service tomcat_SP status | cut -d':' -f2) #this will store PID

newpid="${yourpid// /}" # this will remove extra space from PID

final=$(ps -p $newpid -o %cpu=) # this is final command to get cpu utilization

$final # calling command to give output

Saída de script:

[root@PHYAPP01 tmp]# sh -x temp.sh

++ service tomcat_SP status

++ cut -d: -f2

+ yourpid=' 1823'

+ newpid='1823'

+ ps -p 1823 -o %cpu=

ERROR: Process ID list syntax error.

********* simple selection *********  ********* selection by list *********

-A all processes                      -C by command name

-N negate selection                   -G by real group ID (supports names)

-a all w/ tty except session leaders  -U by real user ID (supports names)

-d all except session leaders         -g by session OR by effective group 
name

-e all processes                      -p by process ID
    
por user2891042 14.07.2016 / 15:07

1 resposta

0

Os dois últimos comandos do seu script:

final=$(ps -p $newpid -o %cpu=)
$final

O primeiro executará o comando ps e armazenará sua saída na variável final . O segundo comando solicitará que o shell use a saída de ps como um comando, o que falhará.

Estas duas linhas devem ser substituídas pela linha única

ps -p $newpid -o %cpu=

No entanto, o script comete erros antes para chegar à última linha. O erro indica que você está chamando ps no caminho errado. Talvez essa implementação ps específica não entenda -o ou o formato ( %cpu= ) esteja incorreto.

Tente usar -o pcpu= ou -o pcpu .

    
por 30.07.2016 / 09:55

Tags