Kill Killall pkill

Kill Killall pkill

1 kill

向指定的进程发送信号,用于终止进程或者修改进程的行为

1.1 常用功能

  • 终止进程
    • 默认发送TERM信号,让进程执行清理操作然后退出
  • 修改进程的行为
    • 使用HUP信号可以重新加载进程的配置文件
    • 使用USR1信号可以让进程执行自定义的操作
  • 查看可用信号
    • kill命令-l选项列出可用的信号

1.2 命令格式

kill [options] <PID>
选项描述
-s指定要发送的信号,默认为TERM信号
-l列出可用的信号
-[signal]发送指定的信号
-p打印进程ID号,不发送信号
-a向所有进程发送信号
-u向指定用户的所有进程发送信号
-t向指定终端上的所有进程发送信号
–help显示帮助信息
–version显示版本信息
  • kill -9 -u username:向用户名为username的所有进程发送KILL信号。
  • kill -l:列出所有可用的信号。
  • kill -15 1234:向进程ID为1234的进程发送TERM信号。
  • kill -a -s HUP:向所有进程发送HUP信号。

1.3 使用实例

1.3.1 列出所有信号名称
kill -l

0:检查进程是否在运行

15 SIGTERM:表示终止进程的请求信号,通常用于优雅地停止进程
进程可以忽略该信号,但是可以保存进程踪迹和日志信息

9 SIGKILL:表示强制终止进程的信号,不能被阻塞、处理或忽略

3 SIGQUIT:表示终止进程的信号,并且保存相关的日志信息

2 SIGINT:表示中断进程的信号,通常由CTRL+C键生成,用于终止正在运行的进程

1 SIGHUP:表示挂起进程的信号,通常用于重新读取配置文件或重新启动服务

10 SIGUSR1和12 SIGUSR2:表示用户自定义的信号,可以用于进程之间的通信或者进行自定义操作
1.3.2 得到指定信号的数值
kill -l [信号名称]

e.g
kill -l kill --> 9
kill -l SIGKILL --> 9
Kill -l TERM --> 15
kill -l SIGTERM --> 15
1.3.3 杀死进程
kill -3 PID
kill -s QUIT $(cat /usr/local/nginx/logs/nginx.pid)
1.3.4 重新加载配置文件
kill -1 PID
kill -s HUP PID
1.3.5 日志分割,重新打开日志文件
kill -USR1 nginx
1.3.6 平滑升级,在不关闭的情况下升级
kill -USR2 PID
1.3.7 彻底杀死进程

先查找到进程pid,然后杀死该进程

ps -ef | grep 进程名
kill -9 进程pid

2 killall

用于杀死指定进程名的所有进程

类似kill命令,但可以一次性杀死所有同名进程

2.1 命令格式

killall [选项] 进程名

2.2 killall命令参数

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

2.3 使用实例

2.3.1 杀死名为mysqld的所有进程
killall mysqld
killall -3 nginx
killall -s QUIT nginx
##可能会误删
2.3.2 杀死名为mysqld的所有进程,并发送SIGTERM信号
killall -s SIGTERM mysqld
2.3.3 杀死名为myprogram的所有进程,并发送SIGKILL信号
killall -s SIGKILL myprogram
2.3.4 杀死名为mysqld的所有进程,但不杀死名为mysqld2的进程
killall -e mysqld
2.3.5 杀死指定用户所有进程
killall -u 用户名
2.3.6 定时杀死进程
例如定时清理系统缓存或定时重启某个服务
可以使用定时任务结合killall实现

每天凌晨3点定时重启名为mysqld的服务
crontab -e
0 3 * * * killall -9 mysqld
2.3.7 测试进程是否关闭
killall -0 nginx
echo $?
2.3.8 重新加载进程
killall -1 nginx
killall -s HUP nginx
2.3.9 关闭一组相关进程
例如要关闭所有名为mysql和apache的进程
killall mysql apache
  1. 有时候某个应用程序可能会启动多个进程,如果想要关闭所有这些进程,可以使用killall命令
  2. 如果某个进程崩溃了并且无法正常关闭,可以使用killall命令来杀死该进程
  3. 如果想要关闭某个用户的所有进程,可以使用killall命令
  4. 有时候多个进程可能是相互关联的,例如数据库服务和Web服务器,如果想要同时关闭它们,可以使用killall命令
  5. 有时候需要定时杀死某个进程,例如定时清理系统缓存或定时重启某个服务,可以使用定时任务结合killall命令来实现

3 pkill命令

通过进程名或其他属性来查找并杀死进程

3.1 pkill命令格式

pkill [选项] 模式

3.2 命令参数

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

3.3 pkill使用场景及实例

3.3.1 杀死所有名为nginx的进程
pkill nginx
3.3.2 杀死所有以my开头的进程
pkill '^my'
3.3.3 杀死用户moonrong的所有进程
pkill -u moonrong
3.3.4 杀死所有命令行参数中包含pattern的进程
pkill -f pattern
3.3.5 杀死进程组中的所有进程
pkill -g pgid
3.3.6 杀死最新的5个匹配进程
pkill -n 5 pattern
3.3.7 杀死与指定终端相关的所有进程
pkill -t pts/0

4 对比

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

kill命令适用于知道要杀死的进程 PID

killall命令适用于需要杀死多个同名进程时

pkill命令适用于根据不同属性杀死

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值