Учебники

Linux Admin — Управление процессами

Ниже приведены общие команды, используемые с Process Management — bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.

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

Краткое примечание: процесс PID в Linux

В Linux каждому запущенному процессу присваивается PID или идентификационный номер процесса. Этот PID показывает, как CentOS идентифицирует конкретный процесс. Как мы уже говорили, systemd — это первый запущенный процесс с PID 1 в CentOS.

Pgrep используется для получения PID Linux для данного имени процесса.

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

Как видно, команда pgrep возвращает текущий PID systemd.

Базовый процесс CentOS и управление заданиями в CentOS

При работе с процессами в Linux важно знать, как основные процессы приоритетного и фонового процессов выполняются в командной строке.

  • fg — выводит процесс на передний план

  • bg — переместить процесс на задний план

  • jobs — Список текущих процессов, прикрепленных к оболочке

  • Ctrl + Z — комбинация клавиш Control + Z, чтобы спать текущий процесс

  • & — Запускает процесс в фоновом режиме

fg — выводит процесс на передний план

bg — переместить процесс на задний план

jobs — Список текущих процессов, прикрепленных к оболочке

Ctrl + Z — комбинация клавиш Control + Z, чтобы спать текущий процесс

& — Запускает процесс в фоновом режиме

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

[root@CentOS ~]$ jobs

[root@CentOS ~]$ sleep 10 & 
[1] 12454 

[root@CentOS ~]$ sleep 20 & 
[2] 12479

