quarta-feira, 24 de outubro de 2012

Resposta do Exercício da Aula 9 - Gerenciamento de Processos no Linux


Respostas do Exercício relativo a aula 9 de Gerenciamento de Processos no Linux

Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:
http://www.dailson.blogspot.com.br/2012/10/exercicio-da-aula-9-gerenciamento-de.html

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://www.dailson.blogspot.com.br/2012/05/gerenciamento-de-processos-no-linux.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html


1º Liste apenas os processos que estão em execução no terminal atual
# ps

2º Liste os processos que estão em execução em todos os terminais
# ps –a

3º Liste todos os processos do Linux
# ps –A

4º Liste todos os processos do Linux, exibindo o nome dos usuários que iniciaram os processos
# ps –aux

5º Liste os processos em forma de árvore
# pstree 

6º Liste todos os processos do sistema em forma de árvore exibindo o número do processo
# pstree –p

7º Liste todos os processos do sistema em forma de árvore exibindo o nome do usuário
# pstree  -u 

8º Quais os passos necessários para matar um processo chamado openoffice que está travado no console tty1. Este processo não responde de forma alguma. Como encerrá-lo ?

Maneira 1:
Muda para outro console
# ps  -a (para pegar o número do processo do openoffice)
# kill –SIGKILL 1111 (supondo que 1111 seja o número do processo do openoffice)

Maneira 2:
Muda para outro console
# killall  –SIGKILL openoffice
 
9º Qual comando exibe detalhe sobre os processos que estão sendo executados em tempo real no servidor ?
# top
# htop

10º Diferencie kill de killall
Kill envia sinais para os aplicativos pelo número do processo
Killall envia sinais para os aplicativos pelo seu nome

11º) Explique os sinais e qual o número que equivale  a eles

SIGKILL  - Sinal que encerra o aplicativo de qualquer forma. Este sinal  não pode ser ignorado pelo aplicativo.
SIGTERM – Solicita ao aplicativo que encerre. Se possível, os dados são salvos e nenhum dado é perdido. Este sinal é semelhante a encerrar um programa normalmente. de
SIGSTOP – Congela (pausa) a execução de um aplicativo na memória.
SIGCONT  - Retoma a execução de um aplicativo que foi congelado (pausado) na memória
SIGHUP  -  Usado para reinciar daemons (programas residentes em memória)

12º - Qual a diferença entre os comandos nice e renice ?
nice – Inicia um aplicativo com a prioridade desejada
renice – Muda a prioridade de um aplicativo já em execução

13º Como executar o updatedb com a prioridade -10 ?
# nice –n -10 updatedb

14º Como mudar a prioridade do updatedb (que já está em execução) para a prioridade 15 positivo ?
# ps –a (para pegar o número do processo do updatedb)
# renice –n +15 1111 (supondo que 1111 seja o número do processo do updatedb)

15º Que comando produz este resultado ?
[1]   Stopped        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim


# jobs

17º De acordo com o cenário da questão E,  se for executado o comando fg, quem será trazido para primeiro plano?
top

18º Se for executado novamente o comando fg quem será trazido para primeiro plano?
nano

19º Qual combinação de tecla coloca um programa em segundo plano?
CTRL+Z

20º Qual comando coloca um processo em background que está parado em execução? (Cite 2)
# bg
# ps -a
# kill –SIGCONT 1111 (supondo que 1111 seja o número do processo deste processo)

 21º – O Aplicativo de backup copia.sh acaba de ser executado

./backup.sh



a) De acordo com o quadro abaixo, algum comando foi executado:


b) Que comando foi este, e o que aconteceu?
# renice –n -10 1350
A prioridade do script backup.sh foi alterada para -10

22º Observe o resultado do comando jobs
[1]   Stopped        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim


a) Que comando torna o quadro abaixo verdadeiro?
[1]   Running        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim

# bg 1

Exercício da Aula 9 - Gerenciamento de Processos no Linux

Exercício relativo a aula 9 de Gerenciamento de Processos no Linux

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://www.dailson.blogspot.com.br/2012/05/gerenciamento-de-processos-no-linux.html

As respostas deste exercício está no seguinte link:
http://www.dailson.blogspot.com.br/2012/10/resposta-do-exercicio-da-aula-9.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html


1º Liste apenas os processos que estão em execução no terminal atual

2º Liste os processos que estão em execução em todos os terminais

3º Liste todos os processos do Linux

4º Liste todos os processos do Linux, exibindo o nome dos usuários que iniciaram os processos

5º Liste os processos em forma de árvore

6º Liste todos os processos do sistema em forma de árvore exibindo o número do processo

7º Liste todos os processos do sistema em forma de árvore exibindo o nome do usuário

8º Quais os passos necessários para matar um processo chamado openoffice que está travado no console tty1. Este processo

não responde de forma alguma. Como encerrá-lo ?

9º Qual comando exibe detalhe sobre os processos que estão sendo executados em tempo real no servidor ?

10º Diferencie kill de killall

11º) Explique os sinais e qual o número que equivale  a eles

SIGKILL
SIGTERM
SIGCONT
SIGHUP

12º - Qual a diferença entre os comandos nice e renice ?

13º Como executar o updatedb com a prioridade -10 ?

14º Como mudar a prioridade do updatedb (que já está em execução) para a prioridade 15 positivo ?

15º Que comando produz este resultado ?
[1]   Stopped        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim

17º De acordo com o cenário da questão E,  se for executado o comando fg, quem será trazido para primeiro plano?

18º Se for executado novamente o comando fg quem será trazido para primeiro plano?

19º Qual combinação de tecla coloca um programa em segundo plano?

20º Qual comando coloca um processo em background que está parado em execução? (Cite 2)

