Show process by pid linux

If I know the PID number of a process, how can I get its name?

If I have the PID number for a process (on a UNIX machine), how can I find out the name of its associated process? What do I have to do?

@Eddy_Em that’ll give you the executable file, which isn’t always the process name. Also, that’s not portable.

11 Answers 11

On all POSIX-compliant systems, and with Linux, you can use ps :

Here, the process is selected by its PID with -p . The -o option specifies the output format, comm meaning the command name.

For the full command, not just the name of the program, use:

[Ubuntu 14.04.4 LTS] $ ps -p 1 -o comm= init $ ps -p 1 -o command= /sbin/init; which means it is not about 15 characters, maybe just the binary’s name vs. its full path.

You can find the process name or the command used by the process-id or pid from

Here pid is the pid for which you want to find the name
For example:

 # ps aux . . user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal . . 

To find the process name used by pid 2480 you use can

# cat /proc/2480/cmdline gnome-terminal 

Be careful: The OP mentions UNIX. Not all UNIXes implement the Plan 9 like process-specific file. Your answer generally only applies to Linux.

Whilst that’s true, they did tag the question «linux». Anyone who is using a non-Linux based UNIX OS will be quite used to having to modify answers to fit their needs

To get the path of of the program using a certain pid you can use:

enter image description here

alternatively you can use:

You can use pmap. I am searching for PID 6649. And cutting off the extra process details.

$ pmap 6649 | head -1 6649: /usr/lib64/firefox/firefox 

This command helped me more than I needed, I have the full line of the process that started. Given a Java process, with the ps command all you’ll see is just java , but the rest of parameters passed will be displayed fully with pmap .

# 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 

Probably better: readlink /proc/1337/exe . readlink — print resolved symbolic links or canonical file names.

Some one commented on the question that the executable name is not always the process name, e.g. gunicorn or nginx. Some processes will change it at runtime with setprocname

You can Also use awk in combination with 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 

to print HEAD LINE you can use

 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 

This is unstable since it’d also select processes that happen to include the number anywhere in their command. Try ps ax | grep 1 and see whether it really returns the init process, for example. (In my case, it returns 119 lines—not desirable.)

Читайте также:  Установка run alt linux

We don’t need two runs to retain headers, instead use ps aux | awk ‘NR==1 || $2==PID’ — and don’t need to say because it’s the default. But as you commented, -p is better anyway.

Simmilar to slhck’s Answer, but relying on file operations instead of command invocations:

[Ubuntu 14.04.4 LTS] cat /proc/1/comm => init, not /sbin/init. His answer has the longer version included. But +1 anyway.

Surprisingly, no one has mentioned the -f (full command) option for ps. I like to use it with -e (everything) and pipe the results to grep so I can narrow my search.

This is also very useful for looking at full commands that someone is running that are taking a lot of resources on your system. This will show you the options and arguments passed to the command.

Источник

Работа с процессами в Linux

Обновлено

Обновлено: 29.03.2023 Опубликовано: 09.11.2017

Список процессов

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 661 0.0 0.0 4072 8 tty1 Ss+ Jul03 0:00 /sbin/mingetty
root 662 0.0 0.0 4072 8 tty2 Ss+ Jul03 0:00 /sbin/mingetty
root 16355 0.0 0.0 171636 3308 pts/0 S 15:46 0:00 sudo su
root 16366 0.0 0.0 140896 1556 pts/0 S 15:46 0:00 su
root 16368 0.0 0.0 108316 1944 pts/0 S 15:46 0:00 bash
root 18830 0.0 0.0 110244 1172 pts/0 R+ 16:20 0:00 ps u

  • USER — учетная запись пользователя, от которой запущен процесс.
  • PID — идентификатор процесса.
  • %CPU — потребление процессорного времени в процентном эквиваленте.
  • %MEM — использование памяти в процентах.
  • VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
  • RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
  • TTY — терминал, из под которого был запущен процесс.
  • STAT — текущее состояние процесса. Могут принимать значения:
    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < —высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.

Ключи

Ключ Описание
-A Все процессы.
-a Запущенные в текущем терминале, кроме главных системных.
-d Все, кроме главных системных процессов сеанса.
-e Все процессы.
f Показать дерево процессов с родителями.
T Все на конкретном терминале.
a Все, связанные с текущим терминалом и терминалами других пользователей.
r Список только работающих процессов.
x Отсоединённые от терминала.
u Показать пользователей, запустивших процесс.
Читайте также:  Linux проверить версию oracle

Примеры

Поиск процесса с помощью grep:

Убить процесс

Останавливаем процесс по его PID:

Если процесс не завершается, убиваем его принудительно:

Остановить все процессы с именем nginx:

Как и в случае с kill, можно это сделать принудительно:

Можно остановить все процессы конкретного пользователя:

Ищем процесс по имени, извлекаем его PID и завершаем его:

kill `ps aux | grep ‘apache’ | awk »`

* обратите внимание, что запрос может вывести несколько процессов, которые будут попадать под критерии поиска — в таком случае, они будут завершены все.

