Назад | Перейти на главную страницу

найти команду из PID

Можно ли найти командную строку запущенного процесса с его pid? выход /proc/pid/cmdline кажется, что он удаляет пробел, чтобы его было трудно прочитать.

Из: 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

ps может показать это:

ps -o cmd fp <PID>

ps могу сделать намного больше. Для информации см. man ps

Поместите этот сценарий в свой .bashrc файл и источник

$ source ~ / .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
}

Например 1 и 2 являются PID.

Кратчайший способ показать команду:

ps 1

Явный способ:

ps --pid 1 2

Показать только поле команды:

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

Документация: man ps