21º – O Aplicativo de backup copia.sh acaba de ser executado

./backup.sh



a) De acordo com o quadro abaixo, algum comando foi executado:



b) Que comando foi este, e o que aconteceu?

22º Observe o resultado do comando jobs
[1]   Stopped        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim

a) Que comando torna o quadro abaixo verdadeiro?
[1]   Running        programa.sh
[2]-  Stopped        nano 
[3]+  Stopped        top 
[4]   Stopped        htop 
[5]   Stopped        vim

sexta-feira, 28 de setembro de 2012

Lançamento da Pós-Graduação em Linux e Windows da Uninassau

Aconteceu mo sábado 22 de Setembro de 2012, na Uninassau o Lançamento Oficial de duas novas Pós-graduações.

Pós-Graduação em Administração de Redes Linux

Pós-Graduação em Administração de Redes Windows.

Além dos alunos interessados, estiveram presentes o corpo docente que está a frente de toda a parte acadêmica da Pós-graduação sob a coordenação de Eduardo Arruda. Coordenador de Cursos da Universidade.

Os professores presentes foram:
Dailson Fernandes
Eduardo Neves
Fred Madeira
Alberto Viegas
Eduardo Arruda


Apresentação do Evento com o Professor Eduardo Arruda, 
Coordenador de Curso da Uninassau.


Os professores responsáveis: (Da esquerda pra direita) 
Prof. Fred Madeira, Eduardo Neves, Alberto Viegas e Dailson Fernandes.




Corpo Docente.



Foto com alguns alunos presentes.

terça-feira, 25 de setembro de 2012

Frase do Dia

"Quando você perceber que, para produzir, precisa obter a autorização de quem não produz nada; quando comprovar que o dinheiro flui para quem negocia não com bens, mas com favores; quando perceber que muitos ficam ricos pelo suborno e por influência, mais que pelo trabalho, e que as leis não nos protegem deles, mas, pelo contrário, são eles que estão protegidos de você; quando perceber que a corrupção é recompensada, e a honestidade se converte em auto sacrifício; então poderá afirmar, sem temor de errar, que sua sociedade está condenada".

Frase da filósofa russo-americana Ayn Rand (judia, fugitiva da revolução russa, que chegou aos Estados Unidos na metade da década de 1920), mostrando uma visão com conhecimento de causa:

segunda-feira, 17 de setembro de 2012

Frase do Dia

"É preciso ser duro, mas sem perder a ternura, jamais..."
Che Guevara

sexta-feira, 14 de setembro de 2012

Glances - Um Excelente Software de Monitoramento de Processos e Perfomance

screenshot
Olho em Seu Sistema!

Este é o lema principal do glances. Em uma tela só, números sobre processos, cpu, memória e outros parâmetros que são essenciais para um Sysadmin manter o monitoramento dos seus servidores ao alcance dos seus olhos.

Glances é um software de monitoramento CLI (Command Line Interface) baseado em Curses. Não espere gráficos, imagens e animações... É um software de monitoramento presencial. ;)

A página oficial é esta: http://nicolargo.github.com/glances/ e é mantido pelo  programador Nicolas Hennion. O Software é feito em Python

A Interface dele trás  dados imediatos sobre:
  • O uso do processador (por core, por processador);
  • Carga do Sistema 
  • Uso da Memória RAM;
  • Uso da Memória SWAP;
  • Quantidade de processos (ordenado por uso de CPU, Memória ...);
  • Uso das placas de rede;
  • Uso dos HDs e partições (Inputs e Outputs);
  • Uso de espaço das partições e dispositivos de armazenamento.

A Tela é simples, mas é atualizada a cada segundo e tem tudo que um Sysadmin precisa.

Veja este exemplo numa interface de 80x24 linhas (Uma tela típica de console)

screenshot


Outro exemplo ele em uma tela maior (wide) de 90x24.

screenshot

Note no exemplo da figura acima, que  ele gera alertas quando alguns limites são alcançados.

Dica:
Não espere gerenciar processos com o Glances, para isso use o HTOP que abordei neste tópico: http://www.dailson.blogspot.com.br/2012/05/gerenciamento-de-processos-no-linux.html

Instalação:

Pré-requesitos:
  • Python 2.6 ou superior;
  • Para Distribuições baseadas em Debian, o Pacote build-essential  (para instalação  via Pypi e setup.py);
  • Para Distribuições baseadas em Redhat/Fedora/CentOS, o Pacote Development Tool  (para instalação  via Pypi e setup.py);
  • python-dev (para instalação via Pypi);
  • python-setuptools (para instalação via setup.py);
  • python-psutil 0.4.1 ou superior;
  • python-jinja2 2.0 ou superior (opcional para exportar HTML );
Se você for instalar via apt-get ou yum não se preocupe, todas estas dependências são resolvidas automaticamente.

Método 1: Instalando em Distribuições Debian.

$ sudo apt-get install python-pip build-essential python-dev
$ sudo pip install glances

Método 2: Utilizando os repositório PPA no Ubuntu/Mint...

$ sudo add-apt-repository ppa:arnaud-hartmann/glances-stable
$ sudo apt-get update
$ sudo apt-get install glances



Método 3: Compilando através do código fonte

$ wget -O /tmp/glances-last.tgz https://github.com/nicolargo/glances/tarball/master
$ sudo apt-get install python-setuptools build-essential python-dev
$ cd /tmp
$ tar zxvf glances-last.tgz
$ cd nicolargo-glances-*
$ sudo python setup.py install



 Para executar, basta apenas digitar

$ glances

 Por padrão, o glances atualiza a tela a cada segundo, se quiser mudar o tempo, use o parâmetro -t

$ glances -t 5

