Как посмотреть запущенные процессы в linux
Перейти к содержимому

Как посмотреть запущенные процессы в linux

  • автор:

Процессы в Linux

Для того чтобы эффективно управлять своим компьютером, вы должны доскональ­ но изучить свой сервер и работающие на нем процессы. Это поможет быстро уви­деть в системе какие-либо аномалии.

Процесс — это программа или ее потомок. При запуске программы создается но­вый процесс, в котором и работает код. Каждая программа функционирует с опре­деленными правами. Сервисы, которые активизируются при старте системы, обла­ дают правами root или nobody (без прав). Программы, которые выполняются из ко­мандной строки, наделены правами запустившего их пользователя, если не указан SUID- или SGID-бит, при котором программа имеет права владельца.

Процессы могут работать в двух режимах: фоновом (background) и центральном (foreground). Центральный режим для каждого терминала имеет только один про­цесс. Например, запустив по команде man ls программу для просмотра помощи, вы не сможете выполнять другие команды, пока не выйдете из программы man. Если ни один центральный процесс в терминале не запущен, то им является интерпретатор команд.

Cмена режима

Фоновыми процессами являются все сервисы. Они выполняют свои действия па­раллельно с вашей работой. Но и вы можете запустить любую программу в фоно­вом режиме. Для этого достаточно после указания команды через пробел поставить знак &. Например, выполните сейчас следующую команду:

В ответ на это вы не увидите файла помощи, а на экране появится только строка:

[1] 2802

После этого терминал снова готов работать, потому что центральный процесс запустил команду man is в фоновом режиме и свободен для выполнения новых ди­ректив.

В квадратных скобках пока­зан порядковый номер фонового процесса, который мы запустили. Номера будут последовательно увеличиваться. В нашем случае это первая команда, поэтомув квадратных скобках стоит единица. Номер фонового процесса формируется для каждого пользователя. Если войти в систему через второй терминал и запустить какой-либо фоновый процесс, то вы увидите примерно следующее:

[1] 2805

В квадратных скобках опять число 1, а вот следующее значение отличается от вы­веденного на первом терминале. Это PID (Process ID, идентификатор процесса) созданного процесса, который является уникальным для всех пользователей.

Чтобы узнать, какие процессы у вас запущены, выполните команду jobs. В ответ на это вы получите:

[1] + Stopped man ls

Здесь мы видим, что процесс с номером [1] загружен в память, и состояние коман­ды man is — Stopped (остановлен).

Какой смысл в том, что мы отправили просмотр файла помощи в фоновый режим? Я не зря выбрал эту команду, потому что в этом есть резон. Вы в любой момент можете сделать фоновый режим основным. Для этого необходимо ввести команду fg %1, где число 1 указывает номер вашего процесса, который вы видели в квадрат­ных скобках. Попробуйте сейчас выполнить эту команду, и перед вами откроетсязапущенная программа man, отображающая файл помощи по использованию коман­ды Is.

Раз процесс можно сделать центральным, значит, можно поступить и наоборот. Что­бы вернуть процесс в фоновый режим, нажмите комбинацию клавиш * + * — перед вами снова появится командная строка. Выполните команду *jobs*, чтобы убе­диться, что команда *man ls* все еще работает.

Если в программе есть возможность выполнять системные команды, то вместо со­четания клавиш * + * можно выполнить команду *bg %1*. Число 1 — это сно­ва номер процесса.

Остановка процессов

Чтобы прекратить работающий процесс, необходимо сделать его центральным и остановить штатными средствами. Чаще всего на экране есть подсказка, которая поможет выйти из программы. Если она отсутствует, то следует обратиться к до­кументации ИЛИ просмотреть файл ПОМОЩИ, ВЫЗВаВ: man имя программы.

Сервисы могут работать только в фоне и не могут быть выведены на передний план. Для того чтобы их остановить, существуют специализированные команды, которые чаще всего имеют вид:

