zoukankan      html  css  js  c++  java
  • linux 杀死进程kill 等用法

    kill -9 $(ps -ef | grep process_name | grep -v grep | awk  '{print $2}')

     
    稍微解释一下:
     awk  '{print $2}'   打印出第二行内容,如果想显示第一行内容就用$1就可以了。
     grep -v grep 去掉包含grep字样的所有行记录
    ps -ef | grep process_name 显示出所有包含process_name字样的行记录,process_name就是你想要找的进程名字或者其他脚本名字
     
     
     
    用户退出:
    Java代码  收藏代码
    1. sudo pkill -u username  
     
    1. kill
    作用:根据进程号杀死进程
    用法: kill [信号代码] 进程ID
     
    root@fcola:/# ps -ef | grep sendmail
    smmsp    14354 14337  0 00:08 pts/1    00:00:00 sendmail start
    smmsp    14356  3154  0 00:08 pts/0    00:00:00 sendmail -s
    smmsp    14359  3154  0 00:09 pts/0    00:00:00 sendmail start
    smmsp    14360 14337  0 00:09 pts/1    00:00:00 sendmail state
    root     17723 15753  0 01:08 pts/2    00:00:00 vim sendmail.mc
    root     19022     1  0 01:26 ?        00:00:03 gedit /etc/mail/sendmail.mc
    root     20674 15753  0 01:55 pts/2    00:00:00 grep sendmail
    root@loris-desktop:/# kill -9 14354
     
    注意:kill -9 来强制终止退出
     
    特殊用法:
    kill -STOP [pid]
    发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
    kill -CONT [pid]
    发送SIGCONT (19,18,25)重新开始一个停止的进程。
    kill -KILL [pid]
    发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
    kill -9 -1
    终止你拥有的全部进程。
     
    2. killall
    作用:通过程序的名字,直接杀死所有进程
    用法:killall 正在运行的程序名
     
    举例:
    root@fcola:/# ps -ef | grep sendmail
    smmsp    14354 14337  0 00:08 pts/1    00:00:00 sendmail start
    smmsp    14356  3154  0 00:08 pts/0    00:00:00 sendmail -s
    smmsp    14359  3154  0 00:09 pts/0    00:00:00 sendmail start
    smmsp    14360 14337  0 00:09 pts/1    00:00:00 sendmail state
    root     17723 15753  0 01:08 pts/2    00:00:00 vim sendmail.mc
    root     19022     1  0 01:26 ?        00:00:03 gedit /etc/mail/sendmail.mc
    root     20683 15753  0 01:59 pts/2    00:00:00 grep sendmail
    root@fcola:/# killall -9 sendmail
    root@fcola:/# ps -ef | grep sendmail
    root     17723 15753  0 01:08 pts/2    00:00:00 vim sendmail.mc
    root     19022     1  0 01:26 ?        00:00:03 gedit /etc/mail/sendmail.mc
    root     20686 15753  0 01:59 pts/2    00:00:00 grep sendmail
    root@fcola:/# killall -9 sendmail
     
    注意:该命令可以使用 -9 参数来强制杀死进程
     
    3. pkill
    作用:通过程序的名字,直接杀死所有进程
    用法:#pkill 正在运行的程序名
     
    举例:
    root@fcola:/# ps -ef | grep sendmail
    root     17723 15753  0 01:08 pts/2    00:00:00 vim sendmail.mc
    root     19022     1  0 01:26 ?        00:00:03 gedit /etc/mail/sendmail.mc
    root     21480 15753  0 02:03 pts/2    00:00:00 grep sendmail
    root@fcola:/# pkill sendmail
     
    4. xkill
    作用:杀死桌面图形界面的程序。
    应用情形实例:firefox出现崩溃不能退出时,点鼠标就能杀死firefox 。
    当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。
    如果您想终止xkill ,就按右键取消;
     
    调用方法:
    [root@localhost ~]# xkill
     
    ◆编者注:
    KILLALL(Section: User (1)/Updated: 1999年9月7日)
    ———————————————–
     
    NAME (名称)
    killall – 以名字方式来杀死进程
     
    SYNOPSIS (总览)
    killall [-egiqvw] [-signal] name …
    killall -l
    killall -V
     
    DESCRIPTION (描述)
    killall 发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送SIGTERM.。
    信号可以以名字 (如 -HUP ) 或者数字 (如 -1 ) 的方式指定. 信号 0 (检查进程是否存在)只能以数字方式指定。
    如果命令名包括斜杠 (/), 那么执行该特定文件的进程将被杀掉, 这与进程名无关。
    如果对于所列命令无进程可杀, 那么 killall 会返回非零值. 如果对于每条命令至少杀死了一个进程, killall 返回 0。Killall 进程决不会杀死自己 (但是可以杀死其它 killall 进程)。
     
    OPTIONS (选项)
    -e
    对 于很长的名字, 要求准确匹配. 如果一个命令名长于 15 个字符, 则可能不能用整个名字 (溢出了). 在这种情况下, killall 会杀死所有匹配名字前 15 个字符的所有进程. 有了 -e 选项,这样的记录将忽略. 如果同时指定了 -v 选项, killall 会针对每个忽略的记录打印一条消息。
    -g
    杀死属于该进程组的进程. kill 信号给每个组只发送一次, 即使同一进程组中包含多个进程。
    -i
    交互方式,在杀死进程之前征求确认信息。
    -l
    列出所有已知的信号名。
    -q
    如果没有进程杀死, 不会提出抱怨。
    -v
    报告信号是否成功发送。
    -V
    显示版本信息。
    -w
    等待所有杀的进程死去. killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回. 注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待。
    FILES(相关文件)
    /proc proc文件系统的存在位置。
    KNOWN bugS (已知 BUGS)
    以文件方式杀死只对那些在执行时一直打开的可执行文件起作用, 也即, 混杂的可执行文件不能够通过这种方式杀死。
    要警告的是输入 killall name 可能不会在非 Linux 系统上产生预期的效果, 特别是特权用户执行时要小心。

    在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程, killall -w 侦测不到。

    来源:http://www.ubuntuhome.com/ubuntu-kill-command.html

    下面来了解相关命令:

    一、查看进程的命令 有ps、pstree、pgrep等:                                       

    1、ps                                             
    显示进程信息,参数可省略 
    -aux   以BSD风格显示进程 常用
    -efH   以System V风格显示进程
    -e , -A 显示所有进程
    a        显示终端上所有用户的进程
    x        显示无终端进程
    u     显示详细信息
    f        树状显示
    w     完整显示信息
    l      显示长列表

    在终端中执行ps aux,
    各列输出字段的含义:

    USER        进程所有者
    PID         进程ID
    PPID         父进程
    %CPU       CPU占用率
    %MEM     内存占用率
    NI          进程优先级。数值越大,占用CPU时间越少
    VSZ          进程虚拟大小
    RSS          页面文件占用
    TTY         终端ID
    STAT         进程状态
    +---D   不可中断    Uninterruptible sleep (usually IO)
    +---R   正在运行,或在队列中的进程
    +---S   处于休眠状态
    +---T   停止或被追踪
    +---Z   僵尸进程
    +---W   进入内存交换(从内核2.6开始无效)
    +---X   死掉的进程

    +---<   高优先级
    +---N   低优先级
    +---L   有些页被锁进内存
    +---s   包含子进程
    +---+   位于后台的进程组;
    +---l   多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

    PID:进程标识符,系统为每一个进程分配一个识别码,称为PID。        

    ps命令极为常用,其他命令还有:

    2.pstree                        
    树状显示进程信息
    -a 显示完整命令及参数
    -c 重复进程分别显示
    -c 显示进程ID PID
    -n 按 PID 排列进程

    3.pgrep <进程名>                      
    显示进程的PID
    -l 显示进程名和进程PID
    -o 进程起始ID
    -n 进程终止ID

    二、结束进程的命令 有kill、pkill、killall、xkill等:                                    

    kill [信号代码] <进程PID>                 

    根据PID向进程发送信号,常用来结束进程,默认信号为 -9
    信号代码,可取值如下:
    -l [信号数字] 显示、翻译信号代码
    -9 , -KILL 发送 kill 信号退出
    -6 , -ABRT 发送 abort 信号退出
    -15 , -TERM 发送 Termination 信号
    -1 , -HUP 挂起
    -2 , -INT 从键盘中断,相当于 Ctrl+c
    -3 , -QUIT 从键盘退出,相当于 Ctrl+d
    -4 , -ILL 非法指令
    -11 , -SEGV 内存错误
    -13 , -PIPE 破坏管道
    -14 , -ALRM
    -STOP 停止进程,但不结束
    -CONT 继续运行已停止的进程
    -9 -1 结束当前用户的所有进程

    pkill <进程名>                             
    结束进程族。如果结束单个进程,请用 kill

    killall <进程名>                               
    killall和pkill 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

    xkill                           
    在图形界面中点杀进程。
    当xkill运行时鼠标指针变为骷髅图案,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消。
    比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。
    xkill 调用方法:
    [root@localhost ~]# xkill

    来源: http://www.cnblogs.com/1024-wusuopuBUPT/archive/2012/02/16/2354132.html

    linux中pkill的简单用法

    pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

     必要参数
    -f 显示完整程序
    -l 显示源代码
    -n 显示新程序
    -o 显示旧程序
    -v 与条件不符合的程序
    -x 与条件符合的程序

    选择参数
    -p<进程号> 列出父进程为用户指定进程的进程信息
    -t<终端> 指定终端下的所有程序
    -u<用户> 指定用户的程序

      应用方法:

      #pkill 正在运行的程序名

      举例:

    Java代码  收藏代码
    1. [root@localhost beinan]# pgrep -l gaim  
    2. 2979 gaim  
    3. [root@localhost beinan]# pkill gaim  
     

      也就是说:

      kill 对应的是 PID

      pkill 对应的是COMMAND

      例如在Ubuntu中强制结束一个已成僵尸的名称为:firefox,PID为:1603的进程,可以如下操作:

     

      方法一:

      (1)ctrl+alt+t,调出终端,输入 top,然后就可以看到现在系统的进程,是按占用资源从多到少排列的。

      找到要关掉的进程,记下该进程第一列的数字编号(假设是xx),然后输入q,退回终端。

     

      (2)输入:sudo kill xx(对应刚才的编号)。

      方法二:

     

      ctrl+alt+t,调出终端,输入:sudo pkill firefox

    范例1: 杀死指定进程

    Java代码  收藏代码
    1. root@snail-hnlinux:~# ps -A //显示所有进程  
    2. PID TTY   TIME CMD  
    3.  1 ?  00:00:03 init  
    4.  2 ?  00:00:00 kthreadd  
    5.  3 ?  00:00:00 migration/0  
    6.  4 ?  00:00:00 ksoftirqd/0  
    7.  5 ?  00:00:00 watchdog/0  
    8. ……忽略部分  
    9. 28382 ?  00:00:00 gvfsd-http  
    10. 28391 ?  00:07:07 software-center  
    11. 30467 ?  00:00:31 designer-qt4  
    12. 30487 ?  00:00:06 gnome-terminal  
    13. 30488 ?  00:00:00 gnome-pty-helpe  
    14. 30489 pts/00:00:00 bash  
    15. 30670 ?  00:00:00 debconf-communi  
    16. 30749 pts/00:00:17 gedit  
    17. 31155 ?  00:00:00 dhclient  
    18. 31325 ?  00:00:01 sshd  
    19. 31327 ?  00:00:00 sshd  
    20. 31400 pts/00:00:00 bash  
    21. 31485 pts/00:00:00 bash  
    22. 31653 ?  00:00:00 aptd  
    23. 31658 pts/00:00:00 ps  
    24. root@snail-hnlinux:~# pidof sshd //查看与sshd相关进程  
    25. 31327 31325 2095  
    26. root@snail-hnlinux:~# pkill -9 sshd //杀死指定进程  

     
    范例2:杀死同义终端下的进程

    Java代码  收藏代码
    1. root@snail-hnlinux:~# pkill -t tty1 //杀死终端1下的所有进程  

     
    范例3: 杀死指定用户进程

    Java代码  收藏代码
    1. root@snail-hnlinux:~# pkill -u hnlinux  


    范例4:反向选择

    Java代码  收藏代码
    1. root@snail-hnlinux:~# pkill -vu hnlinux //杀死不属于hnlinux用户的所有进程  

    * A: PID = Process Id
    * E: USER = User Name
    * H: PR = Priority
    * I: NI = Nice value
    * O: VIRT = Virtual Image (kb)
    * Q: RES = Resident size (kb)
    * T: SHR = Shared Mem size (kb)
    * W: S = Process Status
    * K: %CPU = CPU usage
    * N: %MEM = Memory usage (RES)
    * M: TIME+ = CPU Time, hundredths
    b: PPID = Parent Process Pid
    c: RUSER = Real user name
    d: UID = User Id
    f: GROUP = Group Name
    g: TTY = Controlling Tty
    j: P = Last used cpu (SMP)
    l: TIME = CPU Timesize (kb)
    p: SWAP = Swapped size (kb)
    r: CODE = Code size (kb)
    s: DATA = Data+Stack size (kb)
    u: nFLT = Page Fault count
    v: nDRT = Dirty Pages count
    y: WCHAN = Sleeping in Function
    z: Flags = Task Flags <sched.h>
    * X: COMMAND = Command name/line

    Flags field:
    0x00000001 PF_ALIGNWARN
    0x00000002 PF_STARTING
    0x00000004 PF_EXITING
    0x00000040 PF_FORKNOEXEC
    0x00000100 PF_SUPERPRIV
    0x00000200 PF_DUMPCORE
    0x00000400 PF_SIGNALED
    0x00000800 PF_MEMALLOC
    0x00002000 PF_FREE_PAGES (2.5)
    0x00008000 debug flag (2.5)
    0x00024000 special threads (2.5)
    0x001D0000 special states (2.5)
    0x00100000 PF_USEDFPU (thru 2.4)

  • 相关阅读:
    Windows下查看dll被哪个进程调用
    mfc笔记之string,wstring,CString
    查看用户主目录
    我看Windows 8 RT
    C# 性能优化之斤斤计较篇 一
    曾经生活过的城市
    大型.NET项目的目录、编译和版本管理实践 四
    大型.NET项目的目录、编译和版本管理实践 五
    大型.NET项目的目录、编译和版本管理实践 二
    大型.NET项目的目录、编译和版本管理实践 一
  • 原文地址:https://www.cnblogs.com/hanlong/p/5757797.html
Copyright © 2011-2022 走看看