O Status das Cores
É importante ressaltar aqui o que cada cor representa no glances
VERDE: Tudo Certo!
AZUL: Atenção ...
MAGENTA: Cuidado ...
VERMELHO: Estado Crítico!

Durante o uso do Glances, você pode utilizar algumas teclas de atalho para mudar o comportamento dele.
h --> exibe ajuda
c --> ordena os processos por consumo do processador
d --> habilita/desabilita a exibição do Status de I/O do Disco
f --> habilita/desabilita a exibição do Status de I/O dos arquivos
I --> habilita/desabilita os logs (alertas no fim da tela quando algum limite é alcançado).
n --> habilita/desabilita a exibição do Status de I/O das placas de rede
p --> ordena pelo nome dos processsos
q --> sai


As colunas exibidas pelo Glances são:

  • VIRT: Memória virtual em bytes
  • REST: Total residente em memória em bytes
  • CPU%: % de CPU utilizada
  • MEM%: % de MEM utilizada
  • PID: Identificador do Processo
  • USER: Usuário dono do Processo
  • NI: Prioridade do processo.
  • S: Status do processo:
    • R - Running
    • D - Sleeping (não pode ser interrompido)
    • S - Sleeping (pode ser interrompido)
    • T - Traced ou Stopped
    • Z - Zombie
    • IO Read and Write
    • TIME+: Uso total da CPU em tempo
    • NAME: Nome do processo
Fonte:
 http://nicolargo.github.com/glances/

Este software foi uma dica de Luciano Domingues, da Suporte Informática.

quarta-feira, 12 de setembro de 2012

Respostas do Exercício relativo a Aula 7 e 8 de Manipulação de Pacotes com o YUM e APT-GET.


Antes de ver as respostas deste exercício, você pode clicar no link abaixo e tentar resolvê-lo

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:

Você pode encontrar todos os resumos de aula no link abaixo:

Em relação a instalação de pacotes no Linux, responda:
1º  Qual a diferença entre os seguintes comandos?

a) Em relação ao Debian
apt-get update
Apenas atualiza a lista de pacotes disponível no repositório.

apt-get upgrade
Atualiza todos os pacotes que tem versão mais nova no repositório.

apt-get dist-upgrade
Atualiza todos os pacotes que tem versão mais nova no repositório. Além disso remove pacotes obsoletos (que não são mais necessário ao sistema).

b) Em relação ao Redhat
yum check-update
Apenas informa que pacotes necessitam de atualização.

yum update
 Atualiza todos os pacotes que tem versão mais nova no repositório.

yum upgrade
 Atualiza todos os pacotes que tem versão mais nova no repositório. Além disso remove pacotes obsoletos (que não são mais necessário ao sistema).

2º O Que o comando do-release-upgrade faz no Ubuntu?
Este comando é capaz de atualizar o Ubuntu para uma nova versão. Exemplo. Da versão 11.10 para a versão 12.04.

3º Qual comando instala o aplicativo hping nas distribuições baseadas em Debian?
apt-get install hping3
Obs: para saber qual o nome do pacote faça:
apt-cache search hping

4º Qual comando reinstala o aplicativo hping nas distribuições baseadas em Debian?
apt-get install –-reinstall hping3

5º Cite pelo menos 3 jogos de Xadrez em Debian (Em Inglês chess).
Obs: Faça o Mesmo no Redhat
apt-cache search chess

Em Redhat
yum search chess

6º Qual a diferença entre:
apt-get install gnome-desktop e apt-get install –d gnome-desktop
Quando a opção –d é utilizada, todos os pacotes referentes a instalação são baixados para a máquina, mas nenhum é instalado.

7º Como atualizar o htop no Debian?
apt-get install htop

8º Como deixar totalmente atualizado o CentOS ?
yum update

9º O que são repositórios?
São sites que contém os pacote  de uma determinada distribuição

10º Qual é o arquivo de configuração dos repositórios no Debian?
/etc/apt/sources.list

11º Qual é/são o(s) arquivo(s) de configuração dos repositórios no Redhat?
Não é apenas  um arquivo. É um diretório que contém vários arquivos. Cada um aponta para um repositório. O diretório é /etc/yum.repos.d

12º Como evitar que o Redhat sempre leia os repositórios a cada comando yum digitado?
No arquivo /etc/yum.conf descomentar a linha metadata_expire = 90m
Isso instrui ao yum a usar por 90 minutos os metadados baixado dos respositórios.
13º Qual diretório fica os arquivos que são baixados pelo apt-get e yum ?
apt-get à /var/cache/apt/archives
yum à /var/cache/yum

Obs:
Para que o yum faça cache, é necessário fazer a instalação do pacote yum-downloadonly.
yum install yum-downloadonly
e forçar o download do pacote com o seguinte comando:
yum install --downloadonly pacote 
Exemplo:
yum install --downloadonly htop

Outro método.
Instale o pacote yum-utils com o comando:
yum install yum-utils.noarch
E depois faça os downloads de pacotes com o seguinte comando:
yumdownloader pacote

14º Qual o tipo de pacote que o YUM Manipula?
Arquivos .rpm

15º Qual o tipo de pacote que o apt-get manipula?
Arquivos .deb

16º Como listar os grupos de Pacotes do Redhat?
yum grouplist

17º Como instalar o grupo de pacotes Development Tools ? (Cite as duas formas possíveis)
yum install "@Development Tools"
yum groupinstall "Development Tools"

18º Qual outro gerenciador de pacotes conhecido no Debian?
aptitude
No Servidor X = synaptic

Respostas do Exercício 5 - Manipulação de Textos com o Editor Vi

Respostas do Exercício relativo a Aula 5 

Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:
http://www.dailson.com.br/2012/02/exercicio-da-aula-1-de-linux.html

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://dailson.blogspot.com/2010/10/comandos-basicos-do-vi.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html 


