Поиск по сайту:
Новое мнение губит предшествующее (Лукреций).

Как управлять процессами в Linux

22.03.2017
Как управлять процессами в Linux

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

  1. PID представляет собой уникальный идентификационный номер с именем и назначается ядром для каждого процесса. PID присваиваются в порядке, как создаются процессы.
  2. UID является номер идентификации пользователя, который его создал.
  3. EUID является «эффективным» идентификатором пользователя, используемый для определения, какие ресурсы и файлы процесса имеют разрешение на доступ в любой данный момент. В общем, UID и EUID одни и те же, за исключением программ, которые являются setuid исключением.
  4. GID это группа идентификационных номеров процесса. EGID связана с GID таким же образом, как EUID связана с UID. Короче говоря, процесс может быть членом многих групп одновременно.

Ниже перечислены некоторые основные команды для управления процессами в Linux:

1. ps — это одна из основных команд системного администратора Linux, используемых для мониторинга процессов. В то время, как различные версии PS отличаются по своим аргументам и отображением, все они обеспечивают ту же информацию. Вывод команды ps может показать PID, UID, приоритет, и управляющий терминал процессов. Он также дает информацию о том, сколько процессорного времени она потребляется, сколько памяти процесс использует, и его текущее состояние (состояние).

Процесс утверждает коды:

  • R — run — процесс запущен/может быть выполнен.
  • D — источник бесперебойного сна
  • S — прерывание сна — процесс ждет некоторое событие для завершения
  • T — трассируется или остановлен
  • Z — Zombie — несуществующий процесс, прерванный процесс, но по-прежнему висит в процессе таблицы ядра, потому что у родителя этого процесса до сих пор не установлен статус завершения этого процесса.

Вот пример вывода ps aux на CentOS 7 VPS:

[root@destroyer ~]# ps aux                                                                                                                                     
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND                                                                                      
root         1  0.0  0.2 190656  2116 ?        Ss   Mar16   1:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21                           
root         2  0.0  0.0      0     0 ?        S    Mar16   0:00 [kthreadd]                                                                                   
root         3  0.0  0.0      0     0 ?        S    Mar16   0:38 [ksoftirqd/0]                                                                                
root         5  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kworker/0:0H]                                                                               
root         7  0.0  0.0      0     0 ?        S    Mar16   0:00 [migration/0]                                                                                
root         8  0.0  0.0      0     0 ?        S    Mar16   0:00 [rcu_bh]                                                                                     
root         9  0.0  0.0      0     0 ?        S    Mar16   4:57 [rcu_sched]                                                                                  
root        10  0.0  0.0      0     0 ?        S    Mar16   0:03 [watchdog/0]                                                                                 
root        11  0.0  0.0      0     0 ?        S    Mar16   0:02 [watchdog/1]                                                                                 
root        12  0.0  0.0      0     0 ?        S    Mar16   0:01 [migration/1]                                                                                
root        13  0.0  0.0      0     0 ?        S    Mar16   0:52 [ksoftirqd/1]                                                                                
root        17  0.0  0.0      0     0 ?        S<   Mar16   0:00 [khelper]                                                                                    
root        18  0.0  0.0      0     0 ?        S    Mar16   0:00 [kdevtmpfs]                                                                                  
root        19  0.0  0.0      0     0 ?        S<   Mar16   0:00 [netns]                                                                                      
root        20  0.0  0.0      0     0 ?        S    Mar16   0:00 [khungtaskd]                                                                                 
root        21  0.0  0.0      0     0 ?        S<   Mar16   0:00 [writeback]                                                                                  
root        22  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kintegrityd]                                                                                
root        23  0.0  0.0      0     0 ?        S<   Mar16   0:00 [bioset]                                                                                     
root        24  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kblockd]                                                                                    
root        25  0.0  0.0      0     0 ?        S<   Mar16   0:00 [md]                                                                                         
root        31  0.0  0.0      0     0 ?        S    Mar16   4:51 [kswapd0]                                                                                    
root        32  0.0  0.0      0     0 ?        SN   Mar16   0:00 [ksmd]                                                                                       
root        33  0.0  0.0      0     0 ?        SN   Mar16   0:02 [khugepaged]                                                                                 
root        34  0.0  0.0      0     0 ?        S    Mar16   0:00 [fsnotify_mark]                                                                              
root        35  0.0  0.0      0     0 ?        S<   Mar16   0:00 [crypto]                                                                                     
root        43  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kthrotld]                                                                                   
root        44  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kmpath_rdacd]                                                                               
root        46  0.0  0.0      0     0 ?        S<   Mar16   0:00 [kpsmoused]                                                                                  
root        47  0.0  0.0      0     0 ?        S<   Mar16   0:00 [ipv6_addrconf]                                                                              
root        66  0.0  0.0      0     0 ?        S<   Mar16   0:00 [deferwq]                                                                                    
root        99  0.0  0.0      0     0 ?        S    Mar16   0:00 [kauditd]                                                                                    
root       222  0.0  0.0      0     0 ?        S<   Mar16   0:00 [ata_sff] 
...

 

Краткое объяснение вывода ‘ps aux‘:

  • USER — имя пользователя текущего процесса
  • PID — ID процесса.
  • %CPU — Процент использования от CPU определенного процесса.
  • %MEM — Процент использования реальной памяти определенного процесса.
  • VSZ — виртуальный размер процесса
  • RSS — Резидентный размер (Количество страниц в памяти)
  • TTY — ID управляющего терминала
  • STAT — Текущее состояние процесса
  • START — время запуска команды
  • TIME — время потребления процессом центрального процессора.
  • COMMAND — имя и аргументы командной строки

