Поиск pid процесса linux

Как найти PID процесса Linux с помощью pidof или pgrep

Описание: Чтобы узнать идентификатор процесса Linux, используйте команду pidof, например: pidof examplename. Если вы знаете только часть имени PID, вы можете вместо этого использовать «pgrep examplenamefragment». Замените «examplename» и «examplenamefragment» словами, которые вы хотите найти.

Работа с процессом Linux часто означает знание его идентификатора процесса или PID. Это уникальный номер, присваиваемый каждому работающему программному обеспечению. Вот два способа узнать, что это такое.

Что такое идентификатор процесса Linux?

Внутри Linux отслеживает свои запущенные процессы, присваивая им уникальный идентификационный номер, называемый идентификатором процесса или PID. Каждое запущенное приложение, утилита и демон имеют PID.

PID — это простые целочисленные значения. Вновь запущенный процесс получит PID на единицу больше, чем последний выданный PID. Таким образом, процесс с наивысшим PID является самым новым, т. е. самым последним запущенным процессом. Это продолжается до тех пор, пока система не достигнет максимального значения PID.

Верхний предел для PID равен 32768. Как только эта цифра достигнута, Linux возвращается к началу и ищет PID, который стал свободным, потому что процесс, который ранее им владел, завершился.

Процесс с PID 1 — это первый процесс, который запускается при запуске Linux процессами загрузки. В системах на основе systemd это будет systemd . В других системах это, скорее всего, init , хотя в некоторых дистрибутивах Linux используются альтернативы, такие как OpenRc или s6.

Иногда бывает полезно узнать PID процесса, обычно потому, что вы хотите выполнить какое-то действие над этим процессом. Вот два разных способа найти PID процесса, когда вы знаете имя процесса.

Как получить PID Linux с помощью команды pidof

Команду pidof можно рассматривать как комбинацию «PID» и «of». Это все равно, что спросить, какой у этого процесса PID? Если мы используем команду без параметров, она ничего не делает. Он молча возвращает вас в командную строку. Нам нужно указать имя процесса.

pidof сообщает нам, что PID оболочки Bash равен 8304. Мы можем проверить это с помощью команды ps . Все, что нам нужно сделать, это вызвать ps без параметров. Он сообщит о процессах, запущенных в текущем сеансе.

Поскольку ps сообщает обо всех процессах, которые он может найти, включая самого себя, он сообщает нам, что запущен процесс bash и процесс ps . Как и следовало ожидать, процесс bash имеет тот же PID, о котором сообщил pidof .

Если у вас открыто более одного окна терминала, pidof сообщит обо всех них.

Обратите внимание, что идентификаторы PID перечислены от самого высокого к самому низкому или, другими словами, от самого последнего к самому старому.

Чего это не показывает, так это того, что вы не можете быть владельцем всех этих процессов. pidof находит все процессы с совпадающими именами, независимо от того, кому они принадлежат. Давайте посмотрим глубже, направив вывод в grep . Мы используем параметры -e (выбрать все процессы) и -f (полный список) с параметрами ps .

Два процесса bash принадлежат пользователю dave, третий — пользователю mary.

Иногда одно приложение генерирует множество процессов, каждый из которых получает свой PID. Это то, что мы получаем с Google Chrome.

Читайте также:  Quartus jtag server linux

По умолчанию pidof сообщает обо всех процессах. Если мы хотим, мы можем запросить только самый последний из этих процессов. Опция -s (одиночный выстрел) делает именно это.

Использовать команду kill для ручного уничтожения всех процессов chrome было бы утомительно. Если мы захватим список процессов в переменную, мы сможем передать эту переменную команде kill . Команда kill может принимать несколько PID в своей команде, поэтому она с радостью принимает наш ввод и уничтожает все процессы для нас.

Первая команда собирает вывод из pidof и присваивает его нашей переменной, которую мы называем pid . Нам не нужно echo выводить его на экран, мы просто делаем это, чтобы показать, что содержит наша переменная.

Мы передаем переменную команде kill , затем снова используем pidof , чтобы проверить, остались ли какие-либо процессы Chrome. Все они были убиты.

Одной из особенностей pidof является то, что он не возвращает PID сценария оболочки. Он возвращает PID оболочки bash , на которой запущен скрипт. Чтобы увидеть оболочку, в которой запущен скрипт, нам нужно использовать параметр -x (скрипты).

pidof возвращает PID оболочки bash, а ps показывает, что запущены две оболочки. Одна — это оболочка, выполняющая команду pidof , а другая — оболочка, выполняющая сценарий.

Как найти PID с помощью команды pgrep в Linux

Команда pgrep немного похожа на pidof при получении идентификаторов процессов в Linux. Однако он не только находит процессы, точно соответствующие ключу поиска, но также возвращает PID любых процессов, имя которых содержит искомый текст.

Вот пример на компьютере, на котором запущен Firefox.

Все эти команды находят процесс Firefox и возвращают PID. Но если бы вы ввели команду:

Само по себе, как бы вы узнали, что pgrep нашел Firefox, а не, скажем, демона по имени preformd?

Если вы добавите параметр -l (имя списка), pgrep отобразит имя процесса рядом с PID.

Если существует несколько экземпляров совпадающего процесса, они все перечислены.

