Guia do Linux/Iniciante+Intermediário/Execução de programas/Controle de execução de processos

Origem: Wikilivros, livros abertos por um mundo aberto.

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.