Guia do Hardware.Net
Impresso em: 26/3/2003, 01:26:48
Impresso de: http://www.guiadohardware.net/curso/linux/ch-run.asp

Cursos OnLine :. Linux Iniciante

+ HOME
   :. Análises
   :. Artigos
   :. Cursos Online
       :. Hardware
       :. Redes
       :. Linux (foca)
       :. Gravação CDs
       :. Notebooks
       :. Setup
   :. Livros
      
:. Entendendo e
    Dominando o Linux
   :. Arquivo DDD
   :. Dicionário
   :. FAQ
   :. Notícias
   :. Dicas Linux
   :. Overclock
   :. Tutoriais

+ Publicações
   :. CD GDH
   :. CDs Mandrake
   :. CDs do Linux
   :. E-Books

+ Kurumin Linux
   :. Manual
    :. Forum
   :. Download

+ Outros
   :. Fórum
   :. Humor
   :. Palm
   :. Quiz

+ Pesquisar no site:

+ Expediente

+ Comente esta
   Matéria


Dúvidas sobre
Linux?
Baixe o E-book
Entendendo e Dominando o Linux
de Carlos E. Morimoto
ou increva-se no
Curso de Linux
em SP


Invista em
conhecimento:
:.CD-ROM Guia do Hardware: Todos os e-books e uma cópia off-line de todo o site por R$ 21,00
:.Linux Mandrake 9.0 GDH, com manual em Português e aplicativos. 4 CDs por R$ 24,00
:. E-Books de Carlos E. Morimoto:
- Entendendo e Dominando o Linux 6ed.
- Manual de Hardware Completo 3ed.
- Redes 3ed
- Upgrade e Manutenção
- Novas tecnologias 3ed.
- Dicionário Técnico de Informática
Todos os e-books por R$ 8,00

:. CDs do Linux:
Debian 3.0 R$ 35,00
Knoppix 3.2 R$ 8,00
Slackware 9.0 R$ 8,00
Red Hat 8 R$ 16,00
DemoLinux R$ 8,00
Peanut R$ 8,00
FreeBSD R$ 20,00
NetBSD R$ 16,00
Libranet R$ 8,00
Definity R$ 8,00
E outras distribuições

 

Dicas do dia : Receba as atualizações do Guia do Hardware todos os dias, direto no seu e-mail. Clique aqui para se inscrever.
 

Data: 20.03.2001
Tipo: Curso
Assunto: Linux: Guia Foca GNU/Linux Nível Iniciante
Por: Gleydson Mazioli da Silva

 

   Capítulo 5: Execução de programas

Este capítulo explica como executar programas no GNU/Linux e o uso das ferramentas de controle de execução dos programas.


5.1 Executando um comando/programa

Para executar um comando, é necessário que ele tenha permissões de execução (veja a Tipos de Permissões de acesso, Seção 11.2 e ls, Seção 6.1) e que esteja no caminho de procura de arquivos (veja a path, Seção 5.2).

No aviso de comando #(root) ou $(usuário), digite o nome do comando e tecle Enter. O programa/comando é executado e receberá um número de identificação (chamado de PID - Process Identification), este número é útil para identificar o processo no sistema e assim ter um controle sobre sua execução (será visto mais adiante neste capítulo).

Todo o programa executado no GNU/Linux roda sob o controle das permissões de acesso. Recomendo ver mais tarde o Permissões de acesso a arquivos e diretórios, Capítulo 11.

Exemplos de comandos: ls, df, pwd.

5.2 path

Path é o caminho de procura dos arquivos/comandos executáveis. O path (caminho) é armazenado na variável de ambiente PATH. Você pode ver o conteúdo desta variável com o comando echo $PATH.

Por exemplo, o caminho /usr/local/bin:/usr/bin:/bin:/usr/bin/X11 significa que se você digitar o comando ls, o interpretador de comandos iniciará a procura do programa ls no diretório /usr/local/bin, caso não encontre o arquivo no diretório /usr/local/bin ele inicia a procura em /usr/bin, até que encontre o arquivo procurado.

Caso o interpretador de comandos chegue até o último diretório do path e não encontre o arquivo/comando digitado, é mostrada a seguinte mensagem:

bash: ls: command not found (comando não encontrado).

O caminho de diretórios vem configurado na instalação do Linux, mas pode ser alterado no arquivo /etc/profile. Caso deseje alterar o caminho para todos os usuários, este arquivo é o melhor lugar, pois ele é lido por todos os usuários no momento do login.

Caso um arquivo/comando não esteja localizado em nenhum dos diretórios do path, você deve executa-lo usando um ./na frente do comando.

Se deseja alterar o path para um único usuário, modifique o arquivo .bash_profile em seu diretório de usuário (home).

