Linux Admin - Gerenciamento de processos

A seguir estão os comandos comuns usados ​​com gerenciamento de processos - bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.

Trabalhar com Processos

Quick Note: Process PID in Linux

No Linux, cada processo em execução recebe um PID ou Número de ID de Processo. Este PID é como o CentOS identifica um processo particular. Como discutimos, o systemd é o primeiro processo iniciado e recebe um PID de 1 no CentOS.

Pgrep é usado para obter o PID do Linux para um determinado nome de processo.

[[email protected]]# pgrep systemd 
1 
[[email protected]]#

Como visto, o comando pgrep retorna o PID atual do systemd.

Processo básico do CentOS e gerenciamento de trabalhos no CentOS

Ao trabalhar com processos no Linux, é importante saber como os processos básicos de primeiro e segundo plano são executados na linha de comando.

  • fg - Traz o processo para o primeiro plano

  • bg - Mova o processo para segundo plano

  • jobs - Lista dos processos atuais anexados ao shell

  • ctrl+z - Combinação de teclas Control + z para suspender o processo atual

  • & - Inicia o processo em segundo plano

Vamos começar a usar o comando sleep do shell .sleepvai simplesmente fazer como é nomeado, dormir por um período de tempo definido: dormir .

[[email protected] ~]$ jobs

[[email protected] ~]$ sleep 10 & 
[1] 12454 

[[email protected] ~]$ sleep 20 & 
[2] 12479

