Comandos do Linux e Unix: Sistema; Processos; Sistema de Arquivos; Rede; SSH SCP; VPN com SSH; RSYNC; SUDO; Arquivos Encriptados; Partições Encriptadas; Certificados SSL; CVS; SVN; Comando Úteis; Instalar Software; Converter Mídia; Impressão; Banco de Dados; Quota de Disco; Shells; Scripting; Programação

Comandos de Processos Linux

Listar e PIDs

Cada processo possui número único, o chamado PID. Uma lista de todos os processos em execução é exibido com o ps.

# ps -auxefw                         # Lista extensiva de todos os processos em execução

Contudo o uso mais típico é com um pipe ou com pgrep (para o OS X instale proctools a partir do MacPorts):

# ps axww | grep cron
      586  ??  Is     0:01.48 /usr/sbin/cron -s
    # ps axjf                            # Todos os processos em um formato de arvore (Linux)
    # ps aux | grep 'ss[h]'              # Encontre todos os PIDs ssh sem o PID do grep
    # pgrep -l sshd                      # Encontre os PIDs dos processos por (parte do) nome
    # echo $$                            # O PID do seu shell
    # fuser -va 22/tcp                   # Lista de processos utilizando a porta 22 (Linux)
    # pmap PID                           # Mapa de memória do processo (cace o vazamento de memória) (Linux)
    # fuser -va /home                    # Listar processos acessando a partição /home
    # strace df                          # Traçar chamadas e sinais do sistema
    # truss df                           # O mesmo acima no FreeBSD/Solaris/Unixware

Prioridade

Altere a prioridade de um processo em execução com o renice. Números negativos tem uma prioridade mais alta, o mais baixo é -20 e “nice” tem um valor positivo.

# renice -5 586                      # prioridade mais forte
    586: old priority 0, new priority -5

Inicie o processo com uma prioridade definida com nice. Positivo é “nice” ou fraco, negativo é prioridade de agendamento forte. certifique-se de que você sabe se /usr/bin/nice ou o shell built-in é utilizado (verifique com o # which nice).

# nice -n -5 top                     # prioridade mais forte (/usr/bin/nice)
# nice -n 5 top                      # Prioridade mais fraca(/usr/bin/nice)
# nice +5 top                        # tcsh builtin nice (o mesmo que acima!)

Enquanto nice altera o agendador do CPU (scheduler), um outro comando útil ionice agendará o IO de disco. Isso é muito útil para aplicações intensivas de IO (entrada e saída)(exemplo: compilar). Você pode selecionar uma classe [inativo (idle) – melhor esforço (best effort) – tempo real (real time)], a página de manual (man page) é curta e bem explicada.

# ionice c3 -p123                    # configura a classe inativa (idle class) para o pid 123 (somente em Linux)
# ionice -c2 -n0 firefox             # Roda o firefox com melhor empenho (best effort) e alta prioridade
# ionice -c3 -p$$                    # Configura a sheel atual para prioridade inativa

O último comando é muito útil para compilar (ou debugar) um grande projeto. Todo comando carregado a partir do shell terá uma prioridade lover. $$ é o seu pid shell (tente echo $$).
Os FreeBSD utilizam idprio/rtprio (0 = max priority, 31 = most idle):

# idprio 31 make                     # compila em baixa prioridade
# idprio 31 -1234                    # configura o PID 1234 com baixa prioridade
# idprio -t -1234                    # -t remove qualquer real time/idle priority

Plano de fundo ou plano frontal (Background/Foreground)

Quando iniciado a partir de um shell, processos podem ser trazidos em plano de fundo (background) e de volta para o plano frontal (foreground) com [Ctrl]-[Z] (^Z), bg e fg. Listar os processos com o jobs. Quando necessário destaca a partir de um terminal com o disown.

# ping cb.vu > ping.log
    ^Z                                   # ping está suspense (parado) com o [Ctrl]-[Z] 
    # bg                                 # Coloca em plano de fundo e continua rodando
    # jobs -l                            # Lista processos em plano de fundo
    [1]  - 36232 Running                       ping cb.vu > ping.log
    [2]  + 36233 Suspended (tty output)        top
    # fg %2                              # Traz processo  2 de volta para plano frontal
# make                               # Inicia um serviço longo de compilação mas necessita deixar o terminal
    ^Z                               # suspenso (stopped) com [Ctrl]-[Z] 
# bg                                 # Coloca em plano de fundo e continua rodando
# disown -h %1                       # destaca processo a partir do terminal, não será morto no logout

Sem caminho a frente para reanexar o processo para um novo terminal, tente reptyr (Linux).
Utilize nohup para iniciar um processo na qual tem que continuar executando quando o shell for fechado (imune a hangups).

# nohup ping -i 60 > ping.log &

Top

O programa top exibe informações de processos em execução. Veja também o programa htop a partir de htop.sourceforge.net (uma versão mais poderosa do top) que roda em Linux e em FreeBSD (ports/sysutils/htop/). Enquanto o top estiver rodando pressione a tecla h para uam visão global de ajuda (help). Teclas úteis são:

  • u [user name] para exibir somente os processos pertinentes ao usuário. Utilize + ou em barco para ver todos os usuários
  • k [pid] Matar os processos com o pid.
  • 1 para exibir todas as estatísticas dos processadores (somente em Linux)
  • R Alterna o tipo de normal/reversa.

Sigais/Kill

Termina ou envia um sinal com kill ou killall.

# ping -i 60 cb.vu > ping.log &
    [1] 4712
# kill -s TERM 4712                  # O mesmo que kill -15 4712
# killall -1 httpd                   # Kill HUP nos processos por nome exato
# pkill -9 http                      # Kill TERM nos processos por (parte do) nome
# pkill -TERM -u www                 # Kill TERM nos processos possuídos por www
# fuser -k -TERM -m /home            # mata todos os processos acessando /home (para desmontar)

Sinais importantes são:

  • 1       HUP (hang up)
  • 2       INT (interrupt)
  • 3       QUIT (quit)
  • 9       KILL (non-catchable, non-ignorable kill)
  • 15     TERM (software termination signal)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *