Este capítulo explica como executar programas no Linux e o uso das
ferramentas de controle de execução dos programas.
Para executar um comando, é necessário que ele tenha permissões de execução (veja 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 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 Linux roda sob o controle das
permissões de acesso. Recomendo ver mais tarde o capítulo Permissões de acesso a arquivos e diretórios, Capítulo
11.
Exemplos de comandos: ls, df, pwd.
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.
Um programa pode ser executado de duas formas:
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, devemos acrescentar o caracter "&" após o final do comando.
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.
Os programas podem ser executados e sequencia (um após o término do outro) se os separarmos com ;. Por exemplo: echo primeiro;echo segundo;echo terceiro
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:
As opções acima podem ser combinadas para resultar em uma listagem mais
completa. Você também pode usar pipes "|" para filtrar
a saida do comando ps. Para detalhes, veja | (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.
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:
top para ser executado em modo seguro.
top ignorando o tempo de processos zumbis.
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:
top.
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.
Configura a prioridade da execução de um comando/programa.
nice [opções] [comando/programa]
Onde:
Exemplo: nice -n -19 find / -name apropos.
Abaixo algumas comandos e métodos úteis para o controle da execução de
processos no Linux.
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.8.6 para interromper um processo sendo executado.
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.8.4 ou bg, Seção 5.8.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 enquando o programa atual está interrompido.
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 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.8.4 e bg, Seção 5.8.5.
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.
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.
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] [número]
Onde:
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.
Exemplo: kill 500, kill -9 500.
Muitas vezes quando se esta iniciando no 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 saida.
Siga estas dicas para finaliza-lo:
UNIX (o Linux também é
um Sistema Operacional baseado no UNIX) podem ser interrompidos
com o pressionamento das teclas <CTRL> e
<C>. 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! ;-)
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.
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.
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 <ENTER>.
Frequentemente acontece isto com o comando kill, você finaliza um
programa mas o aviso de comando não é mostrado até que se pressione
<ENTER>.
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 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 a seção Como obter ajuda no sistema, Capítulo 16
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.
gleydson@escelsanet.com.br