- How to check running process in Ubuntu Linux using command line
- Check running process in Ubuntu Linux
- How to manage processes from the Ubuntu Linux terminal
- Ubuntu Linux pgrep command
- Ubuntu Linux top and htop commands
- Ubuntu Linux kill command
- Ubuntu Linux pkill command
- Ubuntu Linux killall command
- Ubuntu Linux nice and renice command
- Conclusion
- Управление процессами в Linux
- Процессы. Системные вызовы fork() и exec(). Нити.
- Перенаправление ввода/вывода
- Команды для управления процессами
How to check running process in Ubuntu Linux using command line
I am a new Ubuntu sysadmin for the Ubuntu Linux operating system. How do I check running process in Ubuntu Linux using the command line option?
One can use the Ubuntu Linux command line or terminal app to display a running process, change their priorities level, delete process and more. This page shows how to use various commands to list, kill and manage process on Ubuntu Linux.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | Yes |
Requirements | Ubuntu Linux |
Est. reading time | 5m |
Check running process in Ubuntu Linux
The procedure to monitor the running process in Ubuntu Linux using the command line is as follows:
- Open the terminal window on Ubuntu Linux
- For remote Ubuntu Linux server use the ssh command for log in purpose
- Type the ps aux command to see all running process in Ubuntu Linux
- Alternatively, you can issue the top command/htop command to view running process in Ubuntu Linux
Let us see some example and usage for Ubuntu Linux in details.
NOTE: Please note that >$
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
How to manage processes from the Ubuntu Linux terminal
The ps command is a traditional Ubuntu Linux command to lists running processes. The following command shows all processes running on your system: There may be too many processes. Hence, it uses the following less command/more command as pipe to display process one screen at a time: >$ sudo ps -aux | less >$ sudo ps aux | grep chromium-browser >$ sudo ps -aux | egrep ‘sshd|openvpn’ Many variants of Ubuntu Linux comes with the pgrep command to search/find process. The syntax is: The top command is another highly recommended method to see your Ubuntu Linux servers resource usage. One can see a list of top process that using the most memory or CPU or disk. Want to kill a process? Try kill command. The syntax is: >$ kill -signal pid >$ kill 3932 If you wish to kill a process by name, try pkill command. The syntax is: >$ sudo pkill -KILL php7-fpm The killall command kills processes by name, as opposed to the selection by PID as done by kill command: >$ killall -9 emacs The primary purpose of the nice command is to run a process/command at a lower or higher priority. Use the renice command to alter the nice value of one or more running Ubuntu Linux processes. The nice value can range from -20 to 19, with 19 being the lowest priority. Say, you want to compile software on a busy Ubuntu Linux server. You can set a very low priority, enter: >$ nice -n 13 cc -c *.c & To change the priority of a running process, type the following: >$ sudo renice -10 $(pgrep vim) This page shows how to manage the process on the Ubuntu Linux terminal. For further info see man pages or our example pages: 🐧 Get the latest tutorials on Linux, Open Source & DevOps via Источник Материал этой статьи ни в коем случае не претендует на свою избыточность. Более подробно о процессах вы можете прочитать в книгах, посвященных программированию под UNIX. Процесс в Linux (как и в UNIX) — это программа, которая выполняется в отдельном виртуальном адресном пространстве. Когда пользователь регистрируется в системе, автоматически создается процесс, в котором выполняется оболочка (shell), например, /bin/bash. В Linux поддерживается классическая схема мультипрограммирования. Linux поддерживает параллельное (или квазипараллельного при наличии только одного процессора) выполнение процессов пользователя. Каждый процесс выполняется в собственном виртуальном адресном пространстве, т.е. процессы защищены друг от друга и крах одного процесса никак не повлияет на другие выполняющиеся процессы и на всю систему в целом. Один процесс не может прочитать что-либо из памяти (или записать в нее) другого процесса без «разрешения» на то другого процесса. Санкционированные взаимодействия между процессами допускаются системой. Ядро предоставляет системные вызовы для создания новых процессов и для управления порожденными процессами. Любая программа может начать выполняться только если другой процесс ее запустит или произойдет какое-то прерывание (например, прерывание внешнего устройства). В связи с развитием SMP (Symmetric Multiprocessor Architectures) в ядро Linux был внедрен механизм нитей или потоков управления (threads). Нить — это процесс, который выполняется в виртуальной памяти, используемой вместе с другими нитями процесса, который обладает отдельной виртуальной памятью. Если интерпретатору (shell) встречается команда, соответствующая выполняемому файлу, интерпретатор выполняет ее, начиная с точки входа (entry point). Для С-программ entry point — это функция main. Запущенная программа тоже может создать процесс, т.е. запустить какую-то программу и ее выполнение тоже начнется с функции main. Для создания процессов используются два системных вызова: fork() и exec. fork() создает новое адресное пространство, которое полностью идентично адресному пространству основного процесса. После выполнения этого системного вызова мы получаем два абсолютно одинаковых процесса — основной и порожденный. Функция fork() возвращает 0 в порожденном процессе и PID (Process ID — идентификатор порожденного процесса) — в основном. PID — это целое число. В качестве примера рассмотрим этот фрагмент программы if (fork()==0) wait(0); Теперь рассмотрим более подробно, что же делается при выполнении вызова fork(): Общая схема управления процессами Сигнал — способ информирования процесса ядром о происшествии какого-то события. Если возникает несколько однотипных событий, процессу будет подан только один сигнал. Сигнал означает, что произошло событие, но ядро не сообщает сколько таких событий произошло. Примеры сигналов: Установить реакцию на поступление сигнала можно с помощью системного вызова signal snum — номер сигнала, а function — адрес функции, которая должна быть выполнена при поступлении указанного сигнала. Возвращаемое значение — адрес функции, которая будет реагировать на поступление сигнала. Вместо function можно указать ноль или единицу. Если был указан ноль, то при поступлении сигнала snum выполнение процесса будет прервано аналогично вызову exit. Если указать единицу, данный сигнал будет проигнорирован, но это возможно не для всех процессов. С помощью системного вызова kill можно сгенерировать сигналы и передать их другим процессам. Таблица 1. Номера сигналов Сигналы (точнее их номера) описаны в файле singnal.h Для нормального завершение процесса используется вызов Практически все операционные системы обладают механизмом перенаправления ввода/вывода. Linux не является исключением из этого правила. Обычно программы вводят текстовые данные с консоли (терминала) и выводят данные на консоль. При вводе под консолью подразумевается клавиатура, а при выводе — дисплей терминала. Клавиатура и дисплей — это, соответственно, стандартный ввод и вывод (stdin и stdout). Любой ввод/вывод можно интерпретировать как ввод из некоторого файла и вывод в файл. Работа с файлами производится через их дескрипторы. Для организации ввода/вывода в UNIX используются три файла: stdin (дескриптор 1), stdout (2) и stderr(3). Символ > используется для перенаправления стандартного вывода в файл. Символ < используется для переназначения стандартного ввода команды. Например, при выполнении команды cat > используется для присоединения данных в конец файла (append) стандартного вывода команды. Например, в отличие от случая с символом >, выполнение команды cat >> newfile.txt не перезапишет файл в случае его существования, а добавит данные в его конец. Символ | используется для перенаправления стандартного вывода одной программы на стандартный ввод другой. Напрмер, ps -ax | grep httpd. Предназначена для вывода информации о выполняемых процессах. Данная команда имеет много параметров, о которых вы можете прочитать в руководстве (man ps). Здесь я опишу лишь наиболее часто используемые мной: Например, после ввода команды ps -a вы увидите примерно следующее: Для вывода информации о конкретном процессе мы можем воспользоваться командой: В приведенном выше примере используется перенаправление ввода вывода между программами ps и grep, и как результат получаем информацию обо всех процессах содержащих в строке запуска «httpd». Данную команду (ps -ax | grep httpd) я написал только лишь в демонстрационных целях — гораздо проще использовать параметр -С программы ps вместо перенаправления ввода вывода и параметр -e вместо -ax. Предназначена для вывода информации о процессах в реальном времени. Процессы сортируются по максимальному занимаемому процессорному времени, но вы можете изменить порядок сортировки (см. man top). Программа также сообщает о свободных системных ресурсах. Просмотреть информацию об оперативной памяти вы можете с помощью команды free, а о дисковой — df. Информация о зарегистрированных в системе пользователей доступна по команде w. Изменение приоритета процесса — команда nice nice [-коэффициент понижения] команда [аргумент] Команда nice выполняет указанную команду с пониженным приоритетом, коэффициент понижения указывается в диапазоне 1..19 (по умолчанию он равен 10). Суперпользователь может повышать приоритет команды, для этого нужно указать отрицательный коэффициент, например —10. Если указать коэффициент больше 19, то он будет рассматриваться как 19. nohup — игнорирование сигналов прерывания nohup команда [аргумент] nohup выполняет запуск команды в режиме игнорирования сигналов. Не игнорируются только сигналы SIGHUP и SIGQUIT. kill — принудительное завершение процесса kill [-номер сигнала] PID где PID — идентификатор процесса, который можно узнать с помощью команды ps. Команды выполнения процессов в фоновом режиме — jobs, fg, bg Команда jobs выводит список процессов, которые выполняются в фоновом режиме, fg — переводит процесс в нормальные режим («на передний план» — foreground), а bg — в фоновый. Запустить программу в фоновом режиме можно с помощью конструкции & Источник
Press q to exit from above Ubuntu Linux pagers. You can search for a particular Ubuntu Linux process using grep command/egrep command: Ubuntu Linux pgrep command
Ubuntu Linux top and htop commands
Ubuntu Linux kill command
Find PID using ps, pgrep or top command. Say you want to kill a PID # 3932, run:
For some reason if the process can not be killed, try forceful killing: Ubuntu Linux pkill command
Ubuntu Linux killall command
Ubuntu Linux nice and renice command
Set a very high priority for a kernel update. Before rebooting Ubuntu Linux server, run:Conclusion
Управление процессами в Linux
Процессы. Системные вызовы fork() и exec(). Нити.
Теперь, когда мы уже создали процесс, мы можем запустить программу с помощью вызова exec. Параметрами функции exec является имя выполняемого файла и, если нужно, параметры, которые будут переданы этой программе. В адресное пространство порожденного с помощью fork() процесса будет загружена новая программа и ее выполнение начнется с точки входа (адрес функции main).
else execl(«ls», «ls», 0); /* порожденный процесс */
Каждый процесс может порождать полностью идентичный процесс с помощью fork(). Родительский процесс может дожидаться окончания выполнения всех своих процессов-потомков с помощью системного вызова wait.
В любой момент времени процесс может изменить содержимое своего образа памяти, используя одну из разновидностей вызова exec. Каждый процесс реагирует на сигналы и, естественно, может установить собственную реакцию на сигналы, производимые операционной системой. Приоритет процесса может быть изменен с помощью системного вызова nice.
func = signal(snum, function);
kill(pid, snum);
где pid — идентификатор процесса, а snum — номер сигнала, который будет передан процессу. Обычно kill используется для того, чтобы принудительно завершить («убить») процесс.
Pid состоит из идентификатора группы процессов и идентификатора процесса в группе. Если вместо pid указать нуль, то сигнал snum будет направлен всем процессам, относящимся к данной группе (понятие группы процессов аналогично группе пользователей). В одну группу включаются процессы, имеющие общего предка, идентификатор группы процесса можно изменить с помощью системного вызова setpgrp. Если вместо pid указать -1, ядро передаст сигнал всем процессам, идентификатор пользователя которых равен идентификатору текущего выполнения процесса, который посылает сигнал.
Номер Название Описание 01 SIGHUP Освобождение линии (hangup). 02 SIGINT Прерывание (interrupt). 03 SIGQUIT Выход (quit). 04 SIGILL Некорректная команда (illegal instruction). Не переустанавливается при перехвате. 05 SIGTRAP Трассировочное прерывание (trace trap). Не переустанавливается при перехвате. 06 SIGIOT или SIGABRT Машинная команда IOT. 07 SIGEMT Машинная команда EMT. 08 SIGFPE Исключительная ситуация при выполнении операции с вещественными числами (floating-point exception) 09 SIGKILL Уничтожение процесса (kill). Не перехватывается и не игнорируется. 10 SIGBUS Ошибка шины (bus error). 11 SIGSEGV Некорректное обращение к сегменту памяти (segmentation violation). 12 SIGSYS Некорректный параметр системного вызова (bad argument to system call). 13 SIGPIPE Запись в канал, из которого некому читать (write on a pipe with no one to read it). 14 SIGALRM Будильник 15 SIGTERM Программный сигнал завершения 16 SIGUSR1 Определяемый пользователем сигнал 1 17 SIGUSR2 Определяемый пользователем сигнал 2 18 SIGCLD Завершение порожденного процесса (death of a child). 19 SIGPWR Ошибка питания 22 Регистрация выборочного события
exit(status);
где status — это целое число, возвращаемое процессу-предку для его информирования о причинах завершения процесса-потомка.
Вызов exit может задаваться в любой точке программы, но может быть и неявным, например при выходе из функции main (при программировании на C) оператор return 0 будет воспринят как системный вызов exit(0); Перенаправление ввода/вывода
Пример:
$ cat > newfile.txt Стандартный ввод команды cat будет перенаправлен в файл newfile.txt, который будет создан после выполнения этой команды. Если файл с этим именем уже существует, то он будет перезаписан. Нажатие Ctrl + D остановит перенаправление и прерывает выполнение команды cat. Команды для управления процессами
Параметр Описание -a отобразить все процессы, связанных с терминалом (отображаются процессы всех пользователей) -e отобразить все процессы -t список терминалов отобразить процессы, связанные с терминалами -u идентификаторы пользователей отобразить процессы, связанные с данными идентификаторыми -g идентификаторы групп отобразить процессы, связанные с данными идентификаторыми групп -x отобразить все процессы, не связанные с терминалом