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-fonte]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-fonte]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-fonte]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-fonte]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-fonte]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-fonte]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-fonte]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
jobs
para 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-fonte]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
killall
somente 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-fonte]Envia um sinal de finalização para todos os processos sendo executados. killall5 [sinal]
Sinais do Sistema
[editar | editar código-fonte]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.