You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash中如何检查特定用户是否运行了指定可执行程序的进程

解决lsof过滤特定用户进程无效的问题

问题出在lsof的参数顺序上:lsof要求过滤选项(比如-u)必须放在文件名前面,否则文件名会被优先处理,后面的过滤选项会被忽略。

你原来的命令把$(which python3)(目标文件路径)放在了-u前面,导致lsof先列出所有打开该文件的进程,完全没处理后面的用户过滤参数。

正确的命令写法

有两种可靠的方式:

  1. 把用户过滤选项放前面,用-a(逻辑与)关联文件路径,确保两个条件同时满足:
lsof -u username -a $(which python3)
  1. 如果不需要精确匹配文件路径,用-c按命令名过滤(更灵活,适配不同路径的python3):
lsof -u username -a -c python3

为什么之前加-a没用?

因为你还是把文件名放在了选项前面,lsof $(which python3) -a -u username这种写法里,lsof依然先处理文件名,-a和-u的组合不会作用到前面的文件名过滤上,必须把所有过滤选项前置,再用-a连接条件。

内容的提问来源于stack exchange,提问作者Jack1888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:48:22