Иногда процессы зависают. Да, такие ситуации бывают и в ОС Linux. Центральный процесс может быть снят с помощью комбинации клавиш * + * или * +
*. Но этот метод срабатывает не во всех случаях и не для всех про­грамм. Если не удается завершить процесс по-хорошему, то можно поступить ина­че. Для этого существует команда kill. Чтобы отключить процесс по личному идентификатору (тому, что мы видели в квадратных скобках), используйте команду *kill* (Убить):

Параметр n нужно заменить номером процесса. Например, чтобы завершить работу фоновой программы man, нужно выполнить:

Затем сразу же запустите команду jobs. Вы должны увидеть на экране сообщение типа:

[1] + Terminated man ls

После повторного вызова команды jobs программы man больше не будет.

Если вы хотите завершить работу процесса, который запущен не вами, но вы знаете его PID, то нужно выполнить команду:

Знак процента в этом случае не нужен. Тогда команда kill ищет процесс, у которо­го PID равен указанному числу n, и посылает сигнал для завершения.

Просмотр процессов

С помощью команды jobs вы можете увидеть только запущенные вами процессы. Чтобы полюбопытствовать, чем в системе занимаются остальные пользователи, нужно выполнить команду ps.

Перед нами появится четыре колонки, которые показывают идентификатор процесса, терми­нал, на котором запущена программа, время работы и выполняемую команду.

Это далеко не полный список. Чтобы увидеть все процессы, необходимо выполнить команду ps с ключом -а. Но и это еще не будет весь перечень, потому что отобра­зятся только программы своего терминала. Если требуется полный список процес­сов, запущенных со всех терминалов, то нужно добавить ключ -х. Помимо этого, вы можете пожелать увидеть имя пользователя, под которым работает процесс, для этого добавьте ключ -u. В итоге исчерпывающую информацию можно получить, выполнив команду:

Результат работы будет таков:

  • s (Sleeping) — спящий, это нормальное состояние для сервисов, которые просы­ паются только на редкие запросы клиентов;
  • r (Runnable) — исполняемый в текущий момент;
  • т (Traced or Stopped) — в состоянии отладки или остановлен;
  • z (Zombied) — зависший. Такие процессы можно смело «убивать»;
  • w — не имеет резидентных страниц;
  • < — обладает высоким приоритетом;
  • N — имеет низкий приоритет.

Это основные состояния, которые вы можете увидеть у процессов в своей системе.

Если в колонке Tty стоит вопросительный знак, то это означает, что процесс запу­щен еще на этапе загрузки системы и не принадлежит какому-либо терминалу.

Здесь показан всего лишь небольшой фрагмент файла. В реально работающей сис­теме процессов очень много, и даже при минимальном количестве запущенных сервисов может не хватить одного экрана для отображения их всех. Я люблю со­хранять результат работы в текстовый файл, а потом спокойно изучать его в любом редакторе. Для этого я выполняю команду:

Чтобы увидеть, чем в настоящий момент занимаются другие пользователи, можно выполнить команду w.

Очень удобно опре­делять по списку, когда пользователь вошел в систему (колонка login@ ) и что он делает в настоящее время (колонка what).

Посмотрите на столбцы Jcpu и Pcpu — по ним можно оценить загрузку системы. Если ваш компьютер начал работать слишком медленно, то эти столбцы покажут, какой процесс отнимает много процессорного времени.

Команда ps выводит статическую информацию. Для наблюдения за нагрузкой сис­темы удобнее использовать команду top. Она отображает список процессов, отсор­тированный по убыванию в зависимости от нагрузки. Здесь вы мржете увидеть, какой сервис или программа отнимают драгоценные ресурсы и не дают нормально работать с компьютером.

«Зомби»: поиск и устранение

Итак, у меня скрипты работают в постоянном режиме и создают новые процессы (дочерние), которые выполняют какие-то работы. Иногда бывает так, что дочерний процесс завершил свою работу, а родительский не видит этого и считает, что дочерний все еще работает. В системе образуются как бы «зомби» — которые не видят, что «тело уже умерло», и продолжают «дышать» и использовать ресурсы.