1 - Crie um arquivo chamado aula1.txt com o seguinte conteúdo:
aula
papel
bola
Abrir o arquivo no VI: vi aula1.txt
Para digitar o conteúdo, use a tecla i (Insert) e depois digite o texto.

2 - Crie um arquivo chamado aula2.txt com o seguinte conteúdo:
anel
quadrado
som
Abrir o arquivo no VI: vi aula2.txt
Para digitar o conteúdo, use a tecla i (Insert) e depois digite o texto.

3 - Sem sair da janela atual, abra o arquivo aula1.txt
Tecla esc (Modo de comando) - :new aula1.txt

4 - Copie todo o conteúdo de aula1.txt para dentro de aula2.txt
Ctrl + V (seta para baixo)  depois “y” para copiar
Ctrl “ww” , escolhe o loca e “p” para colar.

5 - Apague a 3 linha com os comandos do vi
Digita nº 3 + “dd” + Enter 
Ou cursor na terceira linha e digita dd

6 - substitua a palavra "aula" por "ead"
:%s/aula/ead/g

7 - Copia todo o conteúdo de aula2.txt para aula1.txt
Use o comando “v” + seta para selecionar.
Pressione “y” para copiar.
CTRL + “WW” para ir para a outra janela.
Escolhe o local para a colar e pressiona “p”

8 - Salve os dois arquivos
: wall


9 - Encerre o vi
:x (duas vezes para fechar os dois arquivos)


Exercício da Aula 5 - Editor de Textos Vi


Exercício relativo a Aula 5 de Manipulação de Arquivos com o editor Vi

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://dailson.blogspot.com/2010/10/comandos-basicos-do-vi.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html 

As respostas deste exercício você encontra no seguinte link:

1º Crie um arquivo chamado aula1.txt com o seguinte conteúdo:
aula
papel
bola

2º Crie um arquivo chamado aula2.txt com o seguinte conteúdo:
anel
quadrado
som

3º Sem sair da janela atual, abra o arquivo aula1.txt

4º Copie todo o conteúdo de aula1.txt para dentro de aula2.txt

5º Apague a 3 linha com os comandos do vi

6º substitua a palavra "aula" por "ead"

7º Copia todo o conteúdo de aula2.txt para aula1.txt

8º Salve os dois arquivos

9º Encerre o vi

Frase do Dia

"O Conhecimento nos faz responsáveis."
Che Guevara

terça-feira, 11 de setembro de 2012

Vídeo Aula: Introdução a Redes de Computadores - Aula 1/3


Esta é uma série de 3 aulas que foram gravadas para o Curso Técnico de Informática do Governo do Estado de Pernambuco. Esta disciplina foi a Introdução a Redes de Computadores e teve o conteúdo divido em 3 semanas, cada uma com 15h/aula.
As aulas tinham que ser gravadas em no máximo 15 minutos. Este foi o padrão adotado pela Secretaria de Educação do Estado de Pernambuco.

Veja também os outros vídeos:
Aula 2
Aula 3


Vídeo Aula: Introdução a Redes de Computadores - Aula 2/3


Esta é uma série de 3 aulas que foram gravadas para o Curso Técnico de Informática do Governo do Estado de Pernambuco. Esta disciplina foi a Introdução a Redes de Computadores e teve o conteúdo divido em 3 semanas, cada uma com 15h/aula.
As aulas tinham que ser gravadas em no máximo 15 minutos. Este foi o padrão adotado pela Secretaria de Educação do Estado de Pernambuco.

Veja também os outros vídeos:
Aula 1
Aula 3



Video Aula: Introdução a Redes de Computadores - Aula 3/3

Esta é uma série de 3 aulas que foram gravadas para o Curso Técnico de Informática do Governo do Estado de Pernambuco. Esta disciplina foi a Introdução a Redes de Computadores e teve o conteúdo divido em 3 semanas, cada uma com 15h/aula.
As aulas tinham que ser gravadas em no máximo de 15 minutos para seguir os padrões da Secretaria de Educação do Estado.

Veja também os outros vídeos:
Aula 1
Aula 2

segunda-feira, 10 de setembro de 2012

Exercício relativo a Aula 7 e 8 de Manipulação de Pacotes com o YUM e APT-GET.


Exercício relativo a Aula 5 e 6 de Manipulação de Pacotes com o YUM e APT-GET.

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://www.dailson.com.br/2011/08/guia-de-comandos-do-yum.html
http://www.dailson.com.br/2009/03/guia-de-comandos-para-utilizacao-do-apt.html

As respostas deste exercício está no seguinte link:
http://www.dailson.blogspot.com.br/2012/09/respostas-do-exercicio-relativo-aula-5.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html

As respostas deste exercício você encontra no seguinte link:
http://www.dailson.blogspot.com.br/2012/09/respostas-do-exercicio-relativo-aula-5.html

Em relação a instalação de pacotes no Linux, responda:
1º  Qual a diferença entre os seguintes comandos?
a) Em relação ao Debian
apt-get update
apt-get upgrade
apt-get dist-upgrade

b) Em relação ao Redhat
yum check-update
yum update
yum upgrade

2º O Que o comando do-release-upgrade faz no Ubuntu?

3º Qual comando instala o aplicativo hping nas distribuições baseadas em Debian?

4º Qual comando reinstala o aplicativo hping nas distribuições baseadas em Debian?

5º Cite pelo menos 3 jogos de Xadrez em Debian (Em Inglês chess).
Obs: Faça o Mesmo no Redhat

6º Qual a diferença entre:
apt-get install gnome-desktop e apt-get install –d gnome-desktop

7º Como atualizar o htop no Debian? - apt-get install htop