2. pstree — команда отображает процессы в виде дерева:

[root@destroyer ~]# pstree                                                                                                                                     
systemd─┬─NetworkManager───2*[{NetworkManager}]                                                                                                               
        ├─agetty                                                                                                                                              
        ├─atd                                                                                                                                                 
        ├─auditd───{auditd}                                                                                                                                   
        ├─core───6*[{core}]                                                                                                                                   
        ├─core───3*[{core}]                                                                                                                                   
        ├─crond───freshclam-sleep───sleep                                                                                                                     
        ├─crond                                                                                                                                               
        ├─dbus-daemon                                                                                                                                         
        ├─fail2ban-server───8*[{fail2ban-server}]                                                                                                             
        ├─firewalld───{firewalld}                                                                                                                             
        ├─httpd─┬─10*[httpd]                                                                                                                                  
        │       └─httpd───httpd───php                                                                                                                         
        ├─ihttpd───shellinaboxd───shellinaboxd─┬─ispmgr.6fc55a51───bash───top                                                                                 
        │                                      └─ispmgr.6fc55a51───bash───pstree                                                                              
        ├─irqbalance                                                                                                                                          
        ├─mysqld_safe───mysqld───28*[{mysqld}]                                                                                                                
        ├─named───4*[{named}]                                                                                                                                 
        ├─nginx───2*[nginx]                                                                                                                                   
        ├─ntpd                                                                                                                                                
        ├─polkitd───5*[{polkitd}]                                                                                                                             
        ├─rsyslogd───2*[{rsyslogd}]                                                                                                                           
        ├─sshd───sshd───sshd───sftp-server                                                                                                                    
        ├─systemd-journal                                                                                                                                     
        ├─systemd-logind                                                                                                                                      
        ├─systemd-udevd                                                                                                                                       
        └─tuned───4*[{tuned}]

 

3. top — Еще один способ выяснить, какие процессы запущены на сервере:

top - 12:07:24 up 6 days,  7:30,  1 user,  load average: 0.61, 0.32, 0.22                                                                                     
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie                                                                                          
%Cpu(s): 28.1 us,  4.5 sy,  0.0 ni, 65.5 id,  1.5 wa,  0.0 hi,  0.3 si,  0.0 st                                                                               
KiB Mem :  1016388 total,   308200 free,   369696 used,   338492 buff/cache                                                                                   
KiB Swap:  2097148 total,  1704100 free,   393048 used.   439256 avail Mem                                                                                    

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                  
25476 mysql     20   0 1512488 117216   3604 S   2.3 11.5  64:27.15 mysqld                                                                                    
  870 apache    20   0   67120   8272   1772 S   1.0  0.8  21:28.85 nginx                                                                                     
 4083 andreyex  20   0  338368  91508  10040 S   0.7  9.0   0:00.95 php                                                                                       
    9 root      20   0       0      0      0 S   0.3  0.0   4:57.99 rcu_sched                                                                                 
   13 root      20   0       0      0      0 S   0.3  0.0   0:52.78 ksoftirqd/1                                                                               
  806 root      20   0  140440   5176   2264 S   0.3  0.5   0:50.94 ihttpd                                                                                    
    1 root      20   0  190656   2040   1168 S   0.0  0.2   1:01.73 systemd                                                                                   
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.11 kthreadd                                                                                  
    3 root      20   0       0      0      0 S   0.0  0.0   0:38.29 ksoftirqd/0                                                                               
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                              
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.93 migration/0                                                                               
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                    
   10 root      rt   0       0      0      0 S   0.0  0.0   0:03.03 watchdog/0                                                                                
   11 root      rt   0       0      0      0 S   0.0  0.0   0:02.60 watchdog/1                                                                                
   12 root      rt   0       0      0      0 S   0.0  0.0   0:01.96 migration/1                                                                               
   17 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 khelper                                                                                   
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs                                                                                 
   19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns                                                                                     
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.19 khungtaskd                                                                                
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback                                                                                 
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd                                                                               
   23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset                                                                                    
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kblockd                                                                                   
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 md                                                                                        
   31 root      20   0       0      0      0 S   0.0  0.0   4:51.66 kswapd0                                                                                   
   32 root      25   5       0      0      0 S   0.0  0.0   0:00.00 ksmd   
...

 

4. kill — команда чаще всего используется для завершения процесса. Kill может послать любой сигнал, но по умолчанию, он посылает TERM. Kill может быть использован обычными пользователями в их собственных процессах или корневыми любыми процессами.

Синтаксис команды kill:

kill [-signal] pid

 

где signal — номер или символическое имя сигнала, который будет отправлен и PID является идентификатор процесса целевого процесса.

Kill без номера сигнала не гарантирует, что этот процесс будет закрыт, потому что сигнал TERM может быть пойман, заблокирован или проигнорирован.

Команда ‘kill -9 pid’ ‘гарантирует’  уничтожение процесса, потому что сигнал 9, kill, не может быть перехвачен. Командой killall убивают процессы по имени. Например, следующая команда убивает все процессы Dovecot:

$ sudo killall dovecot

 

5. Ctrl + Z — эта команда используется для приостановки текущего процесса переднего плана и переместит его на задний план:

# service spamd restart
Redirecting to /bin/systemctl restart  spamd.service
^Z
[1]+  Stopped                 service spamd restart

 

6. jobs — Отображение списка текущих заданий, запущенных в фоновом режиме:

# jobs
[1]+  Stopped                 service spamd restart

 

7. fg — эта команда используется для перемещения фонового процесса на первый план:

# fg 1
service spamd restart

Как управлять процессами в Linux

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Спасибо!

Теперь редакторы в курсе.