Администратор Linux - Управление процессами
Ниже приведены общие команды, используемые в Process Management: bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Работа с процессами
Quick Note: Process PID in Linux
В Linux каждому запущенному процессу присваивается PID или идентификационный номер процесса. Этот PID определяет, как CentOS идентифицирует конкретный процесс. Как мы уже говорили, systemd - это первый запущенный процесс, которому в CentOS присвоен PID 1.
Pgrep используется для получения PID Linux для заданного имени процесса.
[root@CentOS]# pgrep systemd
1
[root@CentOS]#
Как видно, команда pgrep возвращает текущий PID systemd.
Базовый процесс CentOS и управление заданиями в CentOS
При работе с процессами в Linux важно знать, как в командной строке выполняются основные процессы переднего и заднего плана.
fg - Выводит процесс на передний план
bg - Отодвинуть процесс на задний план
jobs - Список текущих процессов, прикрепленных к оболочке
ctrl+z - Комбинация клавиш Control + z, чтобы засыпать текущий процесс
& - Запускает процесс в фоновом режиме
Начнем с использования команды оболочки sleep .sleepпросто будет делать то, что названо, спать в течение определенного периода времени: спать .
[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
Если вы будете следовать по тексту, вы заметите, что задание переднего плана застряло в вашей оболочке. Теперь давайте переведем процесс в спящий режим, а затем снова включим его в фоновом режиме.
- Нажмите Ctrl + 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 | Показывает все процессы конкретного пользователя |
-C | Показывает все процессы по имени или идентификатору процесса |
--Сортировать | Сортирует процессы по определению |
Чтобы увидеть все процессы, используемые пользователем 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 | Циклическое переключение цветовой схемы |
л | Циклически изменяет заголовок средней нагрузки |
м | Циклический просмотр среднего заголовка памяти |
т | Заголовок информации о задаче |
час | Меню помощи |
Shift + F | Настраивает поля сортировки и отображения |
Ниже приведены общие переключатели командной строки для top .
Команда | Действие |
---|---|
-о | Сортировка по столбцу (можно поставить перед знаком - или + для сортировки по возрастанию или убыванию) |
-u | Показывает только процессы от указанного пользователя |
-d | Обновляет время задержки топа |
-O | Возвращает список столбцов, вверху которых можно применить сортировку |
Сортировка экран опций в верхней части, представлены с помощью 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
вверху , показывая процессы для пользователя 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
В killКоманда используется для уничтожения процесса из командной оболочки через его PID. При убийстве процесса нам нужно указать сигнал для отправки. Сигнал сообщает ядру, как мы хотим завершить процесс. Наиболее часто используемые сигналы -
SIGTERMподразумевается, поскольку ядро сообщает процессу, что он должен остановиться, как только это будет безопасно. SIGTERM дает процессу возможность корректно завершиться и выполнить безопасные операции выхода.
SIGHUPбольшинство демонов перезапускаются при отправке SIGHUP . Это часто используется в процессах, когда в файл конфигурации были внесены изменения.
SIGKILLпоскольку SIGTERM эквивалентен запросу о завершении процесса. Ядру нужна возможность завершить процесс, который не будет соответствовать запросам. Когда процесс зависает, опция SIGKILL используется для явного завершения процесса.
Для получения списка отключения всех сигналов , которые могут быть отправлены с убить -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 17 -p 30727
Вышеупомянутая команда понизит приоритет нашей команды процесса ping .