Guia do Linux/Iniciante+Intermediário/Execução de programas/Controle de execução de processos
Controle de execução de processos
[editar | editar código]Abaixo algumas comandos e métodos úteis para o controle da execução de processos no GNU/Linux.
Interrompendo a execução de um processo
[editar | editar código]Para cancelar a execução de algum processo rodando em primeiro plano, basta pressionar as teclas CTRL C. A execução do programa será cancelada e será mostrado o aviso de comando. Você também pode usar o comando [#s-run-kill kill, Seção 7.7.6] para interromper um processo sendo executado.
Parando momentaneamente a execução de um processo
[editar | editar código]Para parar a execução de um processo rodando em primeiro plano, basta pressionar as teclas CTRL Z. O programa em execução será pausado e será mostrado o número de seu job e o aviso de comando. Para retornar a execução de um comando pausado, use [#s-run-fg fg, Seção 7.7.4] ou [#s-run-bg bg, Seção 7.7.5]. O programa permanece na memória no ponto de processamento em que parou quando ele é interrompido. Você pode usar outros comandos ou rodar outros programas enquanto o programa atual está interrompido.
jobs
[editar | editar código]O comando jobs mostra os processos que estão parados ou rodando em segundo plano. Processos em segundo plano são iniciados usando o símbolo "&" no final da linha de comando (veja [#s-run-tipos Tipos de Execução de comandos/programas, Seção 7.3]) ou através do comando bg.
jobs
O número de identificação de cada processo parado ou em segundo plano (job), é usado com os comandos [#s-run-fg fg, Seção 7.7.4] e [#s-run-bg bg, Seção 7.7.5]. Um processo interrompido pode ser finalizado usando-se o comando kill %[num], onde [num] é o número do processo obtido pelo comando jobs.
fg
[editar | editar código]Permite fazer um programa rodando em segundo plano ou parado, rodar em primeiro plano. Você deve usar o comando jobs para pegar o número do processo rodando em segundo plano ou interrompida, este número será passado ao comando fg para ativa-lo em primeiro plano.
fg [número]
Onde número é o número obtido através do comando jobs.
Caso seja usado sem parâmetros, o fg utilizará o último programa interrompido (o maior número obtido com o comando jobs).
Exemplo: fg 1.
bg
[editar | editar código]Permite fazer um programa rodando em primeiro plano ou parado, rodar em segundo plano. Para fazer um programa em primeiro plano rodar em segundo, é necessário primeiro interromper a execução do comando com CTRL Z, será mostrado o número da tarefa interrompida, use este número com o comando bg para iniciar a execução do comando em segundo plano.
bg [número]
Onde: número número do programa obtido com o pressionamento das teclas CTRL Z ou através do comando jobs.
kill
[editar | editar código]Permite enviar um sinal a um comando/programa. Caso seja usado sem parâmetros, o kill enviará um sinal de término ao processo sendo executado.
kill [opções] [sinal] [número]
Onde:
- número
- É o número de identificação do processo obtido com o comando [#s-run-ps ps, Seção 7.5]. Também pode ser o número após o sinal de % obtido pelo comando
jobspara matar uma tarefa interrompida. Veja [#s-run-ver-backgrounds jobs, Seção 7.7.3]. - sinal
- Sinal que será enviado ao processo. Se omitido usa -15 como padrão.
- opções
- -9
- Envia um sinal de destruição ao processo ou programa. Ele é terminado imediatamente sem chances de salvar os dados ou apagar os arquivos temporários criados por ele.
Você precisa ser o dono do processo ou o usuário root para termina-lo ou destruí-lo. Você pode verificar se o processo foi finalizado através do comando ps. Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes em [#s-run-sinais Sinais do Sistema, Seção 7.7.9].
Exemplo: kill 500, kill -9 500, kill %1.
killall
[editar | editar código]Permite finalizar processos através do nome. killall [opções] [sinal] [processo] Onde:
- processo
- Nome do processo que deseja finalizar
- sinal
- Sinal que será enviado ao processo (pode ser obtido usando a opção -i).
- opções
- -i
- Pede confirmação sobre a finalização do processo.
- -l
- Lista o nome de todos os sinais conhecidos.
- -q
- Ignora a existência do processo.
- -v
- Retorna se o sinal foi enviado com sucesso ao processo.
- -w
- Finaliza a execução do
killallsomente após finalizar todos os processos.
Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes na [#s-run-sinais Sinais do Sistema, Seção 7.7.9].
Exemplo: killall -HUP inetd
killall5
[editar | editar código]Envia um sinal de finalização para todos os processos sendo executados. killall5 [sinal]
Sinais do Sistema
[editar | editar código]Retirado da página de manual signal. O GNU/Linux suporta os sinais listados abaixo. Alguns números de sinais são dependentes de arquitetura.
Primeiro, os sinais descritos no POSIX 1:
Sinal Valor Ação Comentário
---------------------------------------------------------------------------
HUP 1 A Travamento detectado no terminal de controle ou
finalização do processo controlado
INT 2 A Interrupção através do teclado
QUIT 3 C Sair através do teclado
ILL 4 C Instrução Ilegal
ABRT 6 C Sinal de abortar enviado pela função abort
FPE 8 C Exceção de ponto Flutuante
KILL 9 AEF Sinal de destruição do processo
SEGV 11 C Referência Inválida de memória
PIPE 13 A Pipe Quebrado: escreveu para o pipe sem leitores
ALRM 14 A Sinal do Temporizador da chamada do sistema alarm
TERM 15 A Sinal de Término
USR1 30,10,16 A Sinal definido pelo usuário 1
USR2 31,12,17 A Sinal definido pelo usuário 2
CHLD 20,17,18 B Processo filho parado ou terminado
CONT 19,18,25 Continuar a execução, se interrompido
STOP 17,19,23 DEF Interromper processo
TSTP 18,20,24 D Interromper digitação no terminal
TTIN 21,21,26 D Entrada do terminal para o processo em segundo plano
TTOU 22,22,27 D Saída do terminal para o processo em segundo plano
As letras da coluna Ação tem o seguinte significado:
- A - A ação padrão é terminar o processo.
- B - A ação padrão é ignorar o sinal.
- C - A ação padrão é terminar o processo e mostrar o core.
- D - A ação padrão é parar o processo.
- E - O sinal não pode ser pego.
- F - O sinal não pode ser ignorado.
Sinais não descritos no POSIX 1 mas descritos na SUSv2:
Sinal Valor Ação Comentário
-------------------------------------------------------------------------
BUS 10,7,10 C Erro no Barramento (acesso incorreto da memória)
POLL A Evento executado em Pool (Sys V). Sinônimo de IO
PROF 27,27,29 A Tempo expirado do Profiling
SYS 12,-,12 C Argumento inválido para a rotina (SVID)
TRAP 5 C Captura do traço/ponto de interrupção
URG 16,23,21 B Condição Urgente no soquete (4.2 BSD)
VTALRM 26,26,28 A Alarme virtual do relógio (4.2 BSD)
XCPU 24,24,30 C Tempo limite da CPU excedido (4.2 BSD)
XFSZ 25,25,31 C Limite do tamanho de arquivo excedido (4.2 BSD)
(Para os casos SIGSYS, SIGXCPU, SIGXFSZ, e em algumas arquiteturas também o SIGGUS, a ação padrão do Linux para kernels 2.3.27 e superiores é A (terminar), enquanto SYSv2 descreve C (terminar e mostrar dump core).) Seguem vários outros sinais:
Sinal Valor Ação Comentário
--------------------------------------------------------------------
IOT 6 C Traço IOT. Um sinônimo para ABRT
EMT 7,-,7
STKFLT -,16,- A Falha na pilha do processador
IO 23,29,22 A I/O agora possível (4.2 BSD)
CLD -,-,18 Um sinônimo para CHLD
PWR 29,30,19 A Falha de força (System V)
INFO 29,-,- Um sinônimo para SIGPWR
LOST -,-,- A Perda do bloqueio do arquivo
WINCH 28,28,20 B Sinal de redimensionamento da Janela (4.3 BSD, Sun)
UNUSED -,31,- A Sinal não usado (será SYS)
O "-" significa que o sinal não está presente. Onde três valores são listados, o primeiro é normalmente válido para o Alpha e Sparc, o do meio para i386, PowerPc e sh, o último para o Mips. O sinal 29 é SIGINFO/SIGPWR em um Alpha mas SIGLOST em um Sparc.