8º Como deixar totalmente atualizado o CentOS ?

9º O que são repositórios?

10º Qual é o arquivo de configuração dos repositórios no Debian?

11º Qual é/são o(s) arquivo(s) de configuração dos repositórios no Redhat?

12º Como evitar que o Redhat sempre leia os repositórios a cada comando yum digitado?

13º Qual diretório fica os arquivos que são baixados pelo apt-get e yum ?

14º Qual o tipo de pacote que o YUM Manipula?

15º Qual o tipo de pacote que o apt-get manipula?

16º Como listar os grupos de Pacotes do Redhat?

17º Como instalar o grupo de pacotes Development Tools ? (Cite as duas formas possíveis)

18º Qual outro gerenciador de pacotes conhecido no Debian?


quarta-feira, 16 de maio de 2012

Gerenciamento de Processos no Linux


Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode fazer o exercício desta aula no seguinte link:
http://dailson.blogspot.com.br/2012/10/exercicio-da-aula-9-gerenciamento-de.html

As respostas deste exercício estão no seguinte link:
http://www.dailson.blogspot.com.br/2012/10/exercicio-da-aula-9-gerenciamento-de.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html

Comunicação entre processos:
O Linux possui diversas formas de realizar comunicação entre processos, também conhecido com IPC. Estas formas de comunicação se referem a processos em execução na mesma máquina, o que não inclui sockets ou RPC (são para comunicação entre máquinas distintas).

Dentre as técnicas de comunicação entre processos fornecidas pelo Linux, convém citar:

a) por memória compartilhada: através de diretivas shm* pode-se disponibilizar uma área de memória comum à vários processos. Simples: quando um processo quer enviar dados ao outro, põe na memória.

b) pipes: um método muito interessante onde se cria um canal bidirecional na tabela de descritores, como se fosse arquivo, mas não é (e não tem I/O). Quando você faz um ls -la | sort está usando pipe!

c) sinais: quando um processo quer sinalizar algo a outro processo. Ao contrário das demais nesta não se envia dados mas apenas um valor numérico.

Existem outras formas de comunicação como semáforos, fila de mensagens e até mesmo morte de filho, que é considerada uma comunicação. Se você digitar ipcs na linha de comando irá ver os canais de comunicação atualmente em uso (não sinais).
Texto retirado do Artigo: http://www.vivaolinux.com.br/artigo/Sinais-em-Linux/?pagina=1

Comandos:
Listar os processos do terminal
# ps

Listar os processos de todos os terminais
# ps -a
# ps a (exibe os processos mais detalhes)

LIstar os processos dos usuários
# ps -u
# ps -au

Lista todos os processos do Sistema
# ps -A
# ps -ef
# ps -eF
# ps -ely
# ps ax
# ps aux (exibe uma coluna com o nome do usuário que iniciou o  processo)

Exibe todos os processos em forma de árvore
# pstree
# ps -ejH
# ps axfj
Obs: teste os vários parâmetros do comando pstree:
-a
    Mostra opções passadas na linha de comando.
-c
    Mostra toda a estrutura (inclusive sub-processos do processo pai).
-G
    Usa caracteres gráficos no desenho da árvore de processos.
-h
    Destaca o processo atual e seus antecessores.

-H [pid]
    Destaca o processo especificado.
-l
    Não faz quebra de linha
-n
    Classifica pelo número PID ao invés do nome.
-p
    Mostra o número PID entre parênteses após o nome do processo.
-u
    Mostra também o dono do processo.
-U
    Usa o conjunto de caracteres Unicode para o desenho da árvore.


Exibe informações sobre Threads
# ps -eLf
# ps axms

Exibe informações de segurança dos processos
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

Exibe todos os processos que estão sendo executados com permissões de root (real e com ID)
#  ps -U root -u root u

Especificando as colunas para visualização:
Exemplos:
Apenas o Numero do processo e o comando que o gerou
# ps ao PID,COMMAND

Apenas o numero do processo, o comando que gerou o pid, o uso da CPU e da memória
# ps ao pid,%cpu,%mem,command

Outros exemplos tirados do manual do ps:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eo pid,tt,user,fname,tmout,f,wchan

Exibir processos e prioridade do processo (Coluna NI)
# ps l
# ps -l
# ps -Al
# ps -el

Significado das Principais colunas do comando TOP:
    USER - Nome do usuário dono do processo.
    UID - Número de identificação do usuário dono do processo.
    PID - Número de identificação do processo.
    PPID - Número de identificação do processo pai de cada tarefa.
    PRI - Número de prioridade da tarefa. (Números altos são prioridades baixas).
    NI - Valor preciso da prioridade da tarefa.
    %CPU - O consumo de processamento do processo.
    %MEM - O consumo de memória do processo.
    SIZE - Tamanho do código da tarefa em kilobytes.
    RSS - Soma total da memória física usada pelo processo, em kilobytes.
    WCHAN - Endereço ou nome da função do kernel da tarefa que está atualmente suspensa.
    STAT - Estado do processo: S - Suspenso, R - em Execução, T - Interrompido, Z - Terminado, etc.
    TTY - Terminal onde são executados os processos.
    TIME - Tempo total da CPU usado pelo processo desde que foi iniciado.
    COMMAND - Nome do comando do processo.


Entendendo os Sinais:
Sinais são usados quando se deseja enviar uma mensagem para um processo, mas esta mensagem não é um texto, mas sim um código cujo significado é pré determinado. Antes de mais nada, para dar o melhor exemplo possível, quando se executa um kill 7000 está se enviando para o processo 7000 o sinal de código 15 que significa algo como "Caro processo, queria gentilmente terminar a sua execução".
Como o sinal 15 significa terminar, o processo irá terminar a sua execução. Como todos já devem saber, se o "gentil" processo recusar-se a terminar, posso forçar com um kill -9 7000, onde envio para ele o sinal 9 que significa algo como: "Morra!" (uma vez disse em um curso que com sinal 15 eu dou a arma para o processo esperando que ele aperte o gatilho, depois de escrever o seu testamento, fechar suas finanças etc. Com o -9 é um tiro na testa sem aviso).