Подробная информация о процессе

Для каждого процесса создается каталог по пути /proc/ , в котором создаются папки и файлы с описанием процесса.

Примеры использования /proc/

Адрес в ячейках оперативной памяти, которые занял процесс:

Команда, которой был запущен процесс:

Символьная ссылка на рабочий каталог процесса:

Символьная ссылка на исполняемый файл, запустивший процесс:

Увидеть ссылки на дескрипторы открытых файлов, которые затрагивает процесс:

Подробное описание на сайте man7.org.

Потребление ресурсов процессами

Для просмотра статистики потребления ресурсов используем утилиту top:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21059 root 20 0 157884 2280 1496 R 18,8 0,1 0:00.03 top
1 root 20 0 190996 2964 1652 S 0,0 0,1 6:49.99 systemd
2 root 20 0 0 0 0 S 0,0 0,0 0:01.78 kthreadd
3 root 20 0 0 0 0 S 0,0 0,0 0:24.75 ksoftirqd/0
5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/0:0H

  • PID — идентификатор процесса.
  • USER — имя учетной записи, от которой запущен процесс.
  • PR — приоритет процесса.
  • NI — приоритет, выставленной командой nice.
  • VIRT — объем виртуальной памяти, потребляемый процессом.
  • RES — объем используемой оперативной памяти.
  • SHR — количество разделяемой памяти, которое используется процессом.
  • S — состояние процесса.
  • %CPU — процент использования процессорного времени.
  • %MEM — потребление оперативной памяти в процентах.
  • TIME — использование процессорного времени в секундах.
  • COMMAND — команда, которая запустила процесс.

Источник

How to get process details from its PID

I have maintained a list of PIDs of processes currently running on my system (Linux). From this, now it would be great if I could get the process details from this PID. I have come over syscall.Getrusage() in Go, but I am not getting the desired results. What should I do?

for input 0x0 and 0x1 it is giving me some struct and i feel that this function can’t be used to get process details and is for exclusive use by the one who started a process the problem with below code By peterSO is when i am reading process details of each pids i am getting for few processes no such dir exists as it may not present as process might have been killed completed its task.

7 Answers 7

This might not be exactly what the asker wanted (there’s not much clear info on what type of details are required for each process id), but you can get some details of a task by its pid using the BASH command ps -p $PID (ps being short for process status)

With default options as ps -p $PID this returns:

  • PID: echos the process id
  • TTY: the name of the controlling terminal (if any)
  • TIME: how much CPU time the has process used since execution (e.g. 00:00:02)
  • CMD: the command that called the process (e.g. java )
Читайте также:  Мультизагрузочная флешка win linux

More information about this process id can be shown using the -o options flag. For a list, see this documentation page.

Here’s one example that tells you a particular process PID’s full command with arguments, user, group and memory usage (note how the multiple -o flags each take a pair, and how the command outputs with lots of whitespace padding):

ps -p $PID -o pid,vsz=MEMORY -o user,group=GROUP -o comm,args=ARGS 

Tip: for human-read output in the console, make args the last option — it’ll usually be the longest and might get cut short otherwise.

Источник

How to see detailed information about a given PID?

The headline basically says it all. I have a program where I am only given the PID, nothing more really, and I would like to know how I get more information about the given process.

If you are working in python you probably want to use the psutil library. Do: psutil.Process(pid) to obtain the process object and then use its interface to retrieve information about memory/cpu etc. etc.

3 Answers 3

will show you some information. See the ps manpage for more information about the ps command. The «STANDARD FORMAT SPECIFIERS» section explains what the different columns mean.

I don’t know what is your exact requirement. but this may help you.

There is separate directory for every process with name as pid number in /proc .

ps -ef | grep docker root 1700 1 0 Sep20 ? 00:03:04 /usr/bin/docker daemon --raw-logs 

In above output PID is 1700 .

ls attr clear_refs cpuset fd limits mem net oom_score projid_map sessionid stat task autogroup cmdline cwd fdinfo loginuid mountinfo ns oom_score_adj root setgroups statm timers auxv comm environ gid_map map_files mounts numa_maps pagemap sched smaps status uid_map cgroup coredump_filter exe io maps mountstats oom_adj personality schedstat stack syscall wchan 

there is many file that have all information about process.

cat /proc/1700/status Name: docker State: S (sleeping) Tgid: 1700 Ngid: 0 Pid: 1700 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: 0 999 VmPeak: 527576 kB VmSize: 527512 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 46032 kB VmRSS: 34180 kB VmData: 449308 kB VmStk: 136 kB VmExe: 28324 kB VmLib: 4236 kB VmPTE: 296 kB VmSwap: 5324 kB Threads: 12 SigQ: 0/63662 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000000 SigCgt: ffffffffffc1feff CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff Seccomp: 0 Cpus_allowed: f Cpus_allowed_list: 0-3 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 437726 nonvoluntary_ctxt_switches: 27579 

If you need basic command to get process information then you can easily get using command:

Источник

Оцените статью
Adblock
detector