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

如何在Shell中通过PID获取完整准确的程序名称?

通过PID获取完整未截断程序名称的正确方法

很多人会用ps -p $PID -o comm=来通过PID获取程序名称,但这个命令的结果会被截断,比如:

$ pidof transmission-daemon
1169

$ ps -p 1169 -o comm=
transmission-da

以下是几种能获取完整未截断程序名称的方法:

  • 使用ps的cmd字段:这个字段会输出完整的命令路径和名称,不会被截断

    ps -p 1169 -o cmd=
    # 输出示例:/usr/bin/transmission-daemon
    

    如果只想提取程序的basename,可以结合basename命令:

    basename $(ps -p 1169 -o cmd=)
    # 输出示例:transmission-daemon
    
  • 直接读取/proc文件系统(最可靠):

    • 读取完整命令行:/proc/$PID/cmdline存储了进程的完整命令,内容用null字符分隔,用tr转换为空格即可正常显示
      cat /proc/1169/cmdline | tr '\0' ' '
      # 输出示例:/usr/bin/transmission-daemon 
      
    • 读取程序的完整路径:/proc/$PID/exe是指向进程可执行文件的符号链接,用readlink获取路径后提取basename
      basename $(readlink /proc/1169/exe)
      # 输出示例:transmission-daemon
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:02:35