Principais Sinais:
Sinal 1: Significa reinício do programa. Este sinal é chamado de SIGHUP.

Sinal 2: Sinal chamado de SIGINT. Causa uma interrupção no programa. Falando em termos práticos, é um sinal 2 que o programa recebe quando se pressiona Control+C.

Sinal 15: esta é a solicitação de morte, chamada de SIGTERM. Ao receber um sinal 15 o processo deveria preparar-se para terminar, fazendo "seus últimos pedidos" e ele mesmo encerrando normalmente sua execução.

Sinal 9: SIGKILL. Este é a morte indefensável. Não pode ser mascarado, ou seja, o programador não consegue substituir a rotina de tratamento do Sistema Operacional que simplesmente tira o processo da fila de prontos. Deve ser usado em último caso, pois um sinal 15 é mais elegante por dar a chance ao processo de se preparar para sua morte.

Sinal 20: SIGTSTOP. Este sinal de STOP faz com que o processo interrompa a sua execução. Veja, ele não termina, apenas interrompe.

Sinal 18: SIGCONT. Este sinal de CONTINUAR, faz com que o processo que foi interrompido pelo Sinal 20, continue seu processamento.

Fonte: http://www.vivaolinux.com.br/artigo/Sinais-em-Linux/?pagina=2


Enviando Sinais para os Processos:
Vamos utilizar dois comandos. O KILL e o KILLALL.
A diferença entre estes dois comandos é que o KILL envia sinais para os números dos processos e o KILLALL envia para nomes.

Exemplo:
Abro o vim em um terminal. E suponho que ele está travado. Quero enviar um sinal para este processo. Com o comando KILL precisariamos de dois passos:

1º Vou para outro terminal e executo o comando ps a
2º Anoto o PID do VIM
3º kill -15 o número do PID do vim.
   Exemplo: kill -15 4567

Usando o KILLALL, iríamos para outro terminal e fariamos apenas:
# killall -15 vim
Obs: Porém se tiver mais programas vim abertos, todos receberão o mesmo sinal.

Para os exemplos abaixo, vamos supor que estamos enviando sinais para o processo 4567 - backup.sh

Reiniciando o processo
# kill -SIGHUP 4567
# kill -1 4567

Interrompendo o programa
# kill -SIGINT 4567
# kill -2 4567

Encerrando um programa (educadamente)
# kill -SIGTERM 4567
# kill -15 4567

Matando um processo (LUNGA MODE=ON)
#  kill -SIGKILL 4567
# kill -9 4567

Parando (congelando) um processo na memória
# kill -SIGSTOP 4567
# kill -20 4567

Retomando o processo (congelado no tópico anterior)
# kill -SIGCONT 4567
# kill -18 4567

Primeiro Plano (FOREGROUND) e Segundo Plano (BACKGROUND)
Você sabia que no mesmo terminal posso iniciar vários processos e deixá-lo em background. Ainda tenho a opção de deixá-lo parado ou executando.

Para termos um bom exemplo de programas executando em segundo plano, vamos criar um pequeno script que terá a função apenas de contar de 1 até infinito.

Passos para escrever o script:
vim conta.sh
#!/bin/bash
while :  ;
do
   let i++
done

Pressione a tecla ESC e digite :x

Tornando o script executável
# chmod +x conta.sh

Executando o script:
# ./conta.sh

Parece que ele não está fazendo nada, mas ele está contando de 1 até infinito. Para cancelar o programa, basta digitar CTRL+C
OBs: CTRL+C é o mesmo que kill -SIGINT ou kill -2

Iniciando um processo.
Vamos colocar em segundo plano os programas vim /etc/services, nano, man ls, cat /etc/services | more,

# vim /etc/services
Pressione CTRL+Z
O processo vai para segundo plano.

# man ls
Pressione CTRL+Z
O processo vai para segundo plano.

# cat /etc/services | less
Pressione CTRL+Z
O processo vai para segundo plano.

# cat /etc/services | more
Pressione CTRL+Z
O processo vai para segundo plano.

E por ultimo vamos chamar o nosso programa, o conta.sh
# ./conta.sh

Exibindo os processos que estão em segundo plano (background):
# jobs
Se você seguiu meus exemplos acima, você terá esta lista:

[1]   Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]-  Stopped                 cat /etc/services | more
[5]+  Stopped                 ./conta.sh

Ativando programas que estão em Segundo Plano
Na listagem acima, o processo conta.sh é um programa que está com o status Stopped. Mas sabemos que este programa tem a função de contar. Para ativar este programa você tem duas

maneiras possíveis:
A primeira é mandar o sinal SIGCONT para ele. A outra, bem mais fácil é fazer o seguite:
# bg 5

Ao executar o comando jobs, veja como ficou nossa lista:
[1]   Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]-  Stopped                 cat /etc/services | more
[5]+  Running                 ./conta.sh &

Note que agora o conta.sh status Running (executando) e apareceu um novo símbolo ao lado do nome do programa: &

O Símbolo & avisa que o programa está sendo executado em segundo plano.

Se você desejar parar novamente o conta.sh, basta digitar:
# killall -SIGSTOP conta.sh

Mais uma vez, vamos ver como ficou através do comando jobs
[1]   Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]-  Stopped                 cat /etc/services | more
[5]+  Running                 ./conta.sh &

