作者:Carrie
出处:https://home.cnblogs.com/u/hanjiali
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

pkill

       pkill可以给指定的进程发送信息,它可以结束某个执行的进程或者目录登录的用户。

       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

 

1、语法

       pkill [-signal]  [-fvx]  [-n|-o] [-P ppid,...]  [-g pgrp,...]  [-s sid,...]  [-u euid,...]  [-U uid,...]  [-G gid,...]  [-t term,...]  [pattern]

 

2、选项列表

选项

说明

--help

显示帮助文档

--version

显示命令版本

-f

查找完成的文件名

-g pgrp

只匹配列出的进程组ID中的进程。进程组0被转换为pgrep或pkill自己的进程组。

-G gid

只匹配实际组ID列出的进程。可以使用数值或符号值。

-n

选择最近执行的进程

-o

选择最早的进程

-P ppid

选择父pid匹配的进程

-s sid

只匹配进程会话ID列出的进程。会话ID 0被转换为pgrep或pkill自己的会话ID。

-t term

查找符合终端号的进程

-u euid

只匹配其有效用户ID列出的进程。

-U uid

只匹配实际用户ID列出的进程。可以使用数值或符号值。

-v

查找不符合条件的进程

-x

只匹配其名称(如果-f指定了命令行)与模式完全匹配的进程。

-signal

要发送的信号

 

3、返回值

退出码

说明

0

一个或多个进程符合。

1

没有进程符合

2

命令的语法错误

3

致命错误:内存不足等。

 

4、实例

       杀死wc进程

[root@localhost ~]# pkill -SIGKILL wc                   //wc发送KILL信号,杀死进程

[1]-  已杀死               nice -n 19 wc

You have new mail in /var/spool/mail/root 

[root@localhost ~]# ps                                    //查看进程,wc已经杀死

  PID TTY          TIME CMD

 8266 pts/0    00:00:00 bash

 8554 pts/0    00:00:00 ps

 

 

   首先说一下kill命令,它是通过pid(进程ID)来杀死进程,要得到某个进程的pid,我们可以使用ps(process status)命令,默认情况下,kill命令发送给进程的终止信号是15,但是有些进程不会理这个信号,这样的话,可以用9信号来强制杀死,信号9是不会被忽略的强制性执行信号。
      而killall和pkill都是使用命令名来终止进程的有效手段,它们不同于kill通过pid来杀死进程的方式,它可以理解为成批成批的杀死进程,当然这么做的危险性也相对提高了不少。当然它们也可以给进程发送相应的终止信号。
       比如我们要杀死mysql的相关进程,我们可以使用pkill -9 mysqld即可杀死所有mysql相关的进程,比较方便,不过它有可能会误删程序。
      
      下面是常用的信号的数字及其含义:
      1     表示从终端上发出的结束信号
      2     表示从键盘上发出的终端信号(即Ctrl+c)
      3     表示从键盘上发出的退出信号(即Ctrl+\)
      8     表示浮点异常,比如被0除
      9     表示结束接受信号的进程,也就是强行杀死进程
     15    kill命令默认的终止信号
     17    子进程终止或结束的信号
     19    从键盘来执行的信号
posted on 2019-11-06 14:24  不吃葡萄楞吐皮  阅读(876)  评论(0编辑  收藏  举报