搜索关键字杀一组进程

简介: 搜索关键字杀一组进程

有时候,系统里运行了一堆进程需要清理一下。

普通青年的杀法是ps aux | grep 关键字, 找到了之后,再用kill命令一个一个地杀。

这样做的效率太低了,于是在网上搜到了各种办法。各有千秋,还真挺好玩的。

cut大法

ps -ef|grep 关键字|grep -v grep|cut -c 9-15|xargs kill -9

|是管道,把管道左边的结果传给右边的命令
首先还是传统的grep ps的结果。但是这其中就有ps grep本身,所以要通过grep -v grep把带grep命令本身的过滤掉。
经过这两步,打印出来的是这样的格式:
命令是:

ps -ef|grep distcc|grep -v grep

输出结果为:

distccd   8410 20190  0 18:13 ?        00:00:00 /usr/local/bin/distccd --pid-file=/tmp/distccd.pid --log-file=/tmp/distccd.log --daemon --allow 10.0.0.0/8 --allow 100.0.0.0/8 --nice 10
distccd   8685 20190  0 18:13 ?        00:00:00 /usr/local/bin/distccd --pid-file=/tmp/distccd.pid --log-file=/tmp/distccd.log --daemon --allow 10.0.0.0/8 --allow 100.0.0.0/8 --nice 10
distccd  10103 20190  0 18:13 ?        00:00:00 /usr/local/bin/distccd --pid-file=/tmp/distccd.pid --log-file=/tmp/distccd.log --daemon --allow 10.0.0.0/8 --allow 100.0.0.0/8 --nice 10
distccd  10588 20190  0 18:14 ?        00:00:00 /usr/local/bin/distccd --pid-file=/tmp/distccd.pid --log-file=/tmp/distccd.log --daemon --allow 10.0.0.0/8 --allow 100.0.0.0/8 --nice 10
distccd  11139 20190  0 18:14 ?        00:00:00 /usr/local/bin/distccd --pid-file=/tmp/distccd.pid --log-file=/tmp/distccd.log --daemon --allow 10.0.0.0/8 --allow 100.0.0.0/8 --nice 10

接着cut命令出场,切出来第9字符到第15字符的结果,刚好是进程号这部分:

  8410 
  8685 
 10103 
 10588 
 11139 

最后,将这些进程号,通过xargs传给kill -9去杀掉。

这个方法简单粗暴,不过有点过于精确了。比如在macOS上就不灵了,因为格式不同。在我的macBookPro上,打出来的格式是这样的:

  501 12652   949   0  6:32下午 ttys003    0:00.00 -bash
  501 12691   949   0  6:33下午 ttys003    0:00.00 -bash
  501 12765   949   0  6:34下午 ttys003    0:00.00 -bash
  501 95552   949   0 五06下午 ttys003    0:00.00 -bash

要是还按9-15切,就乱套了。

awk大法

通过具体的列来切,适应性是差了点。我们有什么办法能按分隔符来取呢? 我们可以借助awk工具,awk '{print $1}'是打印第一列,awk '{print $2}'是第二列。

ps aux|grep 关键字 |grep -v grep |awk '{print $2}'|xargs kill -9

这个方法,终于在Linux和mac上都OK了。

pgrep大法

做为杀进程这么常用的功能,怎么还需要劳烦cut和awk呢,系统已经提供了pgrep命令,专搜进程号。

pgrep 关键字 | xargs kill -9

终于不用数cut哪几列,也不用知道awk的命令是什么鬼了。

pkill

不过,慢着,既然都有pgrep了,还需要麻烦xargs吗?

是的,用不着了,pgrep有个马甲叫pkill,搜到了直接杀。

pkill 关键字

pkill和killall的区别

killall可以将同名进程都杀掉,比如开了n个adb,用killall adb就杀了。但是killall需要的是全名,而pkill只要部分名字就可以了,比如用pkill ad,一样将所有adb都杀光。

目录
相关文章
|
5月前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
81 1
|
5月前
|
Linux
|
11月前
|
Linux
百度搜索:蓝易云【【Linux】进程间的通信之共享内存】
总结而言,Linux中的共享内存是一种用于进程间通信的高效机制,它允许多个进程共享同一块物理内存区域,实现数据的快速交换。通过适当的创建、连接、分离和删除操作,可以实现进程对共享内存的使用和管理。
248 7
|
安全 Linux Shell
百度搜索:蓝易云【Linux之进程掩码umask详解。】
umask是Linux系统中设置默认文件权限掩码的命令。它决定了在创建新文件或目录时各个权限位的默认值。umask值通过关闭默认权限中的特定位来提高系统安全性。umask的设置可以通过umask命令进行临时设置或在用户的shell配置文件中进行永久设置。
124 1
|
Linux Apache
百度搜索:蓝易云 ,Linux ps命令详解,Linux查看进程。
通过使用ps命令,您可以查看当前运行的进程,并获取有关进程的详细信息。根据您的需求,可以使用不同的选项来满足特定的进程查看和筛选要求。
1177 0
|
5月前
|
Linux
百度搜索:蓝易云【Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具。】
综上所述,通过使用命令行工具和图形化工具,可以在Linux系统下获取系统、BIOS、进程和网络等相关信息。根据具体的需求和使用场景,选择合适的工具和命令可以帮助你更好地了解和管理Linux系统。
95 2
|
5月前
|
网络协议 网络安全
百度搜索:蓝易云【通过netstat命令查看进程与端口的对应关系?】
通过netstat命令,你可以查看当前系统上所有的网络连接信息,并通过PID/Program name列确定与每个连接关联的进程。这对于识别占用特定端口的进程非常有用。
52 1
|
5月前
|
网络协议 Linux 调度
百度搜索:蓝易云【Linux网络、进程详解。】
综上所述,Linux网络提供了强大的网络配置和通信功能,支持TCP/IP协议栈和各种网络服务。Linux进程管理涉及进程的创建、状态管理和资源管理,以实现任务执行和进程间通信。这些概念和机制是Linux操作系统的核心组成部分,为系统的正常运行和应用程序的开发提供了基础。
79 0
|
Linux Shell
百度搜索:蓝易云【Linux系统如何控制进程?】
总之,在Linux系统中,控制进程是一个很重要的任务。以上介绍的命令和工具只是其中的一部分,掌握这些工具可以帮助管理员更好地管理系统和应用程序。
69 0
百度搜索:蓝易云【Linux系统如何控制进程?】
|
Linux 网络安全
百度搜索:蓝易云【CentOS7查看开放端口命令、查看端口占用情况和开启端口命令、杀掉进程等命令教程。】
请注意,在执行涉及系统配置和进程管理的命令时,确保你有足够的权限。同时,谨慎操作以避免对系统产生不可预见的影响。
437 0