Обратите внимание, что они перечислены в порядке возрастания, что противоположно выходным данным pidof . Они перечислены от самого старого процесса к самому новому процессу. Как мы видели на примере pidof , не все перечисленные процессы обязательно принадлежат вам.

Параметр -u (идентификатор пользователя) позволяет вам искать процессы, соответствующие искомому тексту и принадлежащие указанному пользователю.

На этот раз мы видим в результатах три bash-процесса. Другой используется mary .

Мы можем объединить имена пользователей в виде списка, разделенного запятыми.

И мы можем попросить посмотреть все процессы для конкретного пользователя.

Чтобы увидеть полную командную строку, используйте параметр -a (полный список).

Несколько слов о владении PID

Не все системные процессы принадлежат пользователю root. Многие, конечно, но не все. Например, эта команда работает:

Но эта команда не работает.

Это не удается, потому что root не владеет этим процессом. Фактический владелец — системный пользователь по имени «avahi». При использовании правильного имени пользователя команда работает.

pgrep -u avahi avahi-daemon

Это небольшая проблема, на которую стоит обратить внимание.

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld
Читайте также:  Can mount usb drive linux

RELATED: Best Linux Laptops for Developers and Enthusiasts

Источник

How to Find the Process ID of a Program and Kill it in Linux

This tutorial teaches you to kill a process in Linux using both its process id and GUI method. This is particularly helpful in killing unresponsive programs.

You can easily stop a program in Linux terminal by pressing the Ctrl+C keys. But you often need to ‘kill’ an unresponsive program. In Windows, you have the task manager for this situation. In Linux, you can kill a process using the command line or GUI task managers. Using the command line is easier. All you have to do is:

  • Finding the PID and killing a running process in the command line
  • Using the top command to find and kill a process
  • Using task managers in Linux desktop to terminate a running process

Let’s start with the command line first.

Method 1: Terminate a process using the kill command

To kill a process, you must know its process ID (PID). The following section tells you how to find the process ID of a program.

Step 1: Find the PID of a process

If you know the name of the process, you can use the command pidof in this fashion:

You can take the help of the tab completion to find the program’s name. The good thing about this command is that it will give the PIDs of all the processes initiated by the program. Here’s an example:

[email protected]:~$ pidof firefox 8980 8871 8821 7228 3796 3742 3741 3590 3381 3355 3085

Finding process ID of a program

If the pidof command doesn’t result in anything, it could mean either there is no process running of that program or the program name you used is incorrect.

You can try the ps command if unaware of the exact program name. This ps command is used for seeing the running processes on the system. You can use the grep command with the program name (or whatever you remember about it).

ps aux | grep -i “name of your desired program” 

The ps aux command returns all the running processes on the system. And the grep afterward shows the line which matches the program name. The output of the command will be like this:

Читайте также:  Linux kernel version linux mint

Find the PID of a process in Linux with ps command

As shown in the picture above, you can get the process ID of the program/process in the second column. Just ignore the line with “–color =auto”.

Step 2: Kill the process using the PID

Once you have the PID of the desired application, use the following command to kill the process immediately:

Here’s an example where I terminate a running instance of the Nautilus file manager. As you can see, Nautilus was no longer running after it was killed. The grep —color=auto -i nautilus is just the grep command running for nautilus search.

Killing process in Linux command line

You can also use the kill command without option -9. Then it requests the process to terminate. With -9 option, it force kills the process immediately. Read more on sigterm and sigkill.

If you have more than one process id, you can kill them together by providing all the PIDs.

sudo kill -9 process_id_1 process_id_2 process_id_3

You can also combine the kill command and the pidof command to kill all the processes of a program.

sudo kill -9 `pidof programe_name`

Of course, you have to replace the program_name with the name of the program you want to kill.

Knowing the program’s name, you can use the magnificent killall command and kill all processes in one single command killall program_name

Method 2: Kill a process using the top command

The top command is one of the popular commands, which is pre-installed on almost all Linux distributions. It is a powerful task management tool. To use it to kill a process, first open the top by entering:

This will open Top and list all the running processes:

top command

Inside the top command, press Shift+L. this will open a “Locate string” prompt, where we can search for the process by name. Once you have located the process that needs to be terminated, press the k key on the keyboard.

Now enter the process ID of the program.

Locate the process and kill using to command

This way, you can terminate any process using the top command. You can also use other system monitoring commands like htop for finding and terminating processes.

Method 3: Killing a process in Linux via GUI

If you are using a Linux desktop, you don’t necessarily have to use the terminal.

There is a task manager in every Linux distribution. It’s usually called a system monitor.

This system monitor is part of the desktop environment. GNOME, KDE, and Cinnamon, all of them have a system monitor. Just look for them in the system menu.

I’ll be demonstrating the GNOME system monitor here.

The default page lists all the running processes. You can kill a process by clicking on it and pressing the End Process button. Or you can right-click on the process and select Kill/End from the context menu.

Search and kill a process using GNOME system monitor

Also, you can note that the process tab lists the process ID of the respective program.

You may also use various third-party tools like Stacer.

What next?

If you are interested in learning more about this topic, I suggest getting familiar with various termination signals.

The ps command is also quite versatile. Learning its usage will be helpful as well.

So, you learned the command line and GUI methods of terminating a running process in Linux.

The command line method is evergreen and you can use it on any Linux distribution, desktop, or server.

Now it’s your turn. Do you prefer the command line method or the GUI tools?

Источник

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