У меня все родительские процессы записывают себя в журнал в основном скрипте. Я знаю их ID, но не знаю, какой именно из дочерних завис или превратился в «зом­би». Команда ps далеко не всегда показывает правильно такие проблемы.

В таких случаях я выполняю команду:

Эта команда выводит подробную информацию о выполняющихся сейчас процессах:

Самыми важными здесь являются вторая и третья колонки: PID (process ID) и PPID (parent process ID). Во второй строке в колонке PPID записано 702. Это значит, что процесс в этой строке является дочерним для процесса с PID, равным 702. Этот процесс можно увидеть в первой строке. Третья строка является дочерней для вто­рой. То есть третий процесс — самый низший в иерархии.

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

Здесь вы видите две команды, разделенные вертикальной чертой. Первая команда слева:

показывает подробную информацию о всех процессах. Вторая:

фильтрует вывод. И при этом показывает на экране только те строки, в которых есть текст ххх. В качестве этого ххх нужно указать ID родительского процесса.

Таким путем я иду от родительского процесса к дочерним и ищу самый последний из них. Когда нахожу последний, его и «убиваю» командой kill. Если не помогает, то «убиваю» предпоследний. Очень часто «убийство» последнего процесса не по­ могает, потому что он обычно уже реально не работает, а просто висит как фантом. А вот когда я «убиваю» предпоследний, то это видит вся цепочка дерева иерархии процессов.

How to List Running Processes in Linux

Each application you use or a command you run on your Linux system creates a process or task. As a system administrator, you will need to manage processes to ensure optimal system performance.

In this tutorial, we will cover different Linux commands you can use to list and manage currently running processes.

How to list running processes in Linux

  • A system running Linux
  • An account with root or sudo privileges
  • Access to the terminal window/command line

Processes in Linux

Processes in Linux start every time you launch an application or run a command. While each command creates one process, applications create and run multiple processes for different tasks.

By default, each new process starts as a foreground process. This means it must finish before a new process can begin. Running processes in the background allows you to perform other tasks at the same time.

Note: Learn more about terminating Linux processes in our guide to killing processes in Linux.

List Running Processes in Linux

To list currently running processes, use the ps , top , htop , and atop Linux commands. You can also combine the ps command with the pgrep command to identify individual processes.

List Running Processes in Linux by Using the ps Command

The ps Linux command creates a snapshot of currently running processes. Unlike the other commands on this list, ps presents the output as a static list, not updated in real time.

The ps command uses the following syntax:

Frequently used ps command options include:

  • a : List all ruining processes for all users.
  • -A, -e : List all processes on the system.
  • -a : List all processes except session leaders (instances where the process ID is the same as the session ID) and processes not associated with a terminal.
  • -d : List all processes except session leaders.
  • —deselect, -N : List all processes except those that fulfill a user-defined condition.
  • f : Displays process hierarchy as ASCII art.
  • -j : Displays output in the jobs format.
  • T : List all processes associated with this terminal.
  • r : Only list running processes.
  • u : Expand the output to include additional information, for example, CPU and memory usage.
  • -u : Define a user whose processes you want to list.
  • x : Include processes without a TTY.

Note: Check the complete list of ps command options by using man ps .

Running the ps command without any options produces an output similar to:

Running the ps command without any options

The default output includes the following categories:

  • PID: Process identification number.
  • TTY: The type of terminal the process is running on.
  • TIME: Total amount of CPU usage.
  • CMD: The name of the command that started the process.

Using the combination of a , u , and x options results in a more detailed output:

Using the aux options to expand the output of the ps command

The new categories of the expanded output include:

  • USER: The name of the user running the process.
  • %CPU: The CPU usage percentage.
  • %MEM: The memory usage percentage.
  • VSZ: Total virtual memory used by the process, in kilobytes.
  • RSS: Resident set size, the portion of RAM occupied by the process.
  • STAT: The current process state.
  • START: The time the process was started.