[[email protected] ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[[email protected] ~]$

Agora, vamos trazer o primeiro trabalho para o primeiro plano -

[[email protected] ~]$ fg 1 
sleep 10

Se você estiver acompanhando, notará que o trabalho de primeiro plano está preso em seu shell. Agora, vamos colocar o processo em hibernação e reativá-lo em segundo plano.

  • Pressione control + z
  • Digite: bg 1, enviando o primeiro trabalho em segundo plano e iniciando-o.
[[email protected] ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

[[email protected] ~]$ bg 1 
[1]+ sleep 20 &

[[email protected] ~]$

nohup

Ao trabalhar em um shell ou terminal, é importante notar que, por padrão, todos os processos e tarefas anexados ao shell serão encerrados quando o shell for fechado ou o usuário efetuar logout. Ao usar o nohup, o processo continuará a ser executado se o usuário fizer logout ou fechar o shell ao qual o processo está conectado.

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

[[email protected]]# pgrep ping 
27299

[[email protected]]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[[email protected] 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

Comando ps

o pscomando é comumente usado por administradores para investigar instantâneos de um processo específico. O ps é comumente usado com grep para filtrar um processo específico para análise.

[[email protected] ~]$ 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

No comando acima, vemos todos os processos usando o interpretador python . Também incluído com os resultados estava nosso comando grep, procurando a string python .

A seguir estão as opções de linha de comando mais comuns usadas com o ps .

Interruptor Açao
uma Exclui restrições de apenas os processos de relatório para o usuário atual
x Mostra processos não anexados a um tty ou shell
W Formata a exibição de saída ampla da saída
e Mostra o ambiente após o comando
-e Seleciona todos os processos
-o Saída formatada definida pelo usuário
-você Mostra todos os processos de um usuário específico
-C Mostra todos os processos por nome ou id de processo
--ordenar Classifica os processos por definição

Para ver todos os processos em uso pelo usuário nobody -

[[email protected] ~]$ ps -u nobody 
PID TTY          TIME CMD 
1853 ?        00:00:00 dnsmasq 

[[email protected] ~]$

Para ver todas as informações sobre o processo firewalld -

[[email protected] ~]$ 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 

[[email protected] ~]$

Vamos ver quais processos estão consumindo mais memória -

[[email protected] ~]$ 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

[[email protected] ~]$

Veja todos os processos por centos e formato do usuário, exibindo a saída personalizada -

[[email protected] ~]$ 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

Comando pstree

pstreeé semelhante ao ps, mas não é usado com frequência. Ele exibe os processos em uma árvore mais organizada.

[[email protected] ~]$ 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

A produção total do pstree pode exceder 100 linhas. Normalmente, o ps fornecerá informações mais úteis.

comando superior

topé um dos comandos mais usados ​​ao solucionar problemas de desempenho no Linux. É útil para estatísticas em tempo real e monitoramento de processos no Linux. A seguir está a saída padrão de top quando ativada a partir da linha de comando.

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

Teclas de atalho comuns usadas durante a execução do top ( as teclas de atalho são acessadas pressionando a tecla enquanto o top está sendo executado no shell).

Comando Açao
b Ativa / desativa o destaque em negrito no menu superior
z Ciclos do esquema de cores
eu Ciclos do rumo médio da carga
m Ciclos o cabeçalho médio da memória
t Título de informação da tarefa
h Menu de ajuda
Shift + F Personaliza os campos de classificação e exibição

A seguir estão as opções de linha de comando comuns para o topo .

Comando Açao
-o Classifica por coluna (pode preceder com - ou + para classificar em ordem crescente ou decrescente)
-você Mostra apenas processos de um usuário especificado
-d Atualiza o tempo de atraso do topo
-O Retorna uma lista de colunas cujo topo pode aplicar classificação

Tela de opções de ordem superior, apresentados usando Shift + F . Esta tela permite a personalização da exibição superior e opções de classificação.

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

topo , mostrando os processos para o rdc do usuário e classificados por uso de memória -

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

Mostrando campos principais válidos (condensado) -

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

comando matar

o killO comando é usado para matar um processo do shell de comando por meio de seu PID. Ao matar um processo, precisamos especificar um sinal para enviar. O sinal permite que o kernel saiba como queremos encerrar o processo. Os sinais mais comumente usados ​​são -

  • SIGTERMestá implícito, pois o kernel permite que um processo saiba que deve parar assim que for seguro fazê-lo. O SIGTERM dá ao processo a oportunidade de sair normalmente e realizar operações de saída seguras.

  • SIGHUPa maioria dos daemons irá reiniciar quando enviado SIGHUP . Isso é freqüentemente usado nos processos quando mudanças foram feitas em um arquivo de configuração.

  • SIGKILLjá que SIGTERM é o equivalente a solicitar o encerramento de um processo. O kernel precisa de uma opção para encerrar um processo que não atenderá às solicitações. Quando um processo é interrompido , a opção SIGKILL é usada para encerrar o processo explicitamente.

Para obter uma lista de todos os sinais que podem ser enviados com kill, a opção -l pode ser usada -

[[email protected]]# 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

[[email protected] rdc]#

Usando SIGHUP para reiniciar o sistema.

[[email protected]]# pgrep systemd 
1 
464 
500 
643 
15071

[[email protected]]# kill -HUP 1

[[email protected]]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[[email protected]]#

pkillvai permitir que o administrador para enviar uma matança sinal pelo nome do processo.

[[email protected]]# pgrep ping 
19450 
[[email protected]]# pkill -9 ping 
[[email protected]]# pgrep ping 
[[email protected]]#

killallirá matar todos os processos. Tenha cuidado ao usar killall como root, pois irá matar todos os processos de todos os usuários.

[[email protected]]# killall chrome

comando livre

freeé um comando bastante simples frequentemente usado para verificar rapidamente a memória de um sistema. Ele exibe a quantidade total de memória física e de troca usada.

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

[[email protected]]#

bom comando

nicepermitirá que um administrador defina a prioridade de agendamento de um processo em termos de uso da CPU. A gentileza é basicamente como o kernel irá agendar fatias de tempo da CPU para um processo ou trabalho. Por padrão, presume-se que o processo tenha acesso igual aos recursos da CPU.

Primeiro, vamos usar o top para verificar a gentileza dos processos em execução no momento.

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

Queremos nos concentrar na coluna NICE retratada pela NI . O intervalo de niceness pode ser qualquer lugar entre -20 a positivo 19. -20 representa a prioridade mais alta fornecida.

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

Renice

O renice nos permite alterar a prioridade atual de um processo que já está em execução.

renice 17 -p 30727

O comando acima irá diminuir a prioridade do nosso comando de processo de ping .