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 .