LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 626|回复: 8

请问这个脚本该如何写

[复制链接]
发表于 2007-5-9 21:51:24 | 显示全部楼层 |阅读模式
top -n 1 -b|grep ca > /home/top/ca.out;

[root@top]# cat ca.out
5410 root      16   0  126m 3104 1364 S 13.9  0.3   0:17.42 ca


想要实现,当CPU值小于2的时候,自动杀掉这个进程,然后从新启动/bin/ca。
发表于 2007-5-9 22:50:58 | 显示全部楼层
try awk
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 08:49:25 | 显示全部楼层
#!/bin/bash
pid=`top -n 1 -b|grep ca|awk '{print $1}'`;
echo $pid
cpu=`top -n 1 -b|grep ca|awk '{print $9}'`;
echo $cpu
if [ $cpu -lt 5 ]
then
echo "$cpu is less than 5"
kill $pid
sh /bin/ca
fi

我需要方法,我现在在小于等于这里有问题。
回复 支持 反对

使用道具 举报

发表于 2007-5-10 08:51:47 | 显示全部楼层
lt是小于le是小于等于
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 09:01:28 | 显示全部楼层
取值问题,CPU取出来的不是整数,所以会报错误,如何作?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 09:02:13 | 显示全部楼层
[root@ top]# sh new.sh
16346
9.8
new.sh: line 14: [: 9.8: integer expression expected
回复 支持 反对

使用道具 举报

发表于 2007-5-10 10:53:08 | 显示全部楼层
cpu的格式还是固定的可以把其扩大10倍然后与50比较
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 11:37:02 | 显示全部楼层
。。。。你的答案很精辟,不过是可以区小数点之前的整数的。

if [ ${cpu%.*} -lt 5 ]

所以如果你不愿意写出东西来,你就别回答了。
回复 支持 反对

使用道具 举报

发表于 2007-5-10 16:00:29 | 显示全部楼层
  1. #!/bin/bash
  2. pid=`ps aux | awk '
  3.         $11 == "ca" && $3 <= 5.0 {
  4.                 print $2;
  5.         }
  6. '`
  7. if [ -z $pid ];then
  8.         echo "no such process!"
  9. else
  10.         kill -9 $pid
  11. fi
复制代码
还是应该尽量自己编码。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表