OBSERVAÇÃO: Por motivos de segurança, não inclua o diretório atual $PWD no path.

5.3 Tipos de Execução de comandos/programas

Um programa pode ser executado de duas formas:

  1. Primeiro Plano - Também chamado de foreground. Quando você deve esperar o término da execução de um programa para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução do comando/programa.
  2. Segundo Plano - Também chamado de background. Quando você não precisa esperar o término da execução de um programa para executar um novo comando. Após iniciar um programa em background, é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema.

    O programa executado em background continua sendo executado internamente. Após ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do processo que terminou.

Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente.Para iniciar um programa em segundo plano, acrescente o caracter "&" após o final do comando.

OBS: Mesmo que um usuário execute um programa em segundo plano e saia do sistema, o programa continuará sendo executado até que seja concluido ou finalizado pelo usuário que iniciou a execução (ou pelo usuário root).

Exemplo: find / -name boot.b &

O comando será executado em segundo plano e deixará o sistema livre para outras tarefas. Após o comando find terminar, será mostrada uma mensagem.

5.4 Executando programas em sequência

Os programas podem ser executados e sequência (um após o término do outro) se os separarmos com ;. Por exemplo: echo primeiro;echo segundo;echo terceiro

5.5 ps

Algumas vezes é útil ver quais processos estão sendo executados no computador. O comando ps faz isto, e também nos mostra qual usuário executou o programa, hora que o processo foi iniciado, etc.

ps [opções]

Onde:

opções
a
Mostra os processos criados por você e de outros usuários do sistema.
x
Mostra processos que não são controlados pelo terminal.
u
Mostra o nome de usuário que iniciou o processo e hora em que o processo foi iniciado.
m
Mostra a memória ocupada por cada processo em execução.
f
Mostra a árvore de execução de comandos (comandos que são chamados por outros comandos).
e
Mostra variáveis de ambiente no momento da inicialização do processo.
w
Mostra a continuação da linha atual na próxima linha ao invés de cortar o restante que não couber na tela.

As opções acima podem ser combinadas para resultar em uma listagem mais completa. Você também pode usar pipes "|" para filtrar a saída do comando ps. Para detalhes, veja a | (pipe), Seção 12.4.

Ao contrário de outros comandos, o comando ps não precisa do hifen "-" para especificar os comandos. Isto porque ele não utiliza opções longas e não usa parâmetros.

Exemplos: ps, ps ax|grep inetd, ps auxf, ps auxw.

5.6 top

Mostra os programas em execução ativos, parados, tempo usado na CPU, detalhes sobre o uso da memória RAM, Swap, disponibilidade para execução de programas no sistema, etc.

top é um programa que continua em execução mostrando continuamente os processos que estão rodando em seu computador e os recursos utilizados por eles. Para sair do top, pressione a tecla q.

top [opções]

Onde:

-d [tempo]
Atualiza a tela após o [tempo] (em segundos).
-s
Diz ao top para ser executado em modo seguro.
-i
Inicia o top ignorando o tempo de processos zumbis.
-c
Mostra a linha de comando ao invés do nome do programa.

A ajuda sobre o top pode ser obtida dentro do programa pressionando a tecla h ou pela página de manual (man top).

Abaixo algumas teclas úteis:

  • espaço - Atualiza imediatamente a tela.
  • CTRL+L - Apaga e atualiza a tela.
  • h - Mostra a tela de ajuda do programa. É mostrado todas as teclas que podem ser usadas com o top.
  • i - Ignora o tempo ocioso de processos zumbis.
  • q - Sai do programa.
  • k - Finaliza um processo - semelhante ao comando kill. Você será perguntado pelo número de identificação do processo (PID). Este comando não estará disponível caso esteja usando o top com a opção -s.
  • n - Muda o número de linhas mostradas na tela. Se 0 for especificado, será usada toda a tela para listagem de processos.

5.7 Controle de execução de processos

Abaixo algumas comandos e métodos úteis para o controle da execução de processos no GNU/Linux.

5.7.1 Interrompendo a execução de um processo

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 kill, Seção 5.7.6 para interromper um processo sendo executado.

5.7.2 Parando momentaneamente a execução de um processo

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 fg, Seção 5.7.4 ou bg, Seção 5.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.

5.7.3 jobs

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 a Tipos de Execução de comandos/programas, Seção 5.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 fg, Seção 5.7.4 e bg, Seção 5.7.5.

5.7.4 fg

Permite a 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.

5.7.5 bg

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.

5.7.6 kill

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 ps, Seção 5.5
sinal
Sinal que será enviado ao processo. Se omitivo 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 destrui-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 na Sinais do Sistema, Seção 5.7.9.

Exemplo: kill 500, kill -9 500.