To display the running processes in a hierarchical view, enter:

Displaying the running processes as a hierarchy tree using the ps command

Note: When using more than one ps command option containing a dash symbol (««), you only need to use one dash symbol before listing the options. For instance, to use the ps command with the -e and -f options, type ps -ef .

Filter the list of processes by user with:

For example, showing a list of processes started by the user called phoenixnap:

Filtering the ps command output by user

List Running Processes in Linux by Using the top Command

The top command displays the list of running processes in the order of decreasing CPU usage. This means that the most resource-heavy processes appear at the top of the list:

Linux top command output

The output of the top command updates in real time, with the three-second default refresh rate. The top command output contains the following categories:

  • PID: Process identification number.
  • USER: The name of the user running the process.
  • PR: The scheduling priority for the process.
  • NI: The nice value of the process, with negative numbers indicating higher priority.
  • VIRT: The virtual memory amount used by the process.
  • RES: The resident (physical) memory amount used by the process.
  • SHR: The total shared memory used by the process.
  • S: The status of the process — R (running) or S (sleeping).
  • %CPU: The percentage of CPU usage.
  • %MEM: The memory usage percentage.
  • TIME+: Total CPU usage amount.
  • COMMAND: The name of the command that started the process.

While the top command is running, use the following options to interact with it or change the output format:

  • c: Display the absolute process path.
  • d: Change the output refresh rate to a user-defined value (in seconds).
  • h: Display the help window.
  • k: Kill a process by providing the PID.
  • M: Sort the list by memory usage.
  • N: Sort the list by PID.
  • r: Change the nice value (priority) of a process by providing the PID.
  • z: Change the output color to highlight running processes.
  • q: Quit the command interface.

Note: Options for interacting with the top command are case-sensitive. Make sure you turn the Caps Lock off first.

List Running Processes in Linux by Using the htop Command

The htop command offers the same output as the top command but in an easier-to-understand and user-friendly way.

Since most Linux distributions don’t include this command, install it with:

Using the htop command provides the following output:

Linux htop command output

Use the following keys to interact with the htop command:

  • Directional keys: Scroll the process list vertically and horizontally.
  • F1: Open the help window.
  • F2: Open the htop command setup.
  • F3: Search for a process by typing the name.
  • F4: Filter the process list by name.
  • F5: Switch between showing the process hierarchy as a sorted list or a tree.
  • F6: Sort processes by columns.
  • F7: Decrease the nice value (increase priority) of a process.
  • F8: Increase the nice value (decrease priority) of a process.
  • F9: Kill the selected process.
  • F10: Exit the command interface.

List Running Processes in Linux by Using the atop Command

The atop command provides a more comprehensive overview of the running processes compared to the top command. Start by installing the atop command with:

The atop command creates an output similar to:

Linux atop command output

The heading section of the command output provides an overview of system resources, including process and performance-related statistics and memory, disk, and network usage.

The lower section lists currently running processes and contains the following categories:

  • PID: Process identification number.
  • SYSCPU: The CPU usage by the process while system handling.
  • USRCPU: The CPU usage by the process while running in user mode.
  • VGROW: The amount of virtual memory the process has occupied since the last output update.
  • RGROW: The amount of physical memory the process has occupied since the last output update.
  • RUID: The real user ID of the user that started the process.
  • ST: The current process status.
  • EXC: The exit code after the process terminates.
  • THR: The number of threads the process is using.
  • S: The current status of the primary thread of the process.
  • CPUNR: The number of CPUs used by the process.
  • CPU: The CPU percentage used by the process.
  • CMD: The name of the command that started the process.

Using the atop command with the following options changes the output format:

  • -a : Show active processes only.
  • -c : Show command line per process.
  • -d : Show disk information.
  • -l : Show total values as average-per-second.
  • -m : Show memory information.
  • -n : Show network information.
  • -s : Show process scheduling information.
  • -v : Show the verbose output.
  • -y : Show individual threads.

