Відповіді:
На всіх POSIX-сумісних системах і з Linux можна використовувати ps
:
ps -p 1337 -o comm=
Тут процес вибирається за допомогою PID з -p
. The -o
параметр визначає вихідний формат, comm
що означає ім'я команди.
Дивіться також: ps
- Специфікації базової групи Open Group Випуск 6
command
замість цього виправляє.
$ ps -p 1 -o comm=
в цьому $ ps -p 1 -o command=
/ sbin / init; це означає, що це не близько 15 символів, можливо, тільки ім'я двійки проти його повного шляху.
comm
дає ім'я двійкового і command
повертає аргумент 0
Ви можете знайти ім'я процесу або команду, яка використовується ідентифікатором процесу або pid з
/proc/pid/cmdline
шляхом
cat /proc/pid/cmdline
Тут pid - це pid, для якого потрібно знайти ім'я
Наприклад:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Щоб знайти назву процесу, що використовується PID 2480, ви можете використовувати
# cat /proc/2480/cmdline
gnome-terminal
Щоб отримати шлях від програми, використовуючи певний pid, можна використовувати:
ps ax|egrep "^ [PID]"
альтернативно можна використовувати:
ps -a [PID]
ps -a
Перерахуйте всі процеси, які пов'язані з терміналом, він не приймає ніяких вхідних даних.
ps
версії, на procps version 3.2.7
працює нормально.
# ls -la /proc/ID_GOES_HERE/exe
Приклад:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
readlink /proc/1337/exe
. readlink - друкувати вирішені символічні посилання або канонічні імена файлів.
Можна використовувати pmap. Я шукаю PID 6649. І відсікання додаткових деталей процесу.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
Команда все, що ви побачите - це просто java
, але решта переданих параметрів буде відображено повністю pmap
.
Ви також можете використовувати awk у комбінації з ps
ps aux | awk '$2 == PID number for a process { print $0 }'
приклад:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
для друку HEAD LINE можна використовувати
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
ps ax | grep 1
і подивитися, чи дійсно він повертає init
процесу, наприклад. (У моєму випадку він повертає 119 рядків - не бажано.)
ps aux | awk 'NR==1 || $2==PID'
- і не потрібно говорити {print $0}
тому що це за замовчуванням. Але, як ви прокоментували, -p
все одно краще.
Схожий на Відповідь slhck , але покладаючись на файлові операції замість викликів команд:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
= & gt; init, не / sbin / init. Його відповідь має довшу версію. Але +1 все одно.
Дивно, але ніхто не згадав опцію -f (повна команда) для ps. Мені подобається використовувати його з -e (все) і пропускати результати до grep, щоб я міг звузити свій пошук.
ps -ef | grep <PID>
Це також дуже корисно для перегляду повних команд, які хтось виконує, які забирають багато ресурсів у вашій системі. Це покаже вам параметри та аргументи, передані команді.
-e -f
доступні, grep
може виробляти багато помилкових збігів, наприклад, grep 33
включає pid = 933 або 339, ppid = 33 або 933 або 339, час використання 33 секунд або 33 хвилини, або назва програми або аргумент, що містить 33 - включаючи grep
себе. Усі (AFAIK) ps
є -p
, так просто ps -fp 33
.
Я вважаю, що найпростішим методом є наступна команда:
ps -awxs | grep pid
ps -p${pid}
, це дозволить підібрати багато помилкових спрацьовувань - у тому числі grep
себе.
зробив простий скрипт, щоб знайти PID і використовувати в баш скриптах ...
використовуйте з обережністю!
Знімок екрана:
http://pastebin.com/Cm9YH67U
Андре
ps
абоls -l /proc/$PID/exe