Outra maneira de ativá-lo novamnete é enviando um sinal através do comando KILL
# killall -SIGCONT conta.sh

Trazendo para primeiro plano (foreground) programas que estão em segundo plano (background).

De posse da lista de processos que estão em segundo plano, basta você digitar o comando fg e número do programa nesta lista e você terá o programa de volta em primeiro plano.
Observe a lista do comando jobs:
[1]   Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]-  Stopped                 cat /etc/services | more
[5]+  Running                 ./conta.sh &


# fg 1 (trará o vim /etc/services para primeiro plano)
Para voltar para background digite mais uma vez CTRL+Z.

Emita o comando jobs mais uma vez:
# jobs

Veja o resultado da lista:
[1]+  Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]   Stopped                 cat /etc/services | more
[5]-  Stopped                 ./conta.sh

Notou que agora o sinal de + saiu da posição 5 e foi para a posição 1? E o sinal de menos da posição 4 para a posição 5?
Estes sinais demonstram os dois últimos programas que foram colocados em backgroud. Caso você digite fg sem parametros, o programa que virá para primeiro plano é o que tem o

sinal + e o próximo da fila que era o - torna-se + e assim por diante.

Colocando programas em segundo plano diretamente na linha de comando.
# ./conta.sh &
O Uso do & já coloca o programa em segundo plano em execução.
Repita este comando várias vezes, e veja um resultado semelhante a este:

[1]+  Stopped                 vim /etc/services
[2]   Stopped                 man ls
[3]   Stopped                 cat /etc/services | less
[4]   Stopped                 cat /etc/services | more
[5]-  Stopped                 ./conta.sh
[6]   Running                 ./conta.sh &
[7]   Running                 ./conta.sh &
[8]   Running                 ./conta.sh &
[9]   Running                 ./conta.sh &
[10]   Running                 ./conta.sh &
[11]   Running                 ./conta.sh &

Obs: Toda vez que você chama um programa já em segundo plano, o Shell exibe na linha abaixo o número do processo no qual ele está submetido.

[dailson@server tmp]$ ./conta.sh &
[11] 12642

Outra observação importante é que quando executamos um programa em segundo plano e ele acaba sua execução o Shell avisa emitindo uma mensagem na própria linha de comando.
Teste você mesmo. Execute o comando que atualiza o banco de dados do comando locate.
# updatedb &
[12] 12649

Fique pressionando enter algumas vezes. Em determinado momento o Shell emite a seguinte mensagem:
Done [12] 12649
Informando que o processo já foi concluido.

Prioridade de Processos no Linux
Os processos no Linux (no espaço do usuário) vão de -20 a +19.
A prioridade padrão de qualquer processo iniciado pelo usuário é 0.
Numeros negativos, indicam maior prioridade e numeros positivos, prioridades baixas.

Para visualizar a prioridade dos processos do sistema, utilize o seguinte comando:

# ps al

O Resultado é parecido com este:
F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
4     0  3988     1  17   0  3016  400 ?      Ss+  tty1       0:00 /sbin/mingetty tty1
4     0  3989     1  16   0  2708  400 ?      Ss+  tty2       0:00 /sbin/mingetty tty2
4     0  3990     1  17   0  2156  400 ?      Ss+  tty3       0:00 /sbin/mingetty tty3
4     0  3991     1  17   0  2204  400 ?      Ss+  tty4       0:00 /sbin/mingetty tty4
4     0  3992     1  17   0  2044  400 ?      Ss+  tty5       0:00 /sbin/mingetty tty5
4     0  3993     1  16   0  2884  400 ?      Ss+  tty6       0:00 /sbin/mingetty tty6
0   525 16849 21405  17   0  3724  636 -      R+   pts/0      0:00 ps al
0   525 21405 21404  15   0  6168 1472 wait   Ss   pts/0      0:00 -bash

Ou se preferir, você pode filtrar com o comando que aprendemos na aula de ps:
# ps ao pid,ni,command (assim só aparece o pid, a coluna NICE e o comando que gerou).


Observe a coluna: NI. Ela tem os valores que falamos.
Note que todo processo iniciado pelo usuário tem prioridade 0.
Vamos ver agora a listagem completo com os processos do sitema.

# ps -axl | more

F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  16   0  2512  548 ?      S    ?          0:00 init [3]
1     0     2     1 -100  -     0    0 migrat S    ?          0:03 [migration/0]
1     0     3     1  34  19     0    0 ksofti SN   ?          0:00 [ksoftirqd/0]
1     0     4     1 -100  -     0    0 migrat S    ?          0:02 [migration/1]
1     0     5     1  34  19     0    0 ksofti SN   ?          0:00 [ksoftirqd/1]
1     0     6     1 -100  -     0    0 migrat S    ?          0:02 [migration/2]
1     0     7     1  34  19     0    0 ksofti SN   ?          0:00 [ksoftirqd/2]
1     0     8     1 -100  -     0    0 migrat S    ?          0:02 [migration/3]
1     0     9     1  34  19     0    0 ksofti SN   ?          0:00 [ksoftirqd/3]
1     0    10     1   5 -10     0    0 worker S<   ?          0:00 [events/0]
1     0    11     1   5 -10     0    0 worker S<   ?          0:00 [events/1]
1     0    12     1   5 -10     0    0 worker S<   ?          0:00 [events/2]
1     0    13     1   5 -10     0    0 worker S<   ?          0:00 [events/3]
1     0    14     1   6 -10     0    0 worker S<   ?          0:00 [khelper]
1     0    15     1   5 -10     0    0 worker S<   ?          0:00 [kthread]
1     0    16    15  15 -10     0    0 worker S<   ?          0:00 [kacpid]
1     0    94    15   5 -10     0    0 worker S<   ?          0:00 [kblockd/0]
1     0    95    15   5 -10     0    0 worker S<   ?          0:00 [kblockd/1]
1     0    96    15   5 -10     0    0 worker S<   ?          0:00 [kblockd/2]
1     0    97    15   5 -10     0    0 worker S<   ?          0:00 [kblockd/3]


