执行存储在变量中的命令

执行存储在变量中的命令

我想编写一个脚本来显示某项服务的 CPU 利用率。下面是该脚本及其输出。请帮忙。

脚本 :

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

脚本输出:

[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

答案1

脚本的最后两个命令:

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

第一个命令将运行ps命令并将其输出存储在final变量中。第二个命令将提示 shell 将的输出用作ps命令,但此操作将失败。

这两行应该替换为一行

ps -p $newpid -o %cpu=

然而,脚本错误到达最后一行。错误表明您调用ps的方式错误。也许这个特定的ps实现不理解-o,或者格式(%cpu=)不正确。

尝试使用-o pcpu=-o pcpu代替。

相关内容