从 PID 查找命令

从 PID 查找命令

是否可以使用 ? 来找到正在运行的进程的命令行pid? 的输出/proc/${PID}/cmdline似乎删除了空格字符,因此很难读取输出。

答案1

从:https://stackoverflow.com/questions/993452/splitting-proc-cmdline-arguments-with-spaces

  1. cat /proc/${PID}/cmdline | tr '\000' ' '

  2. cat /proc/${PID}/cmdline | xargs -0 echo

答案2

ps可以显示这一点:

ps -o cmd fp <PID>

ps可以做更多。有关信息,请参阅man ps

答案3

例如12是 PID。

显示命令的最短方式:

ps 1

明确的方式:

ps --pid 1 2

仅显示命令字段:

ps -o cmd 1
ps -o cmd --pid 1 2

文档:man ps

答案4

将此脚本放入您的.bashrc文件并获取它

$ 源 ~/.bashrc

您可以使用命令调用它$pid它将 PID 作为命令行参数并提供进程名称、用户(进程所有者)作为输出,例如:

$ pid 1 2 3 4 5 6 7 8 9 10
PID=1  Command=systemd  User=root
PID=2  Command=kthreadd  User=root
PID=3  Command=ksoftirqd/0  User=root
PID=5  Command=kworker/0:0H  User=root
PID=7  Command=rcu_sched  User=root
PID=8  Command=rcu_bh  User=root
PID=9  Command=migration/0  User=root
PID=10  Command=watchdog/0  User=root

脚本:

function pid(){
        if [[ $# > 0 ]]
        then
                for i in $@
                do
                        ps -e -o pid,comm,user | awk '{print "PID="$1, " Command="$2," User="$3}'| egrep --color "^PID=$i\W"
                done
        else
                echo "Syntax: pid <pid number> [<pid number>]"
        fi
}

相关内容