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

如何获取向系统发起网页打开请求的进程的链接与PID?

如何获取发起网页打开请求的进程PID与链接

我来帮你搞定这个问题!首先得明确:当应用请求系统打开网页时,通常是通过xdg-open这类桌面工具调用你的自定义Desktop Entry,你的脚本的直接父进程是xdg-open而非发起请求的应用,所以默认拿不到源头进程信息。下面是两种可靠的解决方案:

方法1:在自定义脚本中追踪父进程链

这种方法不需要root权限,适合普通用户使用。你可以修改Desktop Entry对应的执行脚本,让它自动向上追踪进程树,排除桌面工具和环境进程,找到真正的发起者。

示例脚本

把你的Desktop Entry的Exec指向这个脚本(记得替换成你的真实浏览器路径):

#!/bin/bash
TARGET_URL="$1"
SELF_PID=$$
CURRENT_PID=$SELF_PID

# 向上遍历父进程链,排除桌面工具和环境进程
while true; do
    # 获取当前进程的父PID
    PPID=$(ps -o ppid= -p $CURRENT_PID | tr -d ' ')
    # 到达init进程(PID=1)就停止
    if [ $PPID -eq 1 ]; then
        echo "无法找到发起请求的进程"
        break
    fi
    # 获取父进程的名称和完整命令行
    PROC_NAME=$(ps -o comm= -p $PPID)
    PROC_CMD=$(ps -o cmd= -p $PPID)
    
    # 排除常见的桌面工具/环境进程(根据你的桌面环境调整)
    if [[ ! "$PROC_NAME" =~ (xdg-open|gnome-shell|plasma-desktop|xfce4-session|kwin) ]]; then
        echo "=== 发起请求的进程信息 ==="
        echo "PID: $PPID"
        echo "进程名: $PROC_NAME"
        echo "命令行: $PROC_CMD"
        echo "请求的URL: $TARGET_URL"
        break
    fi
    CURRENT_PID=$PPID
done

# 调用真实浏览器打开链接(替换成你常用的浏览器)
exec firefox "$TARGET_URL"

注意事项

  • 不同桌面环境的进程名不同,比如KDE是plasma-desktop,GNOME是gnome-shell,XFCE是xfce4-session,你需要根据自己的环境调整排除列表。
  • 给脚本添加执行权限:chmod +x /path/to/your/script.sh

方法2:用auditd监控系统调用(更准确)

如果需要更精准的追踪,尤其是要捕获所有发起网页请求的场景,可以使用auditd工具监控系统的execve调用,它能直接记录发起请求的进程PID和相关参数。

步骤

  1. 安装并启动auditd

    # Debian/Ubuntu
    sudo apt install auditd
    # Fedora/RHEL
    sudo dnf install auditd
    # 启动服务
    sudo systemctl start auditd
    sudo systemctl enable auditd
    
  2. 添加监控规则
    监控所有调用xdg-open的进程(因为应用通常通过它发起网页请求):

    sudo auditctl -a exit,always -F arch=b64 -S execve -F comm=xdg-open
    
  3. 查看监控日志
    当有应用发起网页请求时,日志会记录在/var/log/audit/audit.log中。你可以用ausearch过滤相关记录:

    sudo ausearch -x xdg-open
    

    日志中会包含以下关键信息:

    • pid: xdg-open的PID
    • ppid: 发起xdg-open的应用PID(也就是你要找的源头PID)
    • a1: 请求打开的URL参数

优缺点

  • 优点:能精准捕获所有场景,不会遗漏任何发起请求的进程。
  • 缺点:需要root权限,日志量可能较大,需要定期清理或过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:08