如何在终端管道中用xargs配合sudo权限批量杀死指定进程?
解决sudo批量杀进程的权限问题
直接把sudo加到kill前面,让xargs把PID传递给带sudo的kill命令即可,修正后的命令:
ps -aux | rg "some_procs" | awk '{print $2}' | xargs sudo kill -9
为什么之前的写法无效?
- 若写成
sudo ps -aux | ... | xargs kill -9:仅ps用了sudo权限,但最终执行kill的还是当前普通用户,依然会权限不足。 - 若写成
... | sudo xargs kill -9:sudo仅赋予了xargs进程权限,kill依然以当前用户身份运行,无法解决权限问题。
额外提示:避免误杀过滤进程
如果不想误杀rg、awk这类用于过滤的进程,可以在管道中添加排除步骤:
ps -aux | rg "some_procs" | rg -v "rg|awk" | awk '{print $2}' | xargs sudo kill -9
如果需要查看只有root才能看到的进程,也可以让ps运行在sudo权限下:
sudo ps -aux | rg "some_procs" | rg -v "rg|awk" | awk '{print $2}' | xargs sudo kill -9
内容的提问来源于stack exchange,提问作者Yun7k
相关产品推荐
相关产品推荐