Note na coluna NI que existem processos com prioridades baixíssimas (19) e outros com prioridade -10.

Iniciando processos fora da prioridade Padrão

Vamos aprender a usar o comando nice

# nice -n prioridade processo

Exemplo: Vamos usar o nosso programa conta.sh como exemplo. Vamos iniciá-lo com a menor prioridade possível e já em segundo plano:

# nice -n +19 ./conta.sh &

Veja o resultado:
# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   525 26483 21405 99  99  19 -  1234 -      pts/0    00:00:02 conta.sh
0 R   525 26484 21405  0  76   0 -   878 -      pts/0    00:00:00 ps

Agora vamos iniciá-lo com a prioridade -10
# nice -n -10 ./conta.sh &

Veja o resultado:
# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   525 26483 21405 99  99 -10 -  1234 -      pts/0    00:00:02 conta.sh
0 R   525 26484 21405  0  76   0 -   878 -      pts/0    00:00:00 ps

Alterando a prioridade de um processo que já está em execução.

Desta vez vamos utilizar o comando renice.

# renice -n prioridade processo

Vamos usar o exemplo anterior. O conta.sh tem o pid 26483 e o processo tem prioridade -10.
Vamos mudar para -5 (lembre-se que o processo já está em execução)
# renice -5 -p 26483

Veja o resultado:
# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   525 26483 21405 99  99  -5 -  1234 -      pts/0    00:00:02 conta.sh
0 R   525 26484 21405  0  76   0 -   878 -      pts/0    00:00:00 ps

Vamos mudar para 0
# renice 0 -p 26483

Veja o resultado:
# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R   525 26483 21405 99  99   0 -  1234 -      pts/0    00:00:02 conta.sh
0 R   525 26484 21405  0  76   0 -   878 -      pts/0    00:00:00 ps

NOHUP

O nohup é um comando que faz com que os processos ignorem o sinal hangup (sinal 1 - interrupção).
Vamos executar um processo que não poderá ser finalizado, veja o exemplo:
# nohup ./conta.sh
nohup: appending output to `nohup.out'

Este recurso é utilizado como recurso de iniciar programas e fazer lougout. Com isso o programa fica rodando em background mesmo que o terminal (ou janela do ambiente gráfico)

seja encerrado. O Resultado do comando é direcionado para o arquivo nohup.out

Veja este exemplo:
# nohup vim
# killall -1 vi
# ps -aux | grep vi
root       988  0.6 11.0 22120 13152 ?       S    08:27   0:06 kghostview /mnt/w
root      1001 14.3  3.0  8500 3572 pts/3    RN   08:38   0:50 vi
root      1026  0.0  0.5  1724  668 pts/4    S    08:44   0:00 grep vi

Observe que o processo não foi finalizado, então agora vamos finalizá-lo:

Monitorando processos em Tempo Real

Para
monitorar processos em tempo real poderemos utilizar duas ferramentas: o top e o htop.
O comando top já vem por padrão nas distribuições linux.
Basta digitar:
# top
Este programa atualiza a tela a cada 5s. Se quiser uma monitoração segundo a segundo, digite:
# top -d 1

O Top também aceita comandos quando está em execução:
[Space]    Atualizar a tela imediatamente
[h]    Exibir uma tela de ajuda
[k]    Matar (kill) um processo. Você deverá indicar o ID do processo e o sinal a ser enviado para ele.
[n]    Alterar o número de processos exibidos. Você deverá indicar o número.
[u]    Ordenar por usuário.
[M]    Ordenar por uso da memória.
[P]    Ordenar por uso da CPU.


Dica:
Aplicações como o Apache, Mozilla e o Nautilus são thread-aware — são criados threads múltiplos para lidar com usuários múltiplos ou pedidos múltiplos, e cada thread recebe um

ID de processo. Por default, o ps e o top exibem somente o thread principal (inicial). Para visualizar todos os threads, use o comando ps -m ou pressione [Shift]-[H] no top.
Fonte: http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/ch-sysinfo.html

HTOP

Este programa não vem por padrão nas distribuições, mas é o melhor de todos! Usa cores, gráficos e teclas de atalhos bem mais fáceis do que o engessado TOP.

Digite:
# htop

Caso você não tenha este programa, instale na sua distribuição.
Debian e derivados:
# apt-get install htop

Redhat, Fedora, CentOS...
# yum install htop



Note que as barras já dão uma idéia melhor de poder de processamento, memória RAM e Swap.
Na parte inferior, tem as teclas de atalho (sempre teclas de função) que dão acesso rápido aos recursos:
F1 - Ajuda
F2 - Altera cores, graficos e personaliza o htop
F3 - Procura processos (ps aux | grep ...)
F4 - Inverte a ordem da ordenação escolhida no F6
F5 - Exibe os processos em forma de árvore (pstree)
F6 - Ordena a visualização do programa (Por consumo de cpu, memoria...)
F7 - Diminui a prioridade de um processo (renice -1)
F8 - Aumenta a prioridade de um processo (renice +1)
F9 - Envia sinais para os processos (kill e killall)
F10 - Sai do programa


Fontes:
http://www.guiafoca.org/cgs/guia/inic_interm/ch-run.html#s-run-controle
http://dainf.ct.utfpr.edu.br/~maziero/doku.php/unix:gestao_de_processos
http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/ch-sysinfo.html
http://www.vivaolinux.com.br/artigo/Criando-monitorando-e-terminando-processos?pagina=3