一般我们杀死一个进程都是通过命令ps -aux | grep 进程名
返回某进程的进程号,再通过kill杀掉该进程,
但如果进程的pid一直在变化(连续被杀死重启),我们匹配到的pid在kill时已经不存在了,将导致kill失败;
还有存在多个子进程的进程,我们想同时杀死所有相关进程如果一个个操作会很麻烦。
解决方法
如何从ps aux的结果中提取pid?
我们如果想要取出其中的PID,用于之后的操作,例如kill,则首先应该使用tr命令压缩各个列之间的空格,将多个空格压缩为一个
,接着使用cut命令根据空格对列进行分割
并取出第二个位置的值,也就是PID。然后将结果输入到kill命令。如下所示:
kill $(ps aux | grep '进程名等标识' | tr -s ' '| cut -d ' ' -f 2)