免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6801 | 回复: 7
打印 上一主题 下一主题

得出一个pid,在shell中怎么kill掉呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-05 10:14 |只看该作者 |倒序浏览
匹配出一个进程pid,现在要杀掉这个进程,在shell 中好象不能直接用kill,还要一个xrag什么的吧?

论坛徽章:
0
2 [报告]
发表于 2005-12-05 10:36 |只看该作者
不需要,我试过可以直接杀

论坛徽章:
0
3 [报告]
发表于 2005-12-05 10:42 |只看该作者

回复 2楼 azzz 的帖子

root@vHostXen137 [~/ling]# ps aux |grep "mysqld"|sed -n '1p' |awk '{ print $2}'|kill

kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]

好象不行,报错?你是怎么用的啊?

论坛徽章:
0
4 [报告]
发表于 2005-12-05 11:00 |只看该作者
以前写的一段收集系统信息的脚本,文件名collectdata,看你能用上不。
格式:collectdata 输出文件名后缀|stop
如果使用“collectdata 输出文件名后缀”会被提示输入vmstat 和 iostat的时间间隔;如果使用“collectdata stop"会结束vmstat和iostat进程。

#!/bin/sh
X=$1



collect_vm ()
{

   if [ -f vmstatdata"$X" ]
   then


        while [ "$chooseio" != yes -a "$chooseio" != y -a  "$chooseio" != Y -a "$chooseio" != YES -a "$chooseio" != no -a "$chooseio" != n -a  "$chooseio" != N -a "$chooseio" != NO ]
        do
                echo "File vmstatdata"$X" is already exist,do you want to cover with it(yes or no):\c"
                read chooseio
                if [ "$chooseio" = yes -o "$chooseio" = y -o  "$chooseio" = Y -o "$chooseio" = YES ]
                then
                        while true
                               do
                               date  >> vmstatdata"$X"
                        vmstat $INTERVAL_VM 10 >> vmstatdata"$X"
                       
                        done
                fi
                if [ "$chooseio" = no -o "$chooseio" = n -o  "$chooseio" = N -o "$chooseio" = NO ]
                then
                        echo " You didn't collect data of vmstat command!"
                fi
        done


    else
        while true
        do
        date  >> vmstatdata"$X"
        vmstat $INTERVAL_VM 10 >> vmstatdata"$X"  
       
        done
    fi
   
   

return
}

collect_io ()
{   
     if [ -f iostatdata"$X" ]
   then


        while [ "$chooseio" != yes -a "$chooseio" != y -a  "$chooseio" != Y -a "$chooseio" != YES -a "$chooseio" != no -a "$chooseio" != n -a  "$chooseio" != N -a "$chooseio" != NO ]
        do
                echo "File iostatdata"$X" is already exist,do you want to cover with it(yes or no):\c"
                read chooseio
                if [ "$chooseio" = yes -o "$chooseio" = y -o  "$chooseio" = Y -o "$chooseio" = YES ]
                then
                        while true
                               do
                               date  >> iostatdata"$X"
                        iostat $INTERVAL_IO 10 >> iostatdata"$X"
                       
                        done
                fi
                if [ "$chooseio" = no -o "$chooseio" = n -o  "$chooseio" = N -o "$chooseio" = NO ]
                then
                        echo " You didn't collect data of iostat command!"
                fi
        done


    else
        while true
        do
        date  >> iostatdata"$X"
        iostat $INTERVAL_IO 10 >> iostatdata"$X"  
       
        done
    fi
return
}




stopproc ()
{

ps -ef | grep collectdata  | nawk  '{ if ( $9 == "./collectdata" && $10 != "stop" ) print $2 }' > collectdata_pid
i=`nawk 'END{print NR}' collectdata_pid`



while [ $i -ge 1 ]
do
pid=`nawk 'NR=='$i'{print $1}' collectdata_pid`
kill  $pid
i=`expr $i - 1`

done

return
}


if [ $X = stop ]
then
   stopproc

else
   
echo "Please input interval of each command:\n"

echo "vmstat:\c"
read INTERVAL_VM

echo "iostat:\c"
read INTERVAL_IO


collect_vm &
collect_io &

fi

exit 0

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2005-12-05 11:05 |只看该作者
kill $(ps aux|awk '/mysqld/{print $2;exit}')

既然知道用xargs,就应该想想为什么用xargs
wayy2008 该用户已被删除
6 [报告]
发表于 2005-12-05 11:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2005-12-05 11:57 |只看该作者
原帖由 zw2002 于 2005-12-5 10:14 发表
匹配出一个进程pid,现在要杀掉这个进程,在shell 中好象不能直接用kill,还要一个xrag什么的吧?


Use xargs to pass command to kill a process
  1. ps -ax | grep command | awk '{print $1}' | xargs -i kill -9 {}
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-12-05 12:08 |只看该作者
原帖由 waker 于 2005-12-5 11:05 发表
kill $(ps aux|awk '/mysqld/{print $2;exit}')

既然知道用xargs,就应该想想为什么用xargs

不求甚解者多,孜孜求是者寡
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP