Linux下kill、killall和pkill命令的功能与区别

0    189    2

Tags:

👉 本文共约6243个字,系统预计阅读时间或需24分钟。

1.kill命令

Linux中,kill命令用于向指定的进程发送信号,用于终止进程或者修改进程的行为。

1.1kill命令常用功能

kill命令的常用功能如下:

  • 终止进程

使用kill命令可以向指定的进程发送信号,用于终止进程。默认情况下,发送的是TERM信号,这个信号会让进程优雅地退出,即会让进程自己执行清理操作然后退出。

  • 修改进程的行为

使用kill命令还可以向指定的进程发送其他信号,用于修改进程的行为。例如,使用HUP信号可以重新加载进程的配置文件,使用USR1信号可以让进程执行自定义的操作。

  • 查看可用的信号

使用kill命令的-l选项可以列出可用的信号。

1.2kill命令格式

其中,<PID>表示要处理的进程ID号。可以同时指定多个PID,用空格分隔。options表示kill命令的选项,可以用于指定要发送的信号。

1.3kill命令常用选项

选项/参数描述
-s <signal>指定要发送的信号。默认为TERM信号。
-l列出可用的信号。
-[signal]发送指定的信号。例如,-9表示发送KILL信号。
-p打印进程ID号,不发送信号。
-a向所有进程发送信号。
-u <username>向指定用户的所有进程发送信号。
-t <terminal>向指定终端上的所有进程发送信号。
--help显示帮助信息。
--version显示版本信息。

注意,选项和参数可以组合使用,例如:

  • kill -9 -u username:向用户名为username的所有进程发送KILL信号。
  • kill -l:列出所有可用的信号。
  • kill -15 1234:向进程ID为1234的进程发送TERM信号。
  • kill -a -s HUP:向所有进程发送HUP信号。

总之,kill命令的各种选项和参数可以让我们更加灵活地控制进程的行为,但在使用时需要注意避免误删重要的进程或数据。

1.4kill使用实例

1.4.1列出所有信号名称

这里边常用的信号:

  • SIGTERM:表示终止进程的请求信号,通常用于优雅地停止进程。
  • SIGKILL:表示强制终止进程的信号,不能被阻塞、处理或忽略。
  • SIGINT:表示中断进程的信号,通常由CTRL+C键生成,用于终止正在运行的进程。
  • SIGHUP:表示挂起进程的信号,通常用于重新读取配置文件或重新启动服务。
  • SIGUSR1和SIGUSR2:表示用户自定义的信号,可以用于进程之间的通信或者进行自定义操作。

除了以上常用的信号,还有很多其他的信号,如SIGQUIT、SIGSTOP、SIGTSTP等等,每个信号都有其特定的含义和用途。

1.4.2得到指定信号的数值

1.4.3彻底杀死进程

先查找mysql数据库的进程pid,然后杀死该进程:

2.killall命令

killall命令用于杀死指定进程名的所有进程,其功能与kill命令类似,但它可以一次性杀死所有同名进程。

2.1killall命令格式

2.2killall命令参数

选项/参数描述
-e精确匹配进程名,避免误杀其他进程。如果进程名是另一个进程名的子串,那么使用该选项可以确保只杀死该进程名的进程。
-g指定进程组ID,将杀死该进程组中的所有进程。
-i交互式模式,杀死进程前要求用户确认。在执行killall命令时,如果加上了该选项,则系统会在杀死进程前要求用户确认,避免误杀重要进程。
-q安静模式,不输出任何信息。如果加上了该选项,则killall命令在执行时不会输出任何信息,只会杀死指定的进程。
-s指定信号类型,可以是数字或信号名称。使用该选项可以向指定进程发送指定类型的信号。默认情况下,killall命令会向进程发送SIGTERM信号。
-u指定用户名,将杀死该用户所有进程。如果加上了该选项,则killall命令会杀死指定用户的所有进程。

需要注意的是,killall命令会根据选项和参数指定的条件来杀死进程,因此在使用时需要特别注意,避免误删重要进程或数据。

2.3killall命令使用实例

2.3.1杀死名为"mysqld"的所有进程

然后查看进程:

也可以查看运行状态:

2.3.2杀死名为"mysqld"的所有进程,并发送SIGTERM信号

该命令将向所有名为mysqld的进程发送SIGTERM信号,通知它们优雅地停止执行

2.3.3杀死名为myprogram的所有进程,并发送SIGKILL信号