Use the following flags to interact with the atop command:

  • a: Sort by most active resources.
  • c: Sort by CPU consumption.
  • d: Sort by disk activity.
  • m: Sort by memory usage.
  • n: Sort by network activity.

Find Process IDs Using the pgrep Command

Using the pgrep command allows you to search for a specific process. The pgrep command uses the following syntax:

For instance, use the following command to search for the firefox process:

The command output lists the PID of the process:

Using the pgrep command to find a process ID

Using this PID with the ps command allows you to get more information on the process. In this example, using the PID 1439 provides information on the firefox process:

Searching for a process with the ps command and PID

After reading this tutorial, you should be able to use the ps , top , htop , and atop commands to list and manage running processes in Linux.

Use the available command options to customize the output and command behavior.

Linux List Processes – How to Check Running Processes

Bolaji Ayodeji

Bolaji Ayodeji

Every day, developers use various applications and run commands in the terminal. These applications can include a browser, code editor, terminal, video conferencing app, or music player.

For each of these software applications that you open or commands you run, it creates a process or task.

One beautiful feature of the Linux operating system and of modern computers in general is that they provide support for multitasking. So multiple programs can run at the same time.

Have you ever wondered how you can check all the programs running on your machine? Then this article is for you, as I’ll show you how to list, manage, and kill all the running processes on your Linux machine.

Prerequisites

  • A Linux distro installed.
  • Basic knowledge of navigating around the command-line.
  • A smile on your face 🙂

A Quick Introduction to Linux Processes

A process is an instance of a running computer program that you can find in a software application or command.

For example, if you open your Visual Studio Code editor, that creates a process which will only stop (or die) once you terminate or close the Visual Studio Code application.

Likewise, when you run a command in the terminal (like curl ifconfig.me ), it creates a process that will only stop when the command finishes executing or is terminated.

How to List Running Processes in Linux using the ps Command

You can list running processes using the ps command (ps means process status). The ps command displays your currently running processes in real-time.

To test this, just open your terminal and run the ps command like so:

Screenshot-2021-06-28-at-3.25.33-PM

This will display the process for the current shell with four columns:

  • PID returns the unique process ID
  • TTY returns the terminal type you’re logged into
  • TIME returns the total amount of CPU usage
  • CMD returns the name of the command that launched the process.

You can choose to display a certain set of processes by using any combination of options (like -A -a , -C , -c , -d , -E , -e , -u , -X , -x , and others).

If you specify more than one of these options, then all processes which are matched by at least one of the given options will be displayed.

Screenshot-2021-06-28-at-3.55.10-PM

The ps command manual page.

To display all running processes for all users on your machine, including their usernames, and to show processes not attached to your terminal, you can use the command below:

Here’s a breakdown of the command:

  • ps : is the process status command.
  • a : displays information about other users’ processes as well as your own.
  • u : displays the processes belonging to the specified usernames.
  • x : includes processes that do not have a controlling terminal.

This will display the process for the current shell with eleven columns:

  • USER returns the username of the user running the process
  • PID returns the unique process ID
  • %CPU returns the percentage of CPU usage
  • %MEM returns the percentage memory usage
  • VSV returns the virtual size in Kbytes
  • RSS returns the resident set size
  • TT returns the control terminal name
  • STAT returns the symbolic process state
  • STARTED returns the time started
  • CMD returns the command that launched the process.

How to List Running Processes in Linux using the top and htop Commands

You can also use the top task manager command in Linux to see a real-time sorted list of top processes that use the most memory or CPU.

Type top in your terminal and you’ll get a result like the one you see in the screenshot below:

Screenshot-2021-06-28-at-4.27.28-PM

An alternative to top is htop which provides an interactive system-monitor to view and manage processes. It also displays a real-time sorted list of processes based on their CPU usage, and you can easily search, filter, and kill running processes.

htop is not installed on Linux by default, so you need to install it using the command below or download the binaries for your preferred Linux distro.

Just type htop in your terminal and you’ll get a result like the one you see in the screenshot below:

