【问题标题】:Find process from executable path从可执行路径中查找进程
【发布时间】:2021-06-29 16:11:18
【问题描述】:

我希望能够找到给定进程的进程 ID,知道启动它的可执行路径(也恰好是当前目录)。

问题是可执行文件的唯一名称是不够的,因为我有多个进程以相同的名称运行。

我能想到的唯一办法就是查询每个进程的工作目录,但不知道有没有更直接的解决方案。

for pid in $(pgrep my-program)
do
  if [[ $(pwdx $pid) == $PATH_OF_EXECUTABLE ]]
  then
    echo $pid
    break
  fi
done

我还要注意我没有root权限,我只启动了我感兴趣的进程。

【问题讨论】:

    标签: linux bash process


    【解决方案1】:

    我找到了一个解决方案,虽然它不符合我的标题要求。由于我登录的用户只启动了一个进程实例(我感兴趣的那个),我可以使用pgrep -u $USER 过滤所有其他进程。

    $ pgrep -u $USER my-program
    12345
    

    【讨论】:

      最近更新 更多