该命令将向所有名为mysqld的进程发送SIGKILL信号,立即杀死它们。

2.3.4杀死名为mysqld的所有进程,但不杀死名为mysqld2`的进程

该命令将杀死所有精确匹配名为mysqld的进程,但不会误杀名为mysqld2的进程。

2.3.5杀死指定用户所有进程

先查看用户moonrong进程:

然后执行:

2.3.6定时杀死进程

有时候需要定时杀死某个进程,例如定时清理系统缓存或定时重启某个服务,可以使用定时任务结合killall命令来实现。

例如,要每天凌晨3点定时重启名为mysqld的服务,可以使用crontab来设置定时任务,执行以下命令:

然后在编辑器中添加以下内容:

该命令将在每天凌晨3点执行killall命令,杀死名为"mysqld"的所有进程。

2.3.7关闭一组相关的进程

有时候多个进程可能是相互关联的,例如数据库服务和Web服务器,如果想要同时关闭它们,可以使用killall命令。

例如,要关闭所有名为"mysql"和"apache"的进程,可以执行以下命令:

该命令将杀死所有名为"mysql"和"apache"的进程。

2.4killall命令使用的场景

  • 关闭某个应用程序的所有进程:有时候某个应用程序可能会启动多个进程,如果想要关闭所有这些进程,可以使用killall命令。
  • 关闭崩溃的进程:如果某个进程崩溃了并且无法正常关闭,可以使用killall命令来杀死该进程。
  • 关闭特定用户的所有进程:如果想要关闭某个用户的所有进程,可以使用killall命令。
  • 关闭一组相关的进程:有时候多个进程可能是相互关联的,例如数据库服务和Web服务器,如果想要同时关闭它们,可以使用killall命令。
  • 定时杀死进程:有时候需要定时杀死某个进程,例如定时清理系统缓存或定时重启某个服务,可以使用定时任务结合killall命令来实现。

3.pkill命令

pkill命令可以通过进程名或其他属性来查找并杀死进程。它的功能类似于killall命令,但是可以使用更多的匹配选项。

3.1pkill命令格式

其中,模式指定要查找并杀死的进程名称或其他属性。选项是可选的,用于指定其他选项,例如使用不同的信号、按用户杀死进程等等。

3.2pkill命令参数

参数描述
-f匹配进程的整个命令行参数,而不仅仅是进程名。
-u根据指定的用户ID或用户名查找进程。
-t根据指定的终端号查找进程。
-x仅匹配与指定名称完全相同的进程。
-n仅杀死最新的n个匹配的进程。
-e仅杀死和当前用户相关的进程。
-P杀死指定进程的父进程。
-g杀死指定进程组中的所有进程。

需要注意的是,使用pkill命令也需要谨慎,避免误删重要进程或数据。使用时应该根据实际情况选择合适的参数和选项。

3.3pkill使用场景及实例

pkill命令在Linux系统管理中有很多使用场景,以下是一些pkill命令的实例:

3.3.1杀死所有名为nginx的进程

3.3.2杀死所有以my开头的进程

3.3.3杀死用户moonrong的所有进程

3.3.4杀死所有命令行参数中包含pattern的进程

3.3.5杀死进程组中的所有进程

3.3.6杀死最新的5个匹配进程

3.3.7杀死与指定终端相关的所有进程

如果要踢出用户,需要采取其他措施,例如使用pkill -u username命令杀死该用户的所有进程,或者使用pkill -KILL -t pts/0命令强制杀死在该终端上运行的所有进程,然后使用killall -KILL -u username命令强制杀死该用户的所有进程。

4.kill、killall与pkill命令对比

下面是kill、killall和pkill命令的对比表格:

命令描述优点缺点
kill根据PID杀死进程简单易用需要手动查找进程的PID
killall根据进程名杀死所有进程可以杀死多个进程可能误杀其他进程
pkill根据进程名或其他属性杀死进程可以根据多种属性杀死进程某些选项可能需要root权限

这三个命令的主要区别在于,kill命令需要手动查找要杀死的进程的PID,而killall和pkill命令可以根据进程名或其他属性杀死进程。killall命令可以杀死多个进程,但有时可能误杀其他进程。pkill命令则可以根据多种属性杀死进程,但某些选项可能需要root权限。

总之,在Linux系统管理中,这三个命令都是非常有用的工具,可以根据不同的需求选择使用。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Linux下kill、killall和pkill命令的功能与区别后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部