Screenshot-2021-06-29-at-4.49.09-AM

How to Kill Running Processes in Linux

Killing a process means that you terminate a running application or command. You can kill a process by running the kill command with the process ID or the pkill command with the process name like so:

To find the process ID of a running process, you can use the pgrep command followed by the name of the process like so:

To kill the iTerm2 process in the screenshot above, we will use any of the commands below. This will automatically terminate and close the iTerm2 process (application).

Conclusion

When you list running processes, it is usually a long and clustered list. You can pipe it through less to display the command output one page at a time in your terminal like so:

or display only a specific process that matches a particular name like so:

I hope that you now understand what Linux processes are and how to manage them using the ps , top , and htop commands.

Make sure to check out the manual for each command by running man ps , man top , or man htop respectively. The manual includes a comprehensive reference you can check if you need any more help at any point.

Просмотр списка процессов в Linux

Как открыть список процессов Linux

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

Просматриваем список процессов в Linux

Практически во всех популярных дистрибутивах, основанных на ядре Linux, список процессов открывается и просматривается с помощью одних и тех же команд, инструментов. Поэтому мы не будем сосредотачивать внимание на отдельных сборках, а возьмем за пример последнюю версию Ubuntu. Вам же останется только выполнить предоставленные инструкции, чтобы вся процедура прошла успешно и без трудностей.

Способ 1: Терминал

Бесспорно, классическая консоль операционных систем на Линуксе играет важнейшую роль при взаимодействии с программами, файлами и другими объектами. Все основные манипуляции юзер производит именно через это приложение. Потому с самого начала хотелось бы рассказать о выводе информации именно через «Терминал». Обратим внимание мы лишь на одну команду, однако рассмотрим самые популярные и полезные аргументы.

Запуск терминала через меню в Linux

    Для начала запустите консоль, нажав на соответствующий значок в меню или используя комбинацию клавиш Ctrl + Alt + T.

Выше мы рассказали об основных аргументах команды ps , однако присутствуют еще и другие параметры, например:

Аргументы Описание
-H Отображение дерева процессов
-V Вывод версий объектов
-N Выборка всех процессов кроме заданных
Отображение только по имени команды

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

Способ 2: Системный монитор

Конечно, метод просмотра нужной информации через консоль является сложным для некоторых пользователей, но он позволяет подробно ознакомиться со всеми важными параметрами и применить необходимые фильтры. Если вы хотите просто просмотреть список запущенных утилит, приложений, а также совершить с ними ряд взаимодействий, вам подойдет встроенное графическое решение «Системный монитор».

Способы запуска этого приложения вы можете узнать в другой нашей статье, перейдя по следующей ссылке, а мы же переходим к выполнению поставленной задачи.

  1. Запустите «Системный монитор» любым удобным методом, например, через меню. Запуск системного монитора в операционной системе Linux
  2. Сразу же отобразится список процессов. Вы узнаете, сколько они потребляют памяти и ресурсов ЦП, увидите пользователя, запустившего выполнение программы, а также сможете ознакомиться с другой информацией. Отображение процессов в системном мониторе Linux
  3. Щелкните правой кнопкой мыши на интересующей строке, чтобы перейти в ее свойства. Перейти к свойствам процесса через системный монитор Linux
  4. Здесь отображаются практически все те же данные, которые доступны к получению через «Терминал». Детальная информация о процессе через системный монитор в Linux
  5. Используйте функцию поиска или сортировки, чтобы найти необходимый процесс. Сортировка и поиск процессов в системном мониторе Linux
  6. Обратите внимание и на панель сверху — она позволяет сортировать таблицу по необходимым значениям. Сортировка процессов по названию, идентификатору и нагрузке на Linux

Завершение, остановка или удаление процессов также происходит через это графическое приложение путем нажатия на соответствующие кнопки. Начинающим пользователям такое решение покажется более удобным, чем работа в «Терминале», однако освоение консоли позволит получать искомую информацию не только быстрее, но и с большим количеством деталей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *