Linux 中关闭进程的方法

上周使用 ADB 调试手机,结果操作不当创建了一堆进程,打开任务管理器点点点太麻烦,无奈之余百度一下 Windows 如何关闭进程,结果发现 taskkill /f /t /im adb.exe 意外地好用,感觉这个 Windows 的 Powershell 还有点东西。之前在 Linux 上只会 kill -9 给跪了,于是了解了一下 Linux 中的相关操作。

Killall 使用方法

1. 命令格式

作用:结束同名的所有进程。
$ killall [argv] [process_name]

2. 常用参数

-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略大小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示

Kill 使用方法

1. 命令格式

作用:结束指定进程。
$ kill -s 9 [pid]

2. 实际用法

  1. 为进程发送信号
    $ kill -[signal] [pid]
    
  2. 查看可发送的信号
    $ kill -l
    
  3. 彻底结束进程
    $ kill -9 [pid]
    
  4. 杀死指定用户的所有进程
    # kill -9 $(ps -ef | grep cubat)
    

PKill 使用方法

1. 命令格式

作用:相当于 kill + pgrep
$ pkill [Singal] [process_name]

2. 常用参数

 -e, --echo               展示是什么进程被结束了
 -c, --count              统计匹配的进程数
 -f, --full                  匹配完整的进程名
 -g, --pgroup          按照 group id 进行匹配
 -G, --group            匹配真实 group id
 -n, --newest           选择最新启动的进程
 -o, --oldest            选择最早启动的进程
 -P, --parent           在已知的父进程中选取唯一的子进程
 -s, --session           匹配会话的 ID
 -t, --terminal          按照控制终端进行匹配
 -u, --euid               根据有效进程 ID 进行匹配
 -U, --uid                根据真实 ID 进行匹配
 -x, --exact              根据精确的 CLI 命令进行匹配
 -F, --pidfile            从文件中读取 PID
 -L, --logpidfile       PID 文件未锁则报错退出
 --ns <PID>            根据与相同命名空间的 PID 匹配进程 
 --nslist        以列表的形式展示命名空间(可用的有:ipc, mnt, net, pid, user, uts)

参考资料

评论