5.7.7 killall

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 Sinais do Sistema, Seção 5.7.9.

Exemplo: killall -HUP inetd

5.7.8 killall5

Encontra e retorna o número PID de um processo sendo executado.

killall5 [opções] [processo]

Onde:

processo
Nome do processo
opções
-s
Instrui o programa para retornar somente o número PID
-x
Faz o killall5 retornar o PID do interpretador de comandos que está executando o processo.
-o [numero]
Não mostra processos com a PID [numero]

Exemplo: killall5 -s init

5.7.9 Sinais do Sistema

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     Acã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      Saida do terminal para o processo em segundo plano

As letras da coluna Ação tem o seguinte significado:

  • A - A ação padrão é temrinar 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     Acã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     Acã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.

5.8 Fechando um programa quando não se sabe como sair

Muitas vezes quando se esta iniciando no GNU/Linux você pode executar um programa e talvez não saber como fecha-lo. Este capítulo do guia pretende ajuda-lo a resolver este tipo de problema.

Isto pode também ocorrer com programadores que estão construindo seus programas e por algum motivo não implementam uma opção de saída, ou ela não funciona!

Em nosso exemplo vou supor que executamos um programa em desenvolvimento com o nome contagem que conta o tempo em segundos a partir do momento que é executado, mas que o programador esqueceu de colocar uma opção de saída. Siga estas dicas para finaliza-lo:

  1. Normalmente todos os programas UNIX (o GNU/Linux também é um Sistema Operacional baseado no UNIX) podem ser interrompidos com o pressionamento das teclas e . Tente isto primeiro para finalizar um programa. Isto provavelmente não vai funcionar se estiver usando um Editor de Texto (ele vai entender como um comando de menu). Isto normalmente funciona para comandos que são executados e terminados sem a intervenção do usuário.

    Caso isto não der certo, vamos partir para a força! ;-)

  2. Mude para um novo console (pressionando e ), e faça o login como usuário root.

  3. Localize o PID (número de identificação do processo) usando o comando: ps ax, aparecerão várias linhas cada uma com o número do processo na primeira coluna, e a linha de comando do programa na última coluna. Caso aparecerem vários processos você pode usar ps ax|grep contagem, neste caso o grep fará uma filtragem da saída do comando ps ax mostrando somente as linhas que tem a palavra "contagem". Para maiores detalhes, veja o comando grep, Seção 8.8.

  4. Feche o processo usando o comando kill PID, lembre-se de substituir PID pelo número encontrado pelo comando ps ax acima.

    O comando acima envia um sinal de término de execução para o processo (neste caso o programa contagem). O sinal de término mantém a chance do programa salvar seus dados ou apagar os arquivos temporários que criou e então ser finalizado, isto depende do programa.

  5. Alterne para o console onde estava executando o programa contagem e verifique se ele ainda está em execução. Se ele estiver parado mas o aviso de comando não está disponível, pressione a tecla . Frequentemente acontece isto com o comando kill, você finaliza um programa mas o aviso de comando não é mostrado até que se pressione .

  6. Caso o programa ainda não foi finalizado, repita o comando kill usando a opção -9: kill -9 PID. Este comando envia um sinal de DESTRUIÇÃO do processo, fazendo ele terminar "na marra"!

Uma última dica: todos os programas estáveis (todos que acompanham as boas distribuições GNU/Linux) tem sua opção de saída. Lembre-se que quando finaliza um processo todos os dados do programa em execução podem ser perdidos (principalmente se estiver em um editor de textos), mesmo usando o kill sem o parâmetro -9.

Procure a opção de saída de um programa consultando o help on line, as páginas de manual, a documentação que acompanha o programa, info pages. Para detalhes de como encontrar a ajuda dos programas, veja o Como obter ajuda no sistema, Capítulo 16

5.9 Eliminando caracteres estranhos

As vezes quando um programa mal comportado é finalizado ou quando você visualiza um arquivo binário através do comando cat, é possível que o aviso de comando (prompt) volte com caracteres estranhos.

Para fazer tudo voltar ao normal, basta digitar reset e teclar ENTER. Não se preocupe, o comando reset não reiniciará seu computador (como o botão reset do seu computador faz), ele apenas fará tudo voltar ao normal.

Note que enquanto você digitar reset aparecerão caracteres estranhos ao invés das letras. Não se preocupe! basta digitar corretamente e bater ENTER e o aviso de comando voltará ao normal.


[ anterior ] [ Resumo ] [ Nota de Copyright ] [ Conteúdo ] [ próximo ]

Guia Foca GNU/Linux
Versão 3.50 - 6 novembro 2000
Gleydson Mazioli da Silva


 

© 1999 - 2002 :. Todos os direitos reservados :. Guia do Hardware.Net
http://www.guiadohardware.net/