我想编写一个脚本来显示某项服务的 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
代替。