Можно ли найти командную строку запущенного процесса с его pid
? выход /proc/pid/cmdline
кажется, что он удаляет пробел, чтобы его было трудно прочитать.
Из: https://stackoverflow.com/questions/993452/splitting-proc-cmdline-arguments-with-spaces
cat /proc/PID/cmdline | tr '\000' ' '
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