[root@CentOS ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

Теперь давайте перенесем первую работу на передний план —

[root@CentOS ~]$ fg 1 
sleep 10

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

  • Хит контроль + Z
  • Введите: bg 1, отправив первое задание в фоновый режим и запустив его.
[root@CentOS ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

[root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

поЬир

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

[root@CentOS]# nohup ping www.google.com & 
[1] 27299 
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping 
27299

[root@CentOS]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out  
PING www.google.com (216.58.193.68) 56(84) bytes of data. 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

PS команда

Команда ps обычно используется администраторами для изучения моментальных снимков определенного процесса. PS обычно используется с grep, чтобы отфильтровать определенный процесс для анализа.

[root@CentOS ~]$ ps axw | grep python 
762   ?        Ssl    0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 
1296  ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 
15550 pts/0    S+     0:00 grep --color=auto python

В приведенной выше команде мы видим все процессы, использующие интерпретатор python . В результаты также вошла наша команда grep, ищущая строку python .

Ниже приведены наиболее распространенные ключи командной строки, используемые с ps .

переключатель действие
Исключает ограничения только процессов отчетности для текущего пользователя
Икс Показывает процессы, не привязанные к tty или оболочке
вес Форматы широкого вывода вывода на вывод
е Показывает среду после команды
-e Выбирает все процессы
Пользовательский форматированный вывод
-u Показывает все процессы определенного пользователя
Показывает все процессы по имени или идентификатору процесса
—Сортировать Сортирует процессы по определению

Чтобы увидеть все процессы, используемые пользователем nobody

[root@CentOS ~]$ ps -u nobody 
PID TTY          TIME CMD 
1853 ?        00:00:00 dnsmasq 

[root@CentOS ~]$

Чтобы увидеть всю информацию о процессе firewalld

[root@CentOS ~]$ ps -wl -C firewalld 
F   S   UID   PID   PPID   C   PRI   NI   ADDR   SZ   WCHAN   TTY   TIME      CMD
0   S     0   762      1   0    80   0     -   81786  poll_s   ?   00:00:01 firewalld 

[root@CentOS ~]$

Давайте посмотрим, какие процессы потребляют больше всего памяти —

[root@CentOS ~]$ ps aux  --sort=-pmem | head -10 
USER       PID   %CPU   %MEM   VSZ     RSS   TTY   STAT   START   TIME   COMMAND 
cnetos     6130   0.7   5.7   1344512 108364  ?      Sl   02:16   0:29  /usr/bin/gnome-shell 
cnetos     6449   0.0   3.4   1375872 64440   ?      Sl   02:16   0:00  /usr/libexec/evolution-calendar-factory 
root       5404   0.6   2.1   190256  39920 tty1     Ssl+ 02:15   0:27  /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 
cnetos     6296   0.0   1.7   1081944 32136   ?      Sl   02:16   0:00  /usr/libexec/evolution/3.12/evolution-alarm-notify 
cnetos     6350   0.0   1.5   560728  29844   ?      Sl   02:16   0:01  /usr/bin/prlsga 
cnetos     6158   0.0   1.4   1026956 28004   ?      Sl   02:16   0:00  /usr/libexec/gnome-shell-calendar-server 
cnetos     6169   0.0   1.4   1120028 27576   ?      Sl   02:16   0:00  /usr/libexec/evolution-source-registry 
root       762    0.0   1.4   327144  26724   ?      Ssl  02:09   0:01  /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 
cnetos     6026   0.0  1.4 1090832 26376      ?      Sl   02:16   0:00  /usr/libexec/gnome-settings-daemon

[root@CentOS ~]$

Просмотреть все процессы по пользовательскому centos и формату, отображая пользовательский вывод —

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm 
   PID    USER     COMMAND 
   5802  centos   gnome-keyring-d 
   5812  cnetos   gnome-session 
   5819  cnetos   dbus-launch 
   5820  cnetos   dbus-daemon 
   5888  cnetos   gvfsd 
   5893  cnetos   gvfsd-fuse 
   5980  cnetos   ssh-agent   
   5996  cnetos   at-spi-bus-laun

Команда pstree

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

[centos@CentOS ~]$ pstree 
  systemd─┬─ModemManager───2*[{ModemManager}] 
          ├─NetworkManager─┬─dhclient 
          │                └─2*[{NetworkManager}] 
          ├─2*[abrt-watch-log] 
          ├─abrtd 
          ├─accounts-daemon───2*[{accounts-daemon}] 
          ├─alsactl 
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} 
          │                 └─3*[{at-spi-bus-laun}] 
          ├─at-spi2-registr───2*[{at-spi2-registr}] 
          ├─atd 
          ├─auditd─┬─audispd─┬─sedispatch 
          │        │         └─{audispd} 
          │        └─{auditd} 
          ├─avahi-daemon───avahi-daemon 
          ├─caribou───2*[{caribou}] 
          ├─cgrulesengd 
          ├─chronyd 
          ├─colord───2*[{colord}] 
          ├─crond 
          ├─cupsd

Общий вывод pstree может превышать 100 строк. Обычно ps будет давать больше полезной информации.

верхняя команда

top — одна из наиболее часто используемых команд при устранении проблем с производительностью в Linux. Это полезно для статистики в реальном времени и мониторинга процессов в Linux. Ниже приведен вывод команды top по умолчанию при вызове из командной строки.

Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie 
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache 
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem 
 
PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

Общие горячие клавиши, используемые при запуске top ( горячие клавиши доступны при нажатии клавиши, когда top работает в вашей оболочке).

команда действие
б Включает / отключает выделение жирным шрифтом в верхнем меню
Z Циклы цветовой схемы
L Циклы загрузки среднего курса
м Циклы памяти среднего заголовка
T Заголовок информации о задании
час Меню справки
Shift + F Настраивает сортировку и отображение полей

Ниже приведены общие параметры командной строки для top .

команда действие
Сортировка по столбцу (может начинаться с — или + для сортировки по возрастанию или по убыванию)
-u Показывает только процессы от указанного пользователя
-d Обновляет время задержки вершины
Возвращает список столбцов, к вершине которых можно применить сортировку

Экран параметров сортировки сверху, представлен с помощью Shift + F. Этот экран позволяет настроить верхнее отображение и параметры сортировки.

Fields Management for window 1:Def, whose current sort field is %MEM 
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
 
* PID     = Process Id             TGID    = Thread Group Id      
* USER    = Effective User Name    ENVIRON = Environment vars     
* PR      = Priority               vMj     = Major Faults delta   
* NI      = Nice Value             vMn     = Minor Faults delta   
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)  
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode  
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode  
* %CPU    = CPU Usage              nsPID   = PID namespace Inode  
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode 
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode  
* COMMAND = Command Name/Line 
PPID    = Parent Process pid
UID     = Effective User Id

top , показывая процессы для пользователя rdc и отсортированные по использованию памяти —

 PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

Отображение допустимых полей сверху (сжато) —

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

убить команду

Команда kill используется для уничтожения процесса из командной оболочки через его PID. При уничтожении процесса нам нужно указать сигнал для отправки. Сигнал сообщает ядру, как мы хотим завершить процесс. Наиболее часто используемые сигналы —

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

  • SIGHUP большинство демонов перезапускается при отправке SIGHUP . Это часто используется в процессах, когда были внесены изменения в файл конфигурации.

  • SIGKILL, поскольку SIGTERM — это то же самое, что запросить завершение процесса. Ядру нужна опция для завершения процесса, который не будет соответствовать запросам. Когда процесс зависает, опция SIGKILL используется для явного завершения процесса.

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

SIGHUP большинство демонов перезапускается при отправке SIGHUP . Это часто используется в процессах, когда были внесены изменения в файл конфигурации.

SIGKILL, поскольку SIGTERM — это то же самое, что запросить завершение процесса. Ядру нужна опция для завершения процесса, который не будет соответствовать запросам. Когда процесс зависает, опция SIGKILL используется для явного завершения процесса.

Для вывода списка всех сигналов, которые можно отправить с помощью kill, можно использовать опцию -l

[root@CentOS]# kill -l 
1) SIGHUP           2) SIGINT         3) SIGQUIT        4) SIGILL         5) SIGTRAP
6) SIGABRT          7) SIGBUS         8) SIGFPE         9) SIGKILL       10) SIGUSR1
11) SIGSEGV        12) SIGUSR2       13) SIGPIPE       14) SIGALRM       15) SIGTERM
16) SIGSTKFLT      17) SIGCHLD       18) SIGCONT       19) SIGSTOP       20) SIGTSTP
21) SIGTTIN        22) SIGTTOU       23) SIGURG        24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM      27) SIGPROF       28) SIGWINCH      29) SIGIO         30) SIGPWR
31) SIGSYS         34) SIGRTMIN      35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4     39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9     44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13 
48) SIGRTMIN+14    49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12 
53) SIGRTMAX-11    54) SIGRTMAX-10   55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6     59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1     64) SIGRTMAX

[root@CentOS rdc]#

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

[root@CentOS]# pgrep systemd 
1 
464 
500 
643 
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[root@CentOS]#

pkill позволит администратору отправлять сигнал уничтожения по имени процесса.

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killall убьет все процессы. Будьте осторожны, используя killall в качестве пользователя root, так как он уничтожит все процессы для всех пользователей.

[root@CentOS]# killall chrome

свободная команда

free — довольно простая команда, часто используемая для быстрой проверки памяти системы. Он отображает общий объем используемой физической и подкачки памяти.

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]# 

хорошая команда

Nice позволит администратору установить приоритет планирования процесса с точки зрения использования процессора. Лучше всего то, как ядро ​​будет планировать срезы процессорного времени для процесса или задания. По умолчанию предполагается, что процессу предоставляется равный доступ к ресурсам процессора.

Во-первых, давайте используем top, чтобы проверить правильность запущенных процессов.

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

Мы хотим сосредоточиться на колонке NICE, изображенной NI . Диапазон добротности может быть в диапазоне от -20 до плюс 19. -20 представляет самый высокий данный приоритет.

nohup nice --20 ping www.google.com &

Renice

renice позволяет нам изменить текущий приоритет процесса, который уже запущен.

renice 17 -p 30727

Приведенная выше команда понизит приоритет нашей команды процесса ping .