Upload
willy-veras-bz
View
49
Download
16
Embed Size (px)
DESCRIPTION
Introdução a utilizaçao de Linux, comandos e gerenciamento de arquivos.
Citation preview
IBM TREINAMENTO LINUX BASICO
Treinamento Básico de LINUX
Material Desenvolvido por
Edvaldo de Oliveira Mat.105473
1
IBM TREINAMENTO LINUX BASICO
Indíce
O sistema operacional 03
Shell 04
Diretorios 06
Entendendo e usando permissões no Linux 07
Comandos Linux 15
Administração de Usuários 22
passwd 33
shadow 34
vi 35
tar 38
gzip 41
tar+gzip 42
tar+bzip2 43
crontab 45
Gerenciamento de Pacotes 49
rpm 51
fdisk 56
Sistemas de Arquivos 68
Montar Dispositivos 78
Processos 82
2
IBM TREINAMENTO LINUX BASICO
O sistema operacional
O kernel é o sistema operacional, responsável pelo gerenciamento dos recursos
disponíveis e pelo acesso ao hardware. O kernel contém módulos para cada
componente do hardware com o qual ele faz a interface. São esses módulos que
proporcionam a funcionalidade do acesso do programa á CPU, memória, discos, rede,
etc. À medida que novos dispositivos de hardware são instalados no sistema, novos
módulos podem ser incorporados ao kernel.
A maior parte do kernel é programada em linguagem C, sendo que a parte dependente
de hardware é desenvolvida em Assembler.
Sistema hierárquico de arquivos
A informação é armazenada em disco através de arquivos. Para o Unix tudo é
um arquivo (dados, textos, dispositivos, periféricos).
Para que os arquivos sejam organizados de maneira lógica, tanto em nível de sistema
operacional quando em nível de usuário, existem os diretórios, que são as pastas onde
os arquivos ficam depositados. Em um sistema Unix os diretórios podem ser usados
tanto para o armazenamento de arquivos quanto para o armazenamento de outros
diretórios, que poderão ter arquivos e/ou diretórios, e assim por diante.
Multitarefa
Em um sistema Unix, várias tarefas podem ser executadas ao mesmo tempo,
dando a impressão que de um único terminal os programas estão sendo executados
simultaneamente. Isso significa que um usuário pode editar um texto, enquanto um
processo que trata arquivo de dados pode ser
3
IBM TREINAMENTO LINUX BASICO
executado, como também pode-se executar um comando para localizar um
determinado arquivo em qualquer lugar do disco, tudo isso dando a impressão ao
usuário que os processos estão sendo executados ao mesmo tempo.
Multiusuário
Permite que mais de um usuário tenha acesso ao mesmo sistema. Vários
terminais e teclados podem ser conectados ao mesmo computador. Esta á a extensão
natural da capacidade de multitarefa.
Assim, um programa pode ser executado por mais de um usuário, incluindo o mesmo
usuário, que poderá ter mais de uma sessão de terminal no mesmo sistema.
O shell
O shell é um interpretador interativo de comandos. Isto significa que os
comandos são digitados no prompt de comandos do shell e trabalhados à medida que
são emitidos.
Observe que o shell é separado do kernel. Se você não gostar de interface provida pelo
shell fornecido, pode ser substituída por uma que mais lhe agrade.
Os shells mais comuns que acompanham o ambiente Unix são:
- Bourne shell (/usr/bin/sh ou /usr/oldbin/sh):Provê um interpretador de comandos do sistema Unix e suporte a uma interface
programável para o desenvolvimento de programas (Shell-Scripts).
- C shell (/usr/bin/csh):É considerado um aperfeiçoamento do Bourne shell porque oferece recursos
interativos como histórico de comandos (os comandos entrados anteriormente podem
ser recuperados, editados e re-executados) e o uso de alias, o que permite o uso de
nomes alternativos para os comandos existentes.
4
IBM TREINAMENTO LINUX BASICO
- Korn shell (/usr/bin/ksh):Pode ser considerado um Bourne shell aperfeiçoado, pois suporta a interface
simples programável do Bourne shell, além dos recursos interativos do C shell. O
código foi otimizado para oferecer um shell mais rápido e eficiente. Atualmente, é o
shell mais comumente usado nos ambientes Unix. No AIX, é o shell padrão.
- POSIX shell (/usr/bin/posix/sh):Possui as mesmas características do Korn shell, porém obedece as normas do
POSIX na interface de programação. É semelhante ao Korn shell em muitos
aspectos(histórico de comandos, uso de alias e controle de tarefas). Nem todas as
implementações Unix o possuem.
- Korn Shell 1993 (/usr/bin/ksh93):O sistema operacional AIX fornece uma versão avançada do Korn shell, o KSH-
93. Ela é, na maioria de suas funcionalidades, compatível com a versão atual do KSH-
1988. Inclui algumas características adicionais que não estão disponíveis no Korn shell
padrão.
Alguns scripts se comportarão de modo diferente sob ksh93, pois sob ele a
manipulação variáveis é um pouco diferente do Korn shell padrão.
Diretórios
5
IBM TREINAMENTO LINUX BASICO
Os diretórios que guardam os arquivos de sistema do Linux, em sua maioria, são
padronizados. Alguns diretórios importantes são:
/ O diretório "root" (raiz).
/bin Arquivos binários de comandos essenciais do sistema.
/boot Arquivos de boot (inicialização; boot-loader; Grub); kernel do Linux.
/dev Dispositivos (devices) de entrada/saída: floppy, hardisk, cdrom, modem .
/etc Arquivos de configuração (scripts) e inicialização.
/home Diretório local (home) de usuários.
/lib Bibliotecas e módulos(drives): compartilhadas com freqüência.
/mnt Diretório de montagem de dispositivos, sistemas de arquivos e partição.
/opt Para instalação de programas não oficiais da distribuição.
/proc Diretório virtual (RAM) onde rodam os processos ativos.
/root Diretório local do superusuário (root).
/sbin Arquivos de sistema essenciais (binários do superusuário).
/tmp Arquivos temporários gerados por alguns utilitários.
/usr Arquivos de usuários nativos da distribuição.
/usr/local Para instalação de programas não oficiais da distribuição.
/usr/src Arquivos fontes do sistema necessários para compilar o kernel.
/var Arquivos de log e outros arquivos variáveis.
Alguns diretórios possuem notações especiais, algo que poderíamos chamar de
"atalho" para o acesso. Veja abaixo a lista dessas notações:
~: ao referir-se ao diretório ~ (til), o sistema entende como o diretório pessoal do
usuário, ou seja, /home/[usuário], onde [usuário] é o nome de login do usuário atual.
Dessa forma, se você estiver logado como davidson, o diretório ~/img será interpretado
como /home/davidson/img;
6
IBM TREINAMENTO LINUX BASICO
-: o kernel Linux armazena um histórico dos diretórios que acessamos. O - (hífen)
refere-se ao último diretório acessado.
.: o símbolo . (ponto) refere-se ao diretório atual, ou seja, aquele em que estamos
trabalhando;
..: o .. (ponto ponto) refere-se ao diretório acima do qual estamos. Por exemplo,
considerando o diretório /home/davidson/, o diretório acima de davidson/ é /home/, e o
diretório acima de /home/ é /.
Entendendo e usando permissões no Linux
Introdução
As permissões são um dos aspectos mais importantes do Linux (na verdade, de
todos os sistemas baseados em Unix). Elas são usadas para vários fins, mas servem
principalmente para proteger o sistema e os arquivos dos usuários. Manipular as
permissões é algo muito interessante, tanto quanto complexo. Mas tal complexidade
não deve ser interpretada como dificuldade e sim como grande variedade de
configurações, o que permite criar vários tipos de proteção de arquivos e diretórios.
Como você deve saber, somente o super-usuário (root) tem ações irrestritas no
sistema, justamente por ser o usuário responsável pela configuração, administração e
manutenção do Linux. Cabe a ele por exemplo, determinar o que cada usuário pode
executar, criar, modificar, etc. Naturalmente, a forma usada para determinar o que o
usuário pode fazer é a determinação de permissões. Este artigo visa explicar as
configurações de permissões de arquivos e diretórios, assim como modificá-las.
drwx------ ... 2 wester ............. 512 Jan ... 29 23:30 .. Arquivos/-rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41... notas.txt
7
IBM TREINAMENTO LINUX BASICO
As linhas acima representam um comando digitado (ls -l) para listar um diretório
e suas permissões. O primeiro item que aparece na linha (drwx----- e -rw-rw-r-) é a
forma usada para mostrar as permissões que o diretório Arquivos e o arquivo notas.txt
têm. É esse item, que recebe o nome de string, que vamos estudar. Um ponto
interessante de citar é que o Linux trata todos os diretórios como arquivo também,
portanto, as permissões se aplicam de igual forma para ambos. Tais permissões
podem ser divididas em quatro partes para indicar: tipo, proprietário, grupo e outras
permissões. O primeiro caractere da string indica o tipo de arquivo: se for "d"
representa um diretório, se for "-" equivale a um arquivo. Entretanto, outros caracteres
podem aparecer, já que existem outros tipos de arquivo no Linux, conforme mostra a
tabela abaixo:
d => diretóriob => arquivo de blococ => arquivo especial de caracterep => canals => socket- => arquivo normal
Repare agora que no restante da string temos 9 caracteres. Você já sabe o que
significa o primeiro. Os demais são em 3 grupos de 3, cada um representado o
proprietário, o grupo e todos os demais respectivamente. Pegando a linha 2 do
exemplo (-rw-rw-r-) e dividindo a string em 3 partes, ficaria assim:
-rw => indicação de permissões do proprietário-rw => permissões do grupo que o usuário pertence-r- => permissões para os demais usuários
Vamos entender agora o que significa esses caracteres (r, w, x, -). Existem 3
tipos básicos de permissões: leitura, gravação e execução. Leitura permite aos
8
IBM TREINAMENTO LINUX BASICO
usuários ler o conteúdo do arquivo mas não altera-lo. Gravação permite que os
usuários alterem o arquivo. Execução, como o nome diz, permite que o usuário execute
o arquivo, no caso de ser executável. Mas acontece que as permissões não funcionam
isoladamente, ou seja, ou o usuário tem permissão de leitura ou de gravação ou de
execução. As permissões funcionam em conjunto. Isso quer dizer que cada
arquivo/diretório tem as 3 permissões, cabendo ao dono determinar qual dessas
permissões é habilitada para os usuários ou não. Pode ser que uma determinada
quantidade de usuários tenha permissão para alterar um arquivo, mas outros não. Daí
a necessidade de se usar grupos. Neste caso, a permissão de gravação desse arquivo
será dada ao grupo e todo usuário membro dele poderá alterar o arquivo.
É necessário ter um certo cuidado com as permissões. Por exemplo, do que
adianta o usuário ter permissão de gravação se ele não tem permissão de leitura
habilitada? Ele poderá ler o arquivo para poder modifica-lo? Não! De certo, isso tem
utilidade em arquivos de log. Fazendo associação com as letras r, w, x e o caractere -,
vamos entender cada uma:
r => significa permissão de leitura (read);w => significa permissão de gravação (write);x => significa permissão de execução (execution);- => significa permissão desabilitada.
A ordem em que as permissões devem aparecer é rwx. Sendo assim, vamos
entender as strings do nosso exemplo, dividindo-a em 4 partes:
Linha 1:
drwx------ ... 2 wester ............... 512 Jan ... 29 23:30 .. Arquivos/
9
IBM TREINAMENTO LINUX BASICO
é um diretório (d);
o proprietário pode altera-lo, grava-lo e executa-lo (rwx);
o grupo não pode altera-lo, grava-lo e nem executa-lo (---);
os demais usuários não podem altera-lo, grava-lo e nem executa-lo (---).
Linha 2:
-rw-rw-r-- ... 1 wester .......... 280232 Dec .. 16 22:41... notas.txt
é um arquivo (-);
o proprietário pode altera-lo, grava-lo, mas não executável. Como este arquivo não é
executável, a permissão de execução aparece desabilitada (rw-);
o grupo tem permissões idênticas ao proprietário (rw-);
o usuário somente tem permissão de ler o arquivo, não pode altera-lo (r--)
A tabela abaixo mostra as permissões mais comuns:
--- => nenhuma permissão;r-- => permissão de leitura;r-x => leitura e execução;rw- => leitura e gravação;rwx => leitura, gravação e execução.
Configurando permissões com chmod
Acima, você dever tido pelo menos uma noção do que são permissões e sua
importância no Linux. Chegou a hora de aprender a configurar permissões e isso é feito
através do comando chmod (de change mode). Um detalhe interessante deste
comando é que você pode configurar permissões de duas maneiras: simbolicamente e
numericamente. Primeiramente veremos o método simbólico.
10
IBM TREINAMENTO LINUX BASICO
Para ter uma visão mais clara da forma simbólica com o chmod, imagine que
tais símbolos se encontram em duas listas, e a combinação deles gera a permissão:
Lista 1Símbolo
u => usuáriog => grupoO (letra o maiúscula) => outroa => totos
Lista 2Símbolo
r => leituraw => gravaçãox => execução
Para poder combinar os símbolos destas duas listas, usam-se os operadores:
+ (sinal de adição) => adicionar permissão- (sinal de subtração) => remover permissão= (sinal de igualdade) => definir permissão
Para mostrar como essa combinação é feita, vamos supor que você deseje
adicionar permissão de gravação no arquivo teste.old para um usuário. Então o
comando a ser digitado será:
chmod u+w teste.old
O "u" indica que a permissão será dada a um usuário, o sinal de adição (+)
indica que está sendo adicionada a permissão e "w" indica que a permissão que está
sendo dada é de gravação.
11
IBM TREINAMENTO LINUX BASICO
Caso você queira dar permissões de leitura e execução ao seu grupo, o comando será:
chmod g+rw teste.old
Agora, vamos supor que o arquivo teste.old deverá estar com todas as
permissões disponíveis para o grupo. Podemos usar então:
chmod g=rwx teste.old
Dica: crie arquivos e diretórios e teste a combinação de permissões com chmod. Isso
lhe ajudará muito no entendimento deste conceito.
Usando chmod com o método numérico
Usar o chmod com valores numéricos é algo bastante prático. Em vez de usar
letras como símbolos para cada permissão, usam-se números. Se determinada
permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se valor 0. Sendo
assim, a string de permissões r-xr----- na forma numérica fica 101100000. Essa
combinação de 1 e 0 é um número binário. Mas temos ainda que acrescentar a forma
decimal (ou seja, números de 0 a 9). Para isso, observe a tabela abaixo:
Permissão Binário Decimal
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
12
IBM TREINAMENTO LINUX BASICO
rw- 110 6
rwx 111 7
Se você não conhece o sistema binário deve estar se perguntando o que esse
"monte" de 0 e 1 tem a ver com os números de 0 a 7. Como o sistema binário somente
trabalha com os números 0 e 1 (decimal trabalha com os números de 0 a 9, ou seja, é
o sistema de numeração que utilizamos no nosso dia-a-dia), ele precisa de uma
seqüência para representar os valores. Sendo assim, na tabela acima, a coluna Binário
mostra como são os valores binários dos números de 0 a 7 do sistema decimal.
Chegou a hora então de relacionar a explicação do parágrafo acima com a
coluna Permissão. Para exemplificar, vamos utilizar a permissão rw-, cujo valor em
binário é 110, que por sua vez, em decimal corresponde ao número 6. Então, em vez
de usar rw- ou 110 para criar a permissão, simplesmente usa-se o número 6. Repare
então que com o método numérico, usamos somente um dígito para representar uma
permissão, ao invés de três. Com isso a string de permissões r--r--r-- pode ser
representa por 444, pois r-- em decimal é igual a quatro. Observe o exemplo abaixo:
chmod 600 notas.txt
Acima, estão sendo dadas as permissões rw------- ao arquivo notas.txt, pois 6
equivale a rw- e 0 equivale a ---. Como zero aparece duas vezes, forma-se então o
valor 600. Faça o comando acima com um arquivo de teste e depois digite ls- l notas.txt
e veja o que aparece (notas.txt deve ser substituído pelo arquivo que você está usando
para teste). A tabela abaixo mostra as configurações de permissões mais usadas:
--------- 000
r-------- 400
13
IBM TREINAMENTO LINUX BASICO
r--r--r-- 444
rw------- 600
rw-r--r-- 644
rw-rw-r-- 666
rwx------ 700
rwxr-x--- 750
rwxr-xr-x 755
rwxrwxrwx 777
As três últimas permissões da tabela são freqüentemente usadas para
programas e diretórios.
Como você viu, é bem mais prático utilizar o chmod com método numérico. Mas você
pode ter ficado confuso com todo esse esquema de permissão. No entanto, talvez isso não tenha
sido por causa da minha possível ineficiência ao explicar permissões nesta coluna. A questão é
que nos sistemas baseados em Unix, permissões são um dos aspectos mais complexos existentes.
Tal complexidade é equivalente à eficiência do uso de permissões. Por isso, a melhor maneira de
entender as permissões é treinando. Sendo assim, ao trabalho! Treine, crie permissões e veja seus
resultados. Bom aprendizado!
Comandos
Introdução
O Linux (na verdade, GNU/Linux), assim como qualquer sistema operacional moderno,
é perfeitamente capaz de oferecer interação com o usuário por meio de gráficos,
fazendo com que seja possível utilizar a maioria de seus recursos através do mouse.
14
IBM TREINAMENTO LINUX BASICO
Porém, em dado momento, o modo gráfico pode não estar disponível, restando apenas
o modo texto (para a inserção de comandos). Além disso, determinadas tarefas só
podem ser executadas por comandos digitados. Para não ficar perdido em qualquer
dessas situações, é necessário conhecer alguns comandos do Linux. É isso que essa
matéria apresenta a seguir.
Onde e como digitar os comandos?
Se o Linux que você utiliza entra direto no modo gráfico ao ser inicializado (que é o que
acontece na grande maioria das distribuições atuais), é possível inserir comandos no
sistema através de uma aplicação de terminal. Esse recurso é facilmente localizável em
qualquer distribuição.
Os comandos no Linux possuem argumentos que são separados pelo sufixo –
exemplo:
ls – la
O comando é LS mas pode-se atribuir variavies para esse comando que no caso é o -la
A tabela abaixo lista alguns dos principais comandos do Linux, suas finalidades,
sintaxes e parâmetros: 2
Comando Finalidade Sintaxe Parâmetros
ls Lista o conteúdo de um
diretório.
ls -lar --color
diretório
-l: lista longa
-a: lista arquivos ocultos
-r: lista recursivamente
--color: ativa cores
cd Troca de diretório. cd diretório
rm Remove arquivos e
diretórios.
rm -irf arquivo -i: apaga confirmando
-r: apaga recursivamente
-f: apaga forçadamente
cp Copia arquivos. cp fonte destino
mkdir Cria um diretório. mkdir diretório
15
IBM TREINAMENTO LINUX BASICO
rmdir Apaga um diretório. rmdir diretório
touch Cria um arquivo vazio. touch arquivo
more Exibe conteúdo do
arquivo.
more arquivo
clear Limpa a tela. clear
su Muda de login. su [-] login
find Procura arquivos em
diretórios.
find caminho expr. --name: procura pelo nome
ps Mostra os processos
rodando na máquina.
ps - aux
grep Procura padrões em um
arquivo.
grep expr. arquivo -a: todos os processos
-x: mostra processos que
não foram iniciados no
console
-u: nome do usuário e hora
de início
df Mostra espaço em disco
livre.
df partição
du Mostra uso de disco. du -s arquivo -s: mostra apenas o total
pwd Mostra o nome do
diretório corrente.
pwd
finger Mostra informações sobre
um usuário.
finger usuário
passwd Definir senha. passwd
16
IBM TREINAMENTO LINUX BASICO
logout Sair do sistema. logout
halt Desliga o sistema. halt
Outros comandos:
Desligar o PC:shutdown –h now
init 0
halt
Reiniciar o PC:reboot
shutdown –r now
init 6
Listar processos:ps –aux
Matar processo:kill –9 <número_processo>
Ex: kill -9 756
killall <nome_processo>
Ex: killall smbd
Descompactar arquivo “.tar.gz”:tar –xzvf <arquivo>.tar.gz
Ex: tar –xzvf amsn-092.tar.gz
17
IBM TREINAMENTO LINUX BASICO
Visualizar dispositivos PCI’s:lspci
Limpar a tela:clear
Visualizar calendário:cal
Ver data atual e hora:Date
Acessar um diretório:cd /diretório
Ex: cd /etc
Voltar ao diretório anterior:cd –
Criar um diretório:mkdir <novo diretório>
Ex: mkdir guampa
Remover um diretório:rmdir <diretório>
rm –r <diretório>
Ex: rm –r guampa
18
IBM TREINAMENTO LINUX BASICO
Criar um arquivo novo:touch <novo arquivo>
Ex: touch texto
Remover um arquivo:rm <arquivo>
Ex: rm texto
Renomear um arquivo ou muda-lo de lugar:mv <nome_velho_arquivo> <novo_nome_arquivo>
mv /<diretório>/<arquivo> /<novo_diretorio>
Ex: mv /home/texto /mnt/floppy
Mudar o grupo do arquivo ou diretório:chgrp <novo grupo> <arquivo ou diretório>
Ex: chgrp amigos texto
Mudar a permissão do arquivo ou diretório:chmod <nnn> <arquivo ou diretório>
*nnn são os números referentes às permissões do arquivo
ou diretório. 4=leitura; 2=escrita; 1=execução.
Ex: chmod 740 texto
Listar o conteúdo de um diretório:ls
Ex: ls /root
19
IBM TREINAMENTO LINUX BASICO
Mudar o dono de um arquivo ou diretório:chown <novo dono> <arquivo ou diretório>
Ex: chown Juliana texto
Copiar arquivo:cp <arquivo_a_ser_copiado> <nome_cópia>
cp /home/texto /mnt/floppy
Mostrar diretório atual:pwd
Visualizar um arquivo no terminal:cat <arquivo>
Ex: cat texto
Mostrar o cabeçalho do arquivo:head <arquivo>
Ex: head texto
Mostrar o final do arquivo:tail –f <arquivo>
Ex: tail –f texto
Criar atalho para um arquivoln –s <arquivo> <nome_atalho>
Ex: ln –s /etc/samba/smb.conf atalho_smb.conf
Procurar uma palavra em um arquivo:grep “<palavra>” <arquivo>
20
IBM TREINAMENTO LINUX BASICO
Ex: grep “root” passwd
Procurar um arquivo:find <local> -name <arquivo>
Ex: find /etc –name passwd
(esta forma procura por um arquivo específico)
find / -exec grep “root” {} –ls \;
(esta forma procura por um arquivo contendo uma palavra específica)
Administração de Usuários:
Gerenciamento
Como qualquer sistema operacional multitarefa e multiusuário, o administrador
do sistema tem como grande desafio o gerenciamento de usuários e grupos. Por este
motivo é importante estarmos preparados para administrá-los diretamente sem a
utilização de ferramentas que facilitem isso (ex.: webmin), usando apenas os
comandos básicos do sistema operacional, isso irá proporcionar a administração em
qualquer distribuição.
Comandos:
• useradd: Comando utilizado para criação de um usuário.
• userdel: Comando utilizado para remoção de um usuário.
• usermod: Comando usado para modificar os dados de um usuário.
• passwd: Comando usado para definir e ou modificar a senha de um usuário.
• groupadd: Comando usado para criar um grupo.
21
IBM TREINAMENTO LINUX BASICO
Criando um usuário
Para que seja possível logar no sistema o usuário deverá ter um username
(login) e uma senha (password). Para que isso seja possível usaremos os comandos
"useradd" e "passwd". Abaixo explicarei como é a sintaxe dos comandos e suas
opções:
Comando useradd
Sintaxe: useradd [opções] <username>
Opções:
• -d - Caminho do diretório home do usuário.
• -g - Especifica o grupo do usuário.
• -c - Inclui um comentário referente ao usuário, tais como nome, setor, etc
• -s - Especifica o shell de comando que o usuário irá utilizar.
• -m - Cria o diretório home do usuário e copia os arquivos de /etc/skel/ para o
home criado (diretório onde se encontram os arquivos default do usuário, futuramente
iremos falar sobre ele). Em algumas distribuições não há necessidade de incluirmos
essa opção para a criação do home, mas para evitarmos não o criarmos é bom
acostumarmos a colocá-la na criação do usuário.
• -p - Essa opção serve para especificarmos uma senha já criptografada para o
usuário.
Ex.:
# useradd -g admin -s /bin/bash -d /home/sup1 -c "Usuário Administrativo de Suporte 1"
-m sup1 22
IBM TREINAMENTO LINUX BASICO
No exemplo acima criamos o usuário sup1, que tem como grupo admin, usando
o shell /bin/bash, o home criado foi o /home/sup1 e tem o comentário "Usuário
Administrativo de Suporte 1".
Comando passwd
Sintaxe: passwd [opções] <username>
Opções:
• -d - Permite o usuário acessar (logar) o sistema sem senha.
• -l - Bloqueia/trava a conta do usuário. O usuário não consegue logar.
• -u - Desbloqueia/destrava a contado usuário (bloqueado pela opção "-l").
• -S - Mostra o status da senha do usuário.
Exemplo 1:
# passwd sup1
Chaging password for user sup1
New password: [digitar a senha]
Retype new password: [repetir a senha]
Exemplo 2: Nesse exemplo iremos travar a conta do usuário sup1.
# passwd -l sup1
Exemplo 3: Vamos agora destravar a conta do usuário sup1:
# passwd -u sup1
23
IBM TREINAMENTO LINUX BASICO
Comando userdel
Sintaxe: userdel [opções] <username>
Opções:
• -r - Ao usarmos essa opção o diretório HOME e Mailbox do usuário será
removido. É importante ter certeza ao fazer isso, pois muitas vezes é melhor remover
apenas o usuário ou até mesmo suspendê-lo mantendo seus arquivos para auditoria.
Exemplo 1: Remover o usuário sem excluir seus arquivos.
# userdel sup1
Exemplo 2: Remover o usuário e seus arquivos
# userdel -r sup1
Comando groupadd
Sintaxe: groupadd [opções] <groupname>
Opção:
• -g - Ao usarmos esta opção, podemos especificar o GID do grupo que estamos
criando.
Exemplo 1: Criando um grupo chamado "administracao".
# groupadd administracao
Exemplo 2: Criando um grupo chamado oragroup e especificando o GID 1521.
# groupadd -g 1521 oragroup
Comando groupmod
Sintaxe: groupmod [opções] <groupname> 24
IBM TREINAMENTO LINUX BASICO
Opção:
• -g - Ao usarmos esta opção, podemos modificar o GID do grupo.
• -n - Para trocarmos o nome do grupo.
Exemplo 1: Modificando o GID do grupo "administracao".
# groupmod -g 666 administracao
Exemplo 2: Modificando o nome do grupo oragroup.
# groupadd -n oracle oragroup
Gerenciando grupos e senhas
Comandos:
gpasswd
Com esse comando podemos criar senhas para administradores de grupo que
terão poder de incluir e remover, além de modificar a senha de um grupo.
grpconv
Através desse comando é criado o arquivo gshadow utilizando o arquivo group
para isso.
grpunconv
Esse comando recria um arquivo group utilizando os arquivos group e gshadow
e após isso ele remove os dois arquivos.
pwconv
25
IBM TREINAMENTO LINUX BASICO
Utilizando o arquivo passwd ele cria o arquivo shadow, hoje em dia esse
comando é pouco utilizado, pois os novos sistemas já trabalham diretamente com
senhas criptografadas já localizadas no shadow.
pwunconv
Recria o arquivo passwd utilizando os arquivos passwd e shadow e depois os
removendo.
chage
Usado para modificar parâmetros de expiração de senha dos usuários. Pode ser
executado pelo superusuário seguido do nome do usuário a que iremos modificar os
parâmetros. Nesse caso só teremos que ir respondendo o que nos é perguntado. Outra
coisa que temos que ter em mente é que esse comando funciona apenas se
estivermos usando o esquema de senhas criptografadas (/etc/shadow).
Parâmetros:
* Minimum Password Age: É onde informamos o mínimo de dias que o usuário deve
esperar para poder modificar sua senha novamente.
* Maximum Password Age: Onde informamos a quantidade de dias máximo que o
usuário pode ficar sem modificar sua senha. Caso o usuário ultrapasse o período
máximo para a troca, ele só conseguirá logar após sua a troca.
* Last Password Change: É a data em que a senha teve sua última alteração.
* Password Expiration Warning: É onde informamos a quantidade de dias antes da
expiração da senha que o usuário começará a receber o alerta para a troca da senha.
* Password Inactive: Aqui indicamos a quantidade de dias que o usuário terá para
trocar sua senha. Depois de sua expiração o login do usuário ficará bloqueado. Se o
26
IBM TREINAMENTO LINUX BASICO
usuário não modificar sua senha dentro desse período, apenas o superusuário poderá
reativar e trocar a senha do usuário.
* Account Expiration Date: Esta opção é exatamente onde colocamos a data de
expiração da conta do usuário.
Sintaxe: chage [opções] username
Opções:
* -m <n> - Minimum Password Age, onde "n" é a quantidade mínima de dias para a
troca da senha.
* -M <n> - Máximo Password Age, onde "n" é a quantidade máxima de dias para a
troca da senha.
* -d <data> - Last Password Change, onde "data" é a data da última troca da senha.
* -W <n> - Password Expiration Warning, onde "n" é a quantidade de dias antes da
expiração da senha, em que o usuário irá começar a receber o aviso para a troca da
senha.
* -I <n> - Password Inactive, onde "n" tem que ser ao menos a quantidade de dias de
senha expirada +1, isso significa se a senha esta expirada a 10 dias, temos que no
mínimo colocar n=11, para a conta seja reativada e o usuário possa trocar da senha.
* -E <data> - Account Expiration Date, onde "data" é a data de expiração da senha.
Exemplo 1: Configurando os parâmetros para expiração da senha do usuário bola.
# chage bola
Chaging the aging information for bola
Enter the new value, or press Enter for the default
27
IBM TREINAMENTO LINUX BASICO
Minimum Password Age [1]: 4
Maximum Password Age [1]: 30
Last Password Change (YYYY-MM-DD) [2005-11-17]:
Password Expiration Warning [1]: 8
Password Inactive [0]: 5
Account Expiration Date (YYYY-MM-DD) [2005-11-20]: 2010-05-16
Exemplo 2: Modificar o "Minimum Password Age" do usuário bola.
# chage -m 6
Exemplo 3: Modificar o "Maximum Password Age" do usuário bola.
# chage -M 35
Exemplo 4: Modificar o "Last Password Change" do usuário bola.
# chage -d 2010-04-17
Exemplo 5: Modificar o "Password Expiration Warning" do usuário bola.
# chage -W 10
Exemplo 6: Modificar o "Password Inactive" do usuário bola.
# chage -I 20
Conclusão
Gostaria de fechar este artigo dando algumas dicas referentes a importância do
planejamento no gerenciamento do usuário. Sem um bom planejamento a gerência de
28
IBM TREINAMENTO LINUX BASICO
usuários pode se tornar muito complicada, ainda mais se tivermos muitas opções.
Contudo alguns pontos são comuns: Quantos usuários temos? Daqui a uns 6 meses,
quantos usuários teremos? Todos os usuários precisam de shell de comando?
Bom, pense/planeje o máximo possível para que possa minimizar surpresas.
Lembre-se que como todo administrador, teremos surpresas. Por isso quanto mais bem
planejado, diminuímos as chances de surpresas.
Alterando informações dos usuários
Se você pode criar e apagar contas de usuários, pode também alterá-las. Isso é
feito facilmente com o comando usermod, cujo funcionamento é semelhante ao
comando adduser:
usermod opções usuário
Eis algumas de suas opções:
usermod -d diretório usuário: altera o diretório "home" do usuário. Adicione -m no
final para mover o conteúdo da pasta anterior para a nova. Por exemplo:
usermod -d /financeiro -m peterpan
usermod -e data usuário: define a data de expiração da conta do usuário. Em geral, a
data é fornecida no esquema ano/mês/dia (aaaa-mm-dd). Por exemplo:
usermod -e 2008-10-28 galadriel
usermod -l novo_nome usuário: altera o nome do login do usuário. No exemplo
abaixo, o usuário peterparker teve seu nome alterado para spiderman:
29
IBM TREINAMENTO LINUX BASICO
usermod -l spiderman peterparker
usermod -g grupo número usuário: altera o GID do grupo principal do usuário. Por
exemplo:
usermod -g 42 galadriel
usermod -s shell usuário: altera o shell do usuário;
usermod -u número usuário: altera o UID da conta do usuário.
Comandos adicionais
O GNU/Linux ainda conta com vários outros comandos que lhe ajudam a
gerenciar e obter informações de usuários e grupos. Veja alguns:
logname: mostra o nome do seu usuário;
users: mostra os usuários que estão conectados ao sistema no momento;
id: mostra dados da identificação do usuário. Eis algumas opções:
id usuário: exibe os grupos (e seus respectivos GIDs) dos quais o usuário faz parte;
id -g usuário: mostra o GID do grupo do usuário;
id -G usuário: exibe o GID de todos os grupos do usuário (nome que a letra G fica em
caixa alta);
id -u usuário: indica o UID do usuário.
30
IBM TREINAMENTO LINUX BASICO
finger usuário: mostra informações detalhadas do usuário. Se o comando for digitado
isoladamente (ou seja, somente finger), o sistema exibe todos os usuários que estão
conectados no sistema operacional no momento;
chfn usuário: comando para mudar as informações adicionais do usuário (nome
completo, telefone, etc).
last: o comando last é bastante interessante e útil, pois mostra os últimos usuários que
estiveram logados no sistema, os terminais usados por eles para se conectar, o
hostname (quando a conexão é feita remotamente), as datas e os horários de utilização
do computador, assim como o tempo de permanência no sistema. Esses dados
geralmente são obtidos do arquivo de logs /var/log/wtmp. O last também possui
opções. Veja algumas:
last -n número: mostra apenas as últimas linhas do log. Para definir a quantidade de
linhas, substitua número pelo valor desejado. Por exemplo:
last -n 10
last -x: mostra os dados de desligamento do sistema, assim como informações do nível
de execução;
last -R: faz com que o comando não exiba os hostnames (note que a letra R fica em
caixa alta);
last -a: faz com que os hostnames sejam exibidos apenas na última coluna.
Passwd
. passwdÉ neste arquivo que ficam os usuários cadastrados no sistema. Cada linha
corresponde a um usuário e o caracter ":" separa os campos . Analisando o31
IBM TREINAMENTO LINUX BASICO
exemplo abaixo:
vinic:x:1001:0:Vinicius Schmidt,,,:/home/vinic:/bin/bashLogin : Senha : Id : Gid : Nome e Dados : Diretório : Shell
Login: vinicÉ a identificação do usuário que também pode ser usado para identificação
do email.
Senha: xEsse "x" informa que a senha está em outro arquivo mais seguro.
Id: 1001É o código único para o Linux identificar cada usuário. Nunca deve−se ter
dois usuários com o mesmo código.
Gid: 0É o código do grupo primário que o usuário pertence.
Nome e Dados: Vinicius Schmidt,,,Este campo é usado para armazenar informações sobre o usuário como
nome, telefone, sala, etc.. Esses dados são separados por "," e devem
obedecer um padrão.
Diretório: /home/vinicEste campo informa qual é o directório home, do usuário.
Shell: /bin/bashÉ a shell default do usuário. Para usuários que não precisam de shell deve−
se colocar "/dev/null".
32
IBM TREINAMENTO LINUX BASICO
. shadowEste é o arquivo mais visado pelos "intrusos", pois é nele que ficam gravadas
todas as senhas de acesso ao sistema.
A senha fica necessariamente criptografada dificultando a sua descoberta por
pessoas não autorizadas, porem para quem sabe como quebrar essa
criptografia não é difícil fazê−lo. Por isso a necessidade de senhas
complexas.
Abaixo uma linha do arquivo shadow, e a senha criptografada em destaque:
vinic:$1$04Jd3syi$iadsszEgE53un1Muk.:11046:0:99999:7:::
VI (Editor)
Funções de procura
• /<expressão> => começa a procura pelo início do arquivo do termo "expressão"
• ?<expressão> => começa a procura pelo final do arquivo do termo "expressão"
• n => procura a próxima palavra
• N => inverte o sentido da procura
Movimentação e inserção de texto
• :3,9d => apaga as linhas de 3 a 9
• :4,7m 11 => move as linhas de 4 a 7 para a linha 11
• :2,6t 11 => copia as linhas de 2 a 6 para a linha 11
• :2,7w <file> => escreve as linhas de 2 a 7 para o arquivo "file"
• :r <file> => lê o arquivo 'file' e insere seu conteúdo no documento atual.
33
IBM TREINAMENTO LINUX BASICO
Adicionar/apendar texto
• a => apendar texto depois do cursor
• A => apendar texto no final da linha
• i => inserir texto antes do cursor
• I => inserir texto no começo da linha
Mudar texto
• cw => muda uma palavra
• 3cw => muda 3 palavras
• C => muda uma linha
• r => sobrescreve um caractere
• R => sobrescreve a linha inteira
• :%s/<old>/<new>/g => muda todas as ocorrências da expressão "old" para a
expressão "new"
Cancelar uma função
• u => desfazer a última operação
• . => repete a última operação
Salvar arquivos e sair
• :w => salvar da memória (buffer) para o disco (arquivo)
• :q => sair do editor
• :wq => salvar e sair do editor
• :x => salvar e sair do editor
• :e! => reeditar, desprezando as mudanças
• ZZ => salvar e sair do editor
Movimentação de tela/linha34
IBM TREINAMENTO LINUX BASICO
• 0 => vai direto para o começo da linha
• ) ou $ => vai direto para o final da linha
• g (Linux) => vai para a primeira linha do arquivo
• G => vai para a última linha do arquivo
• 5G => vai para a linha 5
Copiar e inserir textos
• yy => copia um linha
• 5yy => copia 5 linhas
• p => cola abaixo do cursor
• P => cola acima do cursor
Adicionar novas linhas
• o => abre uma nova linha para edição abaixo do cursor
• O => abre uma nova linha para edição acima do cursor
Apagar texto
• x => apaga um caractere
• dw => apaga uma palavra
• dd => apaga uma linha
• 5dd => apaga 5 linhas
• dG => apaga do cursor até o final do arquivo
Configurações da sessão
• :set nu => mostra o número de linhas
• :set nonu => desliga o comando acima
• :set all => mostra todas as configurações
• :set list => mostra os caracteres ocultos 35
IBM TREINAMENTO LINUX BASICO
Rolagem do texto
• CTRL+f => rola uma tela para baixo
• CTRL+b => rola uma tela atrás
• CTRL+d => rola meia-tela (1/2) para baixo
• CTRL+u => rola meia-tela (1/2) atrás
Compactação e descompactação de arquivos com Tar e gzip
Introdução
O Tar e o gzip são duas ferramentas utilizadas em sistemas operacionais
baseados no Unix, como o GNU/Linux, para o "empacotamento" e para a compressão
de arquivos, respectivamente. Embora seja perfeitamente possível usar qualquer
desses programas de forma individual, a utilização de ambos ao mesmo tempo é muito
comum e útil. Sendo assim, que tal aprender a compactar e a descompactar arquivos
utilizando Tar e gzip e, conseqüentemente, entender o funcionando dos famosos
arquivos de extensão tar.gz? É isso que você verá neste artigo. De quebra, você ainda
saberá como trabalhar com o compactador bzip2.
Comando Tar
Backup (cópia de segurança) de arquivos é uma necessidade antiga. Há várias
formas de se fazer isso, mas nos sistemas operacionais baseados no Unix, uma das
maneiras mais tradicionais corresponde à utilização da ferramenta Tar, sigla de Tape
Archive. O que o Tar faz é muito simples de entender: ele "empacota" vários arquivos
em um só, isto é, faz com que um único arquivo contenha vários outros. Assim, é
possível, por exemplo, armazenar em único arquivo as cópias de documentos
existentes na pasta de um usuário.
36
IBM TREINAMENTO LINUX BASICO
O arquivo resultante de um empacotamento feito com Tar tem, como é de se
esperar, a extensão .tar (por exemplo, infowester.tar), embora sua utilização não seja
obrigatória (mas é recomendada para fins de organização). Quando for necessário
extrair o conteúdo existente dentro de um arquivo .tar, naturalmente, basta acionar o
programa Tar. Os procedimentos para empacotamento e extração de arquivos são
executados através de comandos e parâmetros inseridos em terminais (shell). Quando
um usuário domina essas instruções, consegue executar tais tarefas de forma ágil. Isso
se deve principalmente ao fato do Tar manter as propriedades dos arquivos e a
estruturas de diretórios originais, facilitando a localização e a utilização de cada item
após a extração.
A sintaxe do Tar é a seguinte:
tar [parâmetros] [nome_do_arquivo_tar] [arquivos_de_origem]
Na linha acima, tar é o comando. Em parâmetros, é possível utilizar várias
opções. Eis as principais:
-c - cria um novo arquivo tar;
-t - exibe o conteúdo de um arquivo tar;
-p - mantém as permissões originais do(s) arquivo(s);
-r - adiciona arquivos a um arquivo tar existente;
-f - permite especificar o arquivo tar a ser utilizado;
-v - exibe detalhes da operação;
-w - pede confirmação antes de cada ação no comando;
-x - extrai arquivos de um arquivo tar existente;
-z - comprime o arquivo tar resultante com o gzip (visto mais à frente);
-C - especifica o diretório dos arquivos a serem armazenados (note que, neste caso, a
letra é maiúscula).
37
IBM TREINAMENTO LINUX BASICO
O campo nome_do_arquivo_tar especifica qual o nome que o arquivo .tar terá, e
o campo arquivos_de_origem define o diretório ou os arquivos que se tornarão um .tar.
Vamos ver alguns exemplos para facilitar a compreensão:
tar -cf lendas.tar saci.txt curupira.txt
O comando acima cria o arquivo lendas.tar, que contém os arquivos saci.txt e
curupira.txt. Aqui, você deve ter reparado que é possível combinar parâmetros. Neste
exemplo, isso ocorreu com -c e -f. No exemplo abaixo, o diretório hardware tem todo o
seu conteúdo compactado no arquivo backup.tar, só que os detalhes são exibidos
graças à opção -v:
tar -cvf backup.tar hardware
O exemplo a seguir lista o conteúdo do arquivo backup.tar:
tar -tf backup.tar
Por sua vez, o comando abaixo faz com que todos os arquivos de backup.tar
sejam extraídos (neste ponto, você certamente já sabe as funções dos parâmetros x, v
e f no comando):
tar -xvf backup.tar
Já no comando a seguir, apenas o arquivo saci.txt é extraído:
tar -xvf lendas.tar saci.txt
Uma coisa interessante é que, se a opção -v for usada duas vezes, detalhes
como permissões e data do(s) arquivo(s) apareção:
tar -xvvf lendas.tar saci.txt
38
IBM TREINAMENTO LINUX BASICO
Comando gzip
A ferramenta Tar, por si somente, serve apenas para juntar vários arquivos em
um só. No entanto, o programa não é capaz de diminuir o tamanho do arquivo
resultante, isto é, de compactá-lo. É neste ponto que entra em cena o gzip (GNU zip)
ou outro compactador de sua preferência. Se utilizado isoladamente, o gzip faz uso da
seguinte sintaxe:
gzip [parâmetros] [nome_do_arquivo]
Entre os parâmetros disponíveis, tem-se:
-c - extrai um arquivo para a saída padrão;
-d - descompacta um arquivo comprimido;
-l - lista o conteúdo de um arquivo compactado;
-v - exibe detalhes sobre o procedimento;
-r - compacta pastas;
-t testa a integridade de um arquivo compactado.
Ainda no que se refere às opções de parâmetros, é possível utilizar uma
numeração de 1 a 9 para indicar o nível de compactação. Quanto maior o número,
maior será a compactação do arquivo.
Eis alguns exemplos para facilitar a compreensão do comando gzip:
gzip lista.odt
O comando acima compacta o arquivo lista.odt. Note que os arquivos
compactados com gzip recebem a extensão .gz.
gzip -d listaodt.gz
39
IBM TREINAMENTO LINUX BASICO
O comando acima descompacta o arquivo infowester.odt.gz.
gzip -1 colorado.ods
O procedimento acima faz com que o arquivo colorado.ods seja compactado
considerando o nível mais baixo de compreensão.
Usando Tar e gzip
O uso conjunto dos comandos Tar e gzip é um belo exemplo de coerência da
frase "a união faz a força". Muitas vezes, é necessário juntar arquivos e, ao mesmo,
fazer com que o arquivo resultante, além de conter todos os outros, também seja
compactado. É aí que entra em cena a capacidade de juntar arquivos do Tar com a
capacidade de compactação do gzip. Para utilizar ambos ao mesmo tempo, o
procedimento é muito simples: basta aplicar o comando tar com o parâmetro -z. O
arquivo resultante desse procedimento receberá a extensão .tar.gz.
Neste ponto, vemos um comando bastante usado na instalação de programas e
bibliotecas:
tar -zxvf nome_do_arquivo.tar.gz
Se você estiver lendo este artigo deste o começo, certamente já sabe o que o
comando acima faz, mesmo assim, vamos explicar para não restar dúvidas: a letra z
deve ser usada porque o arquivo foi compactado com gzip; a letra x indica que o
comando deve extrair o arquivo (portanto, a referida instrução serve para extrair e
descompactar o arquivo tar.gz); a letra v exibe os detalhes do procedimento; por fim, a
letra f especifica qual arquivo será usado nesta atividade.
Suponha, agora, que você queira deixar em um único pacote os arquivos
marvin.png, zaphod.txt e trillian.odt. O arquivo resultante terá o nome guia.tar.gz. Eis o
comando que utilizaremos para este exemplo:40
IBM TREINAMENTO LINUX BASICO
tar -zcvf guia.tar.gz marvin.png zaphod.txt trillian.odt
Note que o comando é muito parecido com o procedimento de descompactação
do exemplo anterior, com a diferença de que o parâmetro c foi utilizado no lugar de x,
pois o objetivo aqui é criar um arquivo novo, e não fazer a extração de um já existente.
Para extrair o conteúdo desse arquivo, basta executar o comando abaixo (também
exibido na figura acima):
tar -zxvf guia.tar.gz
Se você quiser extrair apenas um dos arquivos contidos no arquivo compactado,
basta indicá-lo no final do comando. Por exemplo, suponha que você queira extrair o
arquivo marvin.png de guia.tar.gz. Eis o que você deve digitar:
tar -zxvf guia.tar.gz marvin.png
Usando Tar e bzip2
A combinação Tar e gzip é muito utilizada, mas não é a única. Também é
possível utilizar o algoritmo de compressão bzip2, cuja extensão é .bz2. Há quem
prefira esta opção pela característica do bzip2 de gerar arquivos menores que o gzip,
embora o programa o faça de maneira mais lenta que este último.
Para utilizar Tar com bzip2, basta utilizar o parâmetro -j. Por exemplo:
tar -jcvf frases.tar.bz2 confucio.html nietzsche.html
Para extrair o conteúdo arquivo, o comando é:
tar -jxvf frases.tar.bz2
Caso queira utilizar o bzip2 isoladamente, a sintaxe é:
41
IBM TREINAMENTO LINUX BASICO
bzip2 [parâmetros] [nome_do_arquivo]
Os parâmetros são praticamente os mesmos do gzip, por isso não serão
mostrados aqui. Eis um comando de exemplo:
bzip2 -d vivaldi.htm.bz2
Esse comando descompacta o arquivo vivaldi.htm.
Finalizando
Atualmente, é possível encontrar interfaces gráficas que permitem manipular as
opções provenientes dos programa Tar, gzip, bzip2 e suas possíveis combinações de
maneira simples, apenas com o uso do mouse. No entanto, entender como utilizar
esses comandos é essencial para quando somente a linha de comando estiver
disponível e, claro, é importante também para que você possa compreender
perfeitamente o que está sendo feito. É por isso que este artigo foi escrito.
Caso você queira mais detalhes sobre esses programas, digite em um terminal
os comandos man tar, man gzip ou man bzip2. Se preferir, visite os sites que serviram
de referência para este artigo:
- www.gnu.org/software/tar;
- www.gzip.org;
- focalinux.cipsga.org.br;
- en.wikipedia.org/wiki/Tar_(file_format);
- en.wikipedia.org/wiki/Bzip2;
- bzip.org.
Usando cron e crontab para agendar tarefas
Introdução42
IBM TREINAMENTO LINUX BASICO
Suponha que você seja dono de um serviço de hospedagem de sites e
diariamente precisa disponibilizar, numa pasta acessível por FTP, o arquivo de log de
acessos de um cliente. É trabalhoso fazer isso manualmente e na pior das hipóteses,
você pode esquecer. Felizmente, o Linux conta com o serviço cron, que permite a
realização de tarefas programadas em dias e horários determinados por você. O
objetivo deste artigo é mostrar como fazer isso.
O que é cron
O cron pode ser interpretado como um serviço do Linux que é carregado durante
o processo de boot do sistema. Trata-se de uma ferramenta que permite programar a
execução de comandos e processos de maneira repetitiva ou apenas uma única vez.
No caso citado da introdução, você poderia usar o cron para que o arquivo de
log de um cliente fosse disponibilizado todos os dias às 15 horas, por exemplo. Isso é
possível porque o daemon (uma espécie de programa que executa tarefas em segundo
plano) do cron executa os comandos nas datas e horários especificados. A cada
minuto, o cron é acionado para verificar se há tarefas a serem realizadas.
Para executar as tarefas, o cron usa uma espécie de tabela conhecida como
crontab. O arquivo crontab geralmente fica localizado no diretório /etc, mas também
pode estar em um diretório que cria um crontab para cada usuário do sistema
(geralmente em /var/spool/cron/), tudo depende das configurações do sistema
operacional utilizado.
Como usar o cron
O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos
como vi, emacs ou nano. Também é possível digitar o comando crontab -e para editar
43
IBM TREINAMENTO LINUX BASICO
o arquivo exclusivo de seu usuário. Neste caso, a edição é feita como se você
estivesse usando o vi.
O crontab tem o seguinte formato:
[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
O preenchimento de cada campo é feito da seguinte maneira:
- Minutos: informe números de 0 a 59;
- Horas: informe números de 0 a 23;
- Dias do mês: informe números de 0 a 31;
- Mês: informe números de 1 a 12;
- Dias da semana: informe números de 0 a 7;
- Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o
arquivo do próprio usuário for usado);
- Comando: a tarefa que deve ser executada.
Repare que a ordem desses valores indica o nome correspondente do campo.
Por exemplo, no campo mês, 1 a 12 quer dizer de "janeiro a dezembro". No caso de
dias da semana, 0 a 6 quer dizer de "domingo a sábado". Note que o número 7
também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de
"domingo".
No lugar desses valores, você pode informar * (asterisco) para especificar uma
execução constante. Por exemplo, se o campo dias do mês conter *, o comando
relacionado será executado todos os dias.44
IBM TREINAMENTO LINUX BASICO
Você também pode informar intervalos no preenchimento, separando os
números de início e fim através de - (hífen). Por exemplo, se no campo horas for
informando 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o
comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta
informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula.
Vamos a um exemplo:
#tarefa info
30 22 3,14 * * echo "Não entre em pânico" > /home/alecrim/info.txt
Neste exemplo, a frase "Não entre em pânico" é inserida no arquivo info.txt,
dentro do diretório /home/alecrim/, às 22 horas e 30 minutos, nos dias 3 e 14, em todos
os meses e em todos os dias da semana. Repare na linha "#tarefa info". Trata-se de
um comentário. Digite # e tudo o que for digitado na linha não será considerado pelo
cron. É um recurso útil para inserir descrições quando se tem várias tarefas a serem
executadas.
Comandos do crontab
Para acessar o crontab, basta digitar esse nome em um terminal seguido de um
parâmetro. Eis a lista de parâmetros disponíveis:
crontab -e: conforme já informado, serve para editar o arquivo atual do crontab e criar
um, caso não exista;
crontab -l: este comando mostra o conteúdo atual do crontab;
crontab -r: remove o arquivo atual do crontab.
45
IBM TREINAMENTO LINUX BASICO
Como exemplo, analise a imagem abaixo:
Ela mostra que o comando crontab -e foi dado para edição (que ocorreu em
outro programa). Como não havia nenhum arquivo de crontab para isso, o comando
serviu para criar um. Quando esse procedimento foi finalizado, foi dado o comando
crontab -l para a visualização de seu conteúdo. Em seguida, foi dado o comando
crontab -r para eliminar esse arquivo. Por fim, foi dado o comando crontab -l
novamente para comprovar a eliminação.
Finalizando
Os recursos do cron não se limitam aos mostrados anteriormente. Você pode ainda
agendar tarefas mais complexas e poupar muito trabalho nessas execuções
automáticas. É possível, por exemplo, configurar o cron para emitir-lhe um aviso de
quando uma tarefa for executada. A dica para lidar com o cron é testá-lo. Experimente-
o bastante. Mesmo que você seja apenas um usuário doméstico, certamente
encontrará alguma utilidade para o cron.
Gerenciadores de pacotes - Guia de Consulta Rápida
O gerenciamento de pacotes é provavelmente a característica que mais diferencia as distribuições Linux. Embora a tendência em boa parte dos grandes projetos seja oferecer uma interface gráfica na qual os usuários possam selecionar um pacote e instalá-lo com um clique do mouse (como no Synaptic do Debian ou no Drakrpm do Mandriva), esses programas costumam ser apenas interfaces gráficas para os utilitários de baixo nível que gerenciam as tarefas associadas à instalação de pacotes nos sistemas Linux. Ainda que muitos usuários do Linux sintam-se bem mais à vontade instalando pacotes com essas ferramentas gráficas intuitivas, não dá para negar que o gerenciamento de pacotes pela linha de comando oferece dois excelentes recursos que não estão disponíveis em nenhum utilitário gráfico para gerenciamento de pacotes: poder e velocidade.
46
IBM TREINAMENTO LINUX BASICO
Gerenciamento de Pacotes - Consulta Rápida
Tarefaa ser executada
yum / rpmCentOS / Fedora
apt / dpkgDebian / Ubuntu
Gerenciando o softwareInstalar software usando repositórios yum install pacote apt-get install pacote
Instalar software usando arquivo de pacoteyum localinstall pacote.rpmrpm -ivh pacote.rpm
dpkg -i pacote.deb
Atualizar um softwareyum update pacoterpm -Uvh pacote.rpm
apt-get install pacote
Remover um software yum erase pacote apt-get remove pacote
Atualizando o sistemaAtualizar lista de pacotes yum check-update apt-get update
Atualizar o sistema yum update apt-get upgrade
Procurando por pacotesProcurar pelo nome do pacote yum list pacote apt-cache search pacote
Procurar por padrão yum search padrão apt-cache search padrão
Procurar pelo nome do arquivo yum provides arquivo apt-file search caminho
Listar todos os pacotes instalados rpm -qa dpkg -l
Configurando o acesso a repositórios de softwareListar repositórios yum repolist cat /etc/apt/sources.list
Adicionar repositório (adicionar à (editar /etc/apt/sources.list)
47
IBM TREINAMENTO LINUX BASICO
Gerenciamento de Pacotes - Consulta Rápida
Tarefaa ser executada
yum / rpmCentOS / Fedora
apt / dpkgDebian / Ubuntu
/etc/yum.repos.d/)
Remover repositório(remover de /etc/yum.repos.d/)
(editar /etc/apt/sources.list)
Comandos diversosVerificar se um pacote está instalado rpm -q pacote dpkg -s pacote
Listar arquivos de um pacote instalado rpm -ql pacote dpkg -L pacote
Listar arquivos de um arquivo de pacote rpm -qpl pacote.rpm dpkg -c pacote.deb
Obter informações de um arquivo de pacote
rpm -qpi pacote.rpm dpkg -I pacote.deb
Descobrir a que pacote pertence um arquivo
rpm -qf arquivo dpkg -S arqiivo
RPM
O que é o RPM?
O RPM é um sistema de instalação de programas criado pela Red Hat.
O que é um pacote RPM?
Um pacote RPM nada mais é do que os arquivos do programa, scripts e regras
para sua instalação.
48
IBM TREINAMENTO LINUX BASICO
Como instalar pacotes RPM?
Para instalar um pacote RPM use o comando:
rpm -i nome_do_pacote.rpm
Você tem um pacote instalado, mas acaba de pegar uma versão mais nova do
programa. O que fazer? Desinstalar o pacote antigo e instalar o novo? Não! Não é
preciso que se faça isso! Você pode atualizar para uma versão mais recente de um
pacote já instalado com o comando:
rpm -U nome_do_pacote.rpm
Tudo bem, aprendemos instalar e atualizar um pacote, mas tem aquele
programa instalado em meu PC que eu nunca uso, como faço para removê-lo?
Bem, para remover um pacote já instalado use o comando:
rpm -e nome_do_pacote
OBS: Veja que agora não colocamos a extensão rpm. Não é necessário que se
coloque a extensão!
Para ver a lista de pacotes instalados em seu sistema use o comando:
rpm -qa
Agora vamos verificar se algum pacote já está instalado em nosso sistema.
Para isso utilize o comando:
49
IBM TREINAMENTO LINUX BASICO
rpm -qa | grep nome_do_pacote
OBS: O nome do pacote não precisa ser digitado inteiramente!
Exemplo: Para sabermos quais pacotes que possuem "gnome" no seu nome
estão instalados em nosso sistema utilizamos o comando:
rpm -qa | grep gnome
Agora veja que existem vários pacotes com o nome gnome-yyyy, onde yyyy é o
complemento do nome do pacote, e outros que têm um prefixo (ex.: libgnome-xxx,
onde o xxx é a versão do pacote).
Para vermos quais arquivos um certo pacote provê utilizamos o comando:
rpm -qlp nome_do_pacote.rpm
Se você quiser obter informações sobre um pacote instalado no sistema utilize
o comando:
rpm -qi nome_do_pacote
OBS: Note que mais uma vez não é necessário usar a extensão rpm.
Agora você quer obter informações de um pacote não instalado, utilize o
comando:
rpm -qip nome_do_pacote.rpm
50
IBM TREINAMENTO LINUX BASICO
Se no caso acima as informações mostradas ainda não são suficientes para o
que queremos, podemos obter mais informações sobre um pacote ainda não instalado
com o comando:
less nome_do_pacote.rpm
Digamos agora que você tem um pacote instalado, mas por algum motivo
qualquer ele não está funcionando normalmente.
Existem outras maneiras de resolver este problemas, mas se você tentou de
tudo e ainda não conseguiu resolvê-lo, pode reinstalar o pacote. Mas ao tentar o
comando "rpm -U nome_do_pacote" ou "rpm -i nome_do_pacote" você recebe a
mensagem de que o pacote já está instalado, basta usar com o parâmetro
--replacepkgs assim:
rpm -i --replacepkgs nome_do_pacote.rpm
ou
rpm -U --replacepkgs nome_do_pacote.rpm
Para instalar um pacote sem que seja verificado se o seu disco possui espaço
suficiente para o pacote use o comando:
rpm -i --ignoresize nome_do_pacote.rpm
Atenção: Esta opção não é recomendada visto que se não existir espaço
suficiente para a instalação o pacote pode e/ou será instalado com problemas!
Para instalar um pacote sem instalar a sua documentação utilize o comando:
51
IBM TREINAMENTO LINUX BASICO
rpm -i --excludedocs nome_do_pacote.rpm
OBS: Apenas os arquivos marcados como documentação não serão
instalados!
Para instalar um pacote sem a verificação das dependências utilize o comando:
rpm -i --nodeps nome_do_pacote.rpm
Atenção: Esta opção não é recomendada visto que provavelmente o programa
apresentará erros uma vez que as dependências não forem atendidas!
Caso você queira instalar uma versão mais antiga de um pacote já instalado
utilize o comando:
rpm -U --oldpackage nome_do_pacote.rpm
Caso você queira apenas testar se um pacote vai ser instalado corretamente
(se todas as dependências serão atendidas, se não causa nenhum conflito) em seu
sistemas utilize o comando:
rpm -i --test nome_do_pacote.rpm
Algumas vezes quando instalamos e desinstalarmos pacotes pode ocorrer da
nossa base de dados do rpm ficar corrompida!
Se ao tentar instalar, atualizar ou remover um pacote você começar a receber
mensagens de erro do tipo "Segmentation fault ou (null)-(null)" você deve atualizar sua
52
IBM TREINAMENTO LINUX BASICO
base de dados do rpm com o comando:
rpm --rebuilddb
Ou então você pode construir uma nova com o comando: rpm --initdb
Para maiores informações sobre o rpm use o comando:
# man rpm
Fdisk
Criando partições com o fdisk do linux
Este texto foi projetado para iniciantes do linux que não conhecem o fdisk do
linux, que é indispensável, pois ele é usado em todas as distribuições (tem distribuições
que tem um programa de partições visual, mas sempre tem a opção do fdisk).
O fdisk é uma ferramenta ótima para partições ele consegue criar mais de 60
tipos de partições fora as do linux (native linux e linux swap), ele só não permite mudar
o espaço de uma partição como no fips ou Partition magic.
Nesse tutorial vão ser usados exemplos somente para as partições do linux.
Vamos supor que eu tenho um HD de 3.2G, e já tenhamos uma partição do
windows (fat 32) com 1.2G.
Se você der somente fdisk, ele vai por default na /dev/hda1 (primary master),
se caso você tenha outro HD no /dev/hdb por exemplo, e quiser particioná-lo, de um
fdisk /dev/hdb.
53
IBM TREINAMENTO LINUX BASICO
OBS: o fdisk só pode ser usado pelo root.
Execute o fdisk irá aparecer assim :
[root@localhost /root]# fdisk
Using /dev/hda as default device!
Command (m for help):
De o comando 'm' e teremos a seguinte tela:
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id 54
IBM TREINAMENTO LINUX BASICO
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):
Para visualizar as partições do HD digite 'p'.
Command (m for help): p
Disk /dev/hda: 128 heads, 63 sectors, 781 cylinders
Units = cylinders of 8064 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 305 1229759+ b Win95 FAT32
Command (m for help):
Device = o partição no caso /dev/hda1
Boot = a partição ativa
Start = o cilindro em que a partição começa
End = o cilindro em que a partição termina
Blocks = sera o espaço que a partição esta ocupando
Id = numero das lista de partiçoes do fdisk 'b'= fat32 (mais a frente você entenderá
este)
55
IBM TREINAMENTO LINUX BASICO
System = o tipo da partição
Neste exemplo iremos adicionar uma Native Linux e uma Linux Swap.
Para adicionar uma nova partição digite 'n', que ficara:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Aqui você digite 'p', que ficaria :
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):
Agora escolha o numero da partição:
1 =/dev/hda1, 2 =/dev/hda2, 3 =/dev/hda3, 4=/dev/hda4, se você quiser ter ainda mais
partições você terá que fazer uma partição extendida, isso será explicado mais a frente.
Então digite 2, porque 1 já existe, que é a partição do windows, facará assim:
56
IBM TREINAMENTO LINUX BASICO
Partition number (1-4): 2
First cylinder (306-781, default 306):
Aqui você terá que digitar o cilindro de inicio, precione [enter], pois você pode
ver que o cilindro de inicio no defautl já é o "306" (veja acima quando demos o
comando 'p' que o END da fat32 era 305, então o cilindro de inicio dessa será 306, e
ficará assim:
First cylinder (306-781, default 306):
Using default value 306
Last cylinder or +size or +sizeM or +sizeK (306-781, default 781):
Aqui você pode por o valor do espaço na partição por diferentes tipos:
+size = valor em bytes
+sizeM = valor em MegaBytes
+sizeK = valor em kbytes
Ou por cilindros, vamos adicionar por MegaByte, digite +1780M que ficará:
First cylinder (306-781, default 306):
Using default value 306
Last cylinder or +size or +sizeM or +sizeK (306-781, default 781): +1780M
Command (m for help):
Agora nós precisamos especificar de qual tipo é a partição, então digite 't', que ficara :
Command (m for help): t 57
IBM TREINAMENTO LINUX BASICO
Partition number (1-4):
Coloque o número da partição, no caso 2:
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes):
Digite 'l', aparecerá os tipos de partições que o fdisk do linux pode fazer:
Hex code (type L to list codes): l
0 Empty 16 Hidden FAT16 61 SpeedStor a6 OpenBSD
1 FAT12 17 Hidden HPFS/NTFS 63 GNU HURD or Sys a7 NeXTSTEP
2 XENIX root 18 AST Windows swa 64 Novell Netware b7 BSDI fs
3 XENIX usr 24 NEC DOS 65 Novell Netware b8 BSDI swap
4 FAT16 <32M 3c PartitionMagic 70 DiskSecure Mult c1 DRDOS/sec (FAT-
5 Extended 40 Venix 80286 75 PC/IX c4 DRDOS/sec (FAT-
6 FAT16 41 PPC PReP Boot 80 Old Minix c6 DRDOS/sec (FAT-
7 HPFS/NTFS 42 SFS 81 Minix / old Lin c7 Syrinx
8 AIX 4d QNX4.x 82 Linux swap db CP/M / CTOS / .
9 AIX bootable 4e QNX4.x 2nd part 83 Linux e1 DOS access
a OS/2 Boot Manag 4f QNX4.x 3rd part 84 OS/2 hidden C: e3 DOS R/O
58
IBM TREINAMENTO LINUX BASICO
b Win95 FAT32 50 OnTrack DM 85 Linux extended e4 SpeedStor
c Win95 FAT32 (LB 51 OnTrack DM6 Aux 86 NTFS volume set eb BeOS fs
e Win95 FAT16 (LB 52 CP/M 87 NTFS volume set f1 SpeedStor
f Win95 Ext'd (LB 53 OnTrack DM6 Aux 93 Amoeba f4 SpeedStor
10 OPUS 54 OnTrackDM6 94 Amoeba BBT f2 DOS secondary
11 Hidden FAT12 55 EZ-Drive a0 IBM Thinkpad hi fe LANstep
12 Compaq diagnost 56 Golden Bow a5 BSD/386 ff BBT
14 Hidden FAT16 <3 5c Priam Edisk
Digite '83' ("83 Linux"):
Hex code (type L to list codes): 83
Command (m for help):
Agora digite 'p' e veja como ficou:
Command (m for help): p
Disk /dev/hda: 128 heads, 63 sectors, 781 cylinders
Units = cylinders of 8064 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 305 1229759+ b Win95 FAT32
/dev/hda2 306 758 1826496 83 Linux
Command (m for help):
59
IBM TREINAMENTO LINUX BASICO
Agora iremos fazer a swap com o restante do espaço que sobrou:
Digite 'n' para fazer a partição:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Digite 'p' e depois ponha o número da partição , no caso 3 (/dev/hda3):
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (759-781, default 759):
Digite [enter], pois o default já ta em 759:
First cylinder (759-781, default 759):
Using default value 759
Last cylinder or +size or +sizeM or +sizeK (759-781, default 781):
Como vamos usar o restinho do espaço no HD para fazer a swap, nem digite
+sizeM, pois você pode ver que o último cilidro do HD 781 já esta no default, se você
digitar [enter] o fdisk irá fazer a swap com o resto de espaço que sobrou no HD (o que
no nosso caso a swap ficará com uns 120mb +-).60
IBM TREINAMENTO LINUX BASICO
Agora você digite 't' para especificar o tipo da partição, ponha o numero da
partição (no caso 3) e depois 'l' para visualizar os tipos:
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): l
0 Empty 16 Hidden FAT16 61 SpeedStor a6 OpenBSD
1 FAT12 17 Hidden HPFS/NTFS 63 GNU HURD or Sys a7 NeXTSTEP
2 XENIX root 18 AST Windows swa 64 Novell Netware b7 BSDI fs
3 XENIX usr 24 NEC DOS 65 Novell Netware b8 BSDI swap
4 FAT16 <32M 3c PartitionMagic 70 DiskSecure Mult c1 DRDOS/sec (FAT-
5 Extended 40 Venix 80286 75 PC/IX c4 DRDOS/sec (FAT-
6 FAT16 41 PPC PReP Boot 80 Old Minix c6 DRDOS/sec (FAT-
7 HPFS/NTFS 42 SFS 81 Minix / old Lin c7 Syrinx
8 AIX 4d QNX4.x 82 Linux swap db CP/M / CTOS / .
9 AIX bootable 4e QNX4.x 2nd part 83 Linux e1 DOS access
a OS/2 Boot Manag 4f QNX4.x 3rd part 84 OS/2 hidden C: e3 DOS R/O
b Win95 FAT32 50 OnTrack DM 85 Linux extended e4 SpeedStor
c Win95 FAT32 (LB 51 OnTrack DM6 Aux 86 NTFS volume set eb BeOS fs
e Win95 FAT16 (LB 52 CP/M 87 NTFS volume set f1 SpeedStor 61
IBM TREINAMENTO LINUX BASICO
f Win95 Ext'd (LB 53 OnTrack DM6 Aux 93 Amoeba f4 SpeedStor
10 OPUS 54 OnTrackDM6 94 Amoeba BBT f2 DOS secondary
11 Hidden FAT12 55 EZ-Drive a0 IBM Thinkpad hi fe LANstep
12 Compaq diagnost 56 Golden Bow a5 BSD/386 ff BBT
14 Hidden FAT16 <3 5c Priam Edisk
Hex code (type L to list codes):
Digite '82' (82 Linux swap), e depois 'p' para visualizar como ficou:
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap)
Command (m for help): p
Disk /dev/hda: 128 heads, 63 sectors, 781 cylinders
Units = cylinders of 8064 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 305 1229759+ b Win95 FAT32
/dev/hda2 306 758 1826496 83 Linux
/dev/hda3 759 781 92736 82 Linux swap
Command (m for help):
Pronto sua partições já estão feitas.
62
IBM TREINAMENTO LINUX BASICO
Se você quiser mudar a partição ativa digite 'a' depois o numero da partição,
como a do windows q esta ativa primeiro você vai ter que digitar 'a' e depois 1, assim
ela serah desativada, depois digite 'a' e 2, para por a Native Linux, digite 'p' para ver
como ficou:
Command (m for help): p
Disk /dev/hda: 128 heads, 63 sectors, 781 cylinders
Units = cylinders of 8064 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 305 1229759+ b Win95 FAT32
/dev/hda2 * 306 758 1826496 83 Linux
/dev/hda3 759 781 92736 82 Linux swap
OBS: O "*" funciona como um "botão power". Estava a fat32 no boot, vc teve
que digitar 'a' e 1 para desativar (como se tivesse desligado o botão) e depois 'a' e 2
para adicionar a native Linux (como você tivesse ligado o outro botão) se vc não
fizesse o 'a' e 1, e fizesse só o 'a' 2 ficaria assim:
Command (m for help): p
Disk /dev/hda: 128 heads, 63 sectors, 781 cylinders
Units = cylinders of 8064 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 305 1229759+ b Win95 FAT32
/dev/hda2 * 306 758 1826496 83 Linux 63
IBM TREINAMENTO LINUX BASICO
/dev/hda3 759 781 92736 82 Linux swap
Command (m for help):
Isto está errado, por isso que você deve fazer como expliquei acima.
Para fazer mais que quatro partições com o fdisk você vai ter que fazer
partição 4 (/dev/hda4) extensivel e dela fazer as outras, o procedimento é quase igual
suponhamos que você tenha mais espaço no HD e já tenha 3 partições então, digite 'n'
depois 'e', assim:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 4
First cylinder (781-915, default 915):
A partir daí você já conhece , ponha o cilindro inicial, o espaço ,no tipo você vai ter que
por 85 (85 Linux extended) olhe na lista, e pronto para fazer as outras o processo é o
mesmo da Native Linux e Swap que expliquei acima.
Para sair e salvar as alterações digite 'w', e para sair e não salvar nada digite 'q'.
Sistemas de arquivos
A lista de sistemas de arquivos suportados pelo Linux é muito grande mas, neste
artigo, discutirei somente os mais comuns.
64
IBM TREINAMENTO LINUX BASICO
Atualmente, uma importante característica dos atuais sistemas de arquivos é o
"journaling". Sistemas de arquivos que possuem essa característica são preferidos em
detrimento aos que não possuem.
Journaling é um recurso que permite recuperar um sistema após um desastre no disco
(ex.: quando um disco está sujo) em uma velocidade muito maior que nos sistemas de
arquivos sem journaling.
Segue abaixo uma breve descrição sobre os sistemas de arquivos mais comuns
disponíveis para o Linux:
Ext2
O sistema de arquivos ext2 é conhecido como "Second Extended FileSystem". Foi
desenvolvido para ser mais "eficiente" que o sistema de arquivos "Minix", seu
antecessor.
O Minix era muito utilizado nas primeiras versões do Linux, e foi utilizado por
muitos anos.
O sistema de arquivos ext2 não possui journaling e foi substituído pelo ext3.
Ext3
65
IBM TREINAMENTO LINUX BASICO
O sistema de arquivos ext3 é uma versão do ext2 com suporte a journaling. Portanto, o
ext3 tem as mesmas características do ext2, mas com suporte journaling.
Essa característica foi uma evolução e tornou o ext3 um sistema de arquivos muito
estável e robusto.
Como no ext3 só foi adicionado o suporte a journaling, podemos converter um sistema
de arquivos ext2 para ext3, adicionado suporte a journaling, e também podemos
converter um sistema de arquivos ext3 para ext2, removendo o suporte a journaling.
ReiserFS
O sistema de arquivos ReiserFS foi criado recentemente. Mas atualmente quase todas
as distribuições Linux o suportam.
Sua performance é muito boa, principalmente para um número muito grande de
arquivos pequenos.
ReiserFS também possui suporte a journaling.
XFS
O sistema de arquivos XFS também possui suporte a journaling. Foi desenvolvido
originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte. O
66
IBM TREINAMENTO LINUX BASICO
XFS é considerado um dos melhores sistemas de arquivos para banco de dados, pois
é muito rápido na gravação.
XFS utiliza muitos recursos de cache com memória RAM, e para utilizar XFS é
recomendado utilizar sistemas que possuem redundância de energia.
SWAP
SWAP é um espaço reservado para troca de dados com a memória RAM.
Em alguns lugares ele não é mencionado como um Sistema de Arquivos, mas resolvi
descrever aqui pois faz parte deste artigo.
VFAT
O sistema de arquivos VFAT é também conhecido como FAT32 (M$ Windows).
O sistema de arquivos VFAT não possui suporte a journaling. É utilizado normalmente
para transferir dados entre sistemas M$ Windows e o Linux instalados no mesmo disco,
pois pode ser lido e escrito por ambos os sistemas operacionais.
O sistema de arquivos VFAT está longe de ser um sistema de arquivos utilizado para
Sistemas Linux, exceto para compartilhamento/compatibilidade entre o M$ Windows e
Linux.
Se você utilizar VFAT no Linux, esteja certo de perder alguns atributos, tais como: 67
IBM TREINAMENTO LINUX BASICO
permissão de execução, links simbólicos, entre outras coisas.
Ambos os sistemas de arquivos ext3 e ReiserFS são maduros o bastante para serem
utilizados como padrão no Linux. Esses dois são os mais utilizados pelas distribuições
Linux.
Criando sistemas de arquivos
Para criar sistemas de arquivos utilizamos o comando mkfs (abreviação de: fazer
sistema de arquivos) e o comando mkswap para fazer espaços para troca de dados
com a memória RAM.
O comando mkfs é um "atalho" para vários outros comandos para criação dos mais
diversos e comuns sistemas de arquivos.
Para saber quais sistemas de arquivos é atualmente suportado pelo seu Linux, digite o
comando abaixo:
$ ls /sbin/mk*
/sbin/mkdosfs /sbin/mkfs.ext2 /sbin/mkfs.msdos /sbin/mkfs.xfs
/sbin/mke2fs /sbin/mkfs.ext3 /sbin/mkfs.reiser4 /sbin/mkreiser4
/sbin/mkfs /sbin/mkfs.jfs /sbin/mkfs.reiserfs /sbin/mkreiserfs
/sbin/mkfs.cramfs /sbin/mkfs.minix /sbin/mkfs.vfat /sbin/mkswap
No exemplo acima, estão os sistemas de arquivos suportados pelo meu sistema,
Kubuntu 6.06 LTS Dapper Drake, kernel 2.6.15-23-38.
Existem mais de uma forma/comando para criar um sistema de arquivos.
68
IBM TREINAMENTO LINUX BASICO
Por exemplo, para criar um sistema de arquivos ext3, na partição /dev/hda4, podemos
utilizar um dos seguintes comandos abaixo:
# mkfs.ext3 /dev/hda4
ou
# mkfs -t ext3 /dev/hda4
ou
# mke2fs -j /dev/hda4
Enfim, a sintaxe para o comando mkfs é:
# mkfs [opções] dispositivo [blocos]
Onde:
• opções:
o -t [tipo]: especifica o tipo de sistema de arquivos a ser criado. O padrão é
ext2;
o -c: checa o dispositivo a procura de blocos defeituosos durante a criação
do sistema de arquivos.
• dispositivo: o arquivo especial correspondente ao dispositivo;
• blocos: quantidade de blocos a ser utilizada pelo sistema de arquivos.
Para mais informações, consulte o manual do comando mkfs.
Agora vamos à prática
Aviso: lembre-se que, quando você utiliza o comando mkfs e seus derivados, você está
"formatando" a partição passada como parâmetro. Então, não utilize o mkfs em
partições que contenham dados importantes. Você estará apagando os dados da
69
IBM TREINAMENTO LINUX BASICO
partição.
Abaixo mostrarei alguns exemplos, lembre-se de substituir o nome da partição.
Criando um sistema de arquivos Ext3 na partição /dev/hda4:
# mkfs -t ext3 /dev/hda4
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1026144 inodes, 2050295 blocks
102514 blocks (5.00%) reserved for the super user
First data block=0
63 block groups
32768 blocks per group, 32768 fragments per group
16288 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Vamos agora criar um sistema de arquivos ReiserFS na partição /dev/hda3:
70
IBM TREINAMENTO LINUX BASICO
# mkfs -t reiserfs /dev/hda3
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)
A pair of credits:
Many persons came to www.namesys.com/support.html, and got a question answered
for $25, or just gave us a small donation there.
Oleg Drokin was the debugger for V3 during most of the time that V4 was under
development, and was quite skilled and fast at it. He wrote the large write
optimization of V3.
Guessing about desired format.. Kernel 2.6.15-23-386 is running.
Format 3.6 with standard journal
Count of blocks on the device: 2050288
Number of blocks consumed by mkreiserfs formatting process: 8274
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: da877e16-506d-4687-845a-0bf5eeed7862
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
ALL DATA WILL BE LOST ON '/dev/hda3'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
71
IBM TREINAMENTO LINUX BASICO
kernel based on 2.4.9, when you use reiserFS. Have fun.
ReiserFS is successfully created on /dev/hda3.
Vamos agora criar um sistema de arquivos VFAT na partição /dev/hda5:
# mkfs -t vfat /dev/hda5
mkfs.vfat 2.11 (12 Mar 2005)
Todas os sistemas de arquivos acima podem ser montados com a ferramenta "mount"
e incluída no arquivo /etc/fstab.
Exemplo:
# mount -t vfat /dev/hda5 /mnt/win
Criando um espaço para troca de dados com a memória RAM (SWAP):
Para criar um sistema de arquivos tipo SWAP iremos utilizar a ferramenta mkswap. É
necessário a partição ser do tipo "swap", código 82.
# mkswap /dev/hda6
Configurando área de troca versão 1, tamanho = 8422617 kB
sem rótulo, UUID=3f8c0bcc-5409-4951-8939-cba0d1e8da71
É necessário ativar a partição de troca com o comando abaixo:
# swapon /dev/hda6
Para desativar utilize o comando:
# swapoff /dev/hda6
72
IBM TREINAMENTO LINUX BASICO
Enfim, você pode criar vários outros sistemas de arquivos de forma similar. Mas
verifique antes se o sistema de arquivos é suportado pelo seu kernel e verifique
também o tipo da partição a qual você deseja formatar.
Criando sistema de arquivos em um arquivo:
A criação de sistemas de arquivos não está limitada apenas a partições de disco.
Também podemos criar um sistema de arquivos em arquivos.
Vamos utilizar o comando dd para criar um arquivo vazio de 1 GB.
# dd if=/dev/zero of=/tmp/arquivo-ext2 bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
Formatando o arquivo através do comando: mkfs
# mkfs -t ext3 /tmp/arquivo-ext3
mke2fs 1.38 (30-Jun-2005)
/tmp/arquivo-ext3 is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
125184 inodes, 250000 blocks
12500 blocks (5.00%) reserved for the super user
73
IBM TREINAMENTO LINUX BASICO
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15648 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
OBS: Ele primeiro dirá que o arquivo arquivo-ext2 não é um dispositivo de bloco
especial (uma partição de disco) e perguntará se deve continuar, responda com y para
aceitar mesmo assim.
Montando partições e discos no Linux
Introdução
O uso do GNU/Linux (aqui chamado somente de Linux) cresce a cada dia.
Muitos usuários, ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato
de colegas que já usam o Linux, sentem-se incentivados a experimentarem o sistema.
A grande maioria já tem o sistema operacional Windows instalado e decide
compartilhar o computador também com o Linux. Mas quase sempre, o usuário
necessita acessar arquivos presentes na partição do Windows. Isso é perfeitamente
possível, através de um processo conhecido como montagem da partição. Algumas
74
IBM TREINAMENTO LINUX BASICO
distribuições Linux montam as partições Windows automaticamente, mas em outras, é
necessário que o usuário faça isso manualmente. Esse processo é simples e será
explicado aqui. Os procedimentos a seguir devem ser executados como usuário root ou
outro que tenha permissões de administrador.
Discos
O primeiro passo é saber como identificar os discos (HD, CD-ROM, disquete) no
Linux. Tais dispositivos, além de outros (como a porta LPT1) são tidas como existentes
no diretório /dev/. O HD é identificado como o dispositivo hda0 (hdb para outro HD no
mesmo computador e assim por diante). O número 0, indica a partição no HD. Com
isso, a segunda partição deve ser identificada como hda1, a terceira como hda2, enfim.
No caso de HDs SCSI, as letras hd devem ser trocadas por sd, ficando da seguinte
forma: sda0, sda1, sda2, etc.
No caso do drive de disquete, a sigla para sua identificação é fd0. Se houver
outro drive, este deve ser identificado como fd1. No caso dos CD-ROMS, eles são
identificados como HDs. Assim, se por exemplo, em seu computador há um HD e um
CD-ROM, o HD poderá ser reconhecido como hda e o CD como hdb.
Montando a partição
Para a partição Windows, você deve saber qual das existentes é ela. Em nosso
exemplo, vamos supôr que o Windows está na partição hda0 e o Linux na partição
hda1. Tendo ciência disso, agora é necessário que você crie um diretório no Linux por
onde a partição Windows deverá ser acessada, ou seja, o ponto de montagem.
Geralmente, este diretório é criado dentro da pasta /mnt/ mas pode ser criado em outro.
Para o nosso exemplo, vamos chamar este diretório de win. Assim, seu caminho é
/mnt/win.
75
IBM TREINAMENTO LINUX BASICO
O próximo passo é comando de montagem:
mount - t [tipo] [caminho da partição] [ponto de montagem]
Em nosso exemplo, o comando acima ficaria assim:
mount -t vfat /dev/hda1 /mnt/win
O tipo indica o sistema de arquivos utilizados na partição. Partições fat e fa32
são identificados como vfat. No caso de CD-ROM, o tipo deve ser especificado como
iso9660. Por exemplo: mount -t iso9660 /dev/hdb /mnt/cdrom. As partições NTFS
podem, teriocamente, serem montadas do mesmo jeito. No entanto, existem problemas
de compatibilidade entre o kernel do Linux e o sistema de arquivos NTFS, motivo pelo
qual, a montagem desse tipo de partição deve seguir procedimentos especiais, que não
serão explicadas aqui. Se a partição que você deseja montar for ext2 ou ext3, basta
especificar estes nomes como tipo.
Montando automaticamente
Os passos explicados anteriormente devem ser repetidos toda vez que você
usar o Linux. Para evitar isso, é possível montar a partição automaticamente, durante o
processo de inicialização. Para isso, basta localizar o arquivo fstab. Geralmente ele se
encontra dentro do diretório /etc/. Abra o arquivo e adicione a seguine linha no final
(para o nosso exemplo):
/dev/hda1 /mnt/win vfat defaults 0 0
Agora vamos entendê-lo. A sintaxe da linha é:
[caminho da partição] [ponto de montagem] [tipo] [opções] [ordem]
O campo opções tem as seguintes possibidades:
76
IBM TREINAMENTO LINUX BASICO
defaults - usa valores padrões de montagem;
noauto - não monta os dispositivos durante a inicialização. Indicado para drives de
disquetes e de CDs;
ro - monta somente como leitura;
user - dá permissão de montagem aos demais usuários do sistema;
sync - acrescenta atributos para o perfeito funcionamento de dispositivos móveis, como
disquetes e zip drives.
É possível usar mais de uma opção ao mesmo tempo, bastando separá-las por
vírgula. Por exemplo:
/dev/hda1 /mnt/win vfat ro,user 0 0
O campo ordem indica em que seqüência os sistemas de arquivo serão
verificados. Se deixar o campo em 0 (zero), esse procedimento não será executado.
Sendo assim, na maioria dos casos basta deixar neste valor.
Depois que o arquivo fstab tiver sido alterado, na próxima inicialização, a
montagem ocorrerá automaticamente, exceto se algum passo foi executado de forma
errada.
Desmontando partições
Para desmontar uma partição, basta digitar o comando umount mais o caminho
da partição. Por exemplo:
umount /dev/hda1
77
IBM TREINAMENTO LINUX BASICO
Em alguns casos, pode ser necessário digitar o ponto de montagem ao invés do
caminho da partição:
umount /mnt/win
Finalizando
Este capitulo mostrou os procedimentos básicos para montagem de partições no
Linux. Os comandos mount e umount, assim como o arquivo fstab, possuem outros
recursos, que podem ser verificados através da ajuda dos mesmos em seu Linux.
Processos
Introdução
Nos sistemas operacionais, um processo é a forma de representar um programa
em execução. É o processo que utiliza os recursos do computador - processador,
memória, etc - para a realização das tarefas para as quais a máquina é destinada. A
seguir, você verá os principais conceitos relacionados a processos no Linux e as
ferramentas usadas para manipulá-los e gerenciá-los.
Composição de um processo
O sistema operacional lida com uma infinidade de processos e, por isso, é necessário
ter meios que permitam controlá-los. Para isso, os processos contam com um conjunto
de características, dentre as quais:
• Proprietário do processo;
• Estado do processo (em espera, em execução, etc);
• Prioridade de execução;
• Recursos de memória.
78
IBM TREINAMENTO LINUX BASICO
O trabalho de gerenciamento de processos precisa contar com as informações acima e
com outras de igual importância para que as tarefas sejam executadas da maneira
mais eficiente. Um dos meios usados para isso é atribuir a cada processo um PID.
PID e PPID
Um PID (Process Identifier) é um número de identificação que o sistema dá a cada
processo. Para cada novo processo, um novo número deve ser atribuído, ou seja, não
se pode ter um único PID para dois ou mais processos ao mesmo tempo.
Os sistemas baseados em Unix precisam que um processo já existente se duplique
para que a cópia possa ser atribuída a uma tarefa nova. Quando isso ocorre, o
processo "copiado" recebe o nome de "processo pai", enquanto que o novo é
denominado "processo filho". É nesse ponto que o PPID (Parent Process Identifier)
passa a ser usado: o PPID de um processo nada mais é do que o PID de seu processo
pai.
UID e GID
Conforme já mencionado, cada processo precisa de um proprietário, um usuário que
seja considerado seu dono. A partir daí, o sistema saberá, através das permissões
fornecidas pelo proprietário, quem pode e quem não pode executar o processo em
questão. Para lidar com os donos, o sistema usa os números UID e GID.
O Linux gerencia os usuários e os grupos através de números conhecidos como UID
(User Identifier) e GID (Group Identifier). Como é possível perceber, UID são números
de usuários e GID são números de grupos. Os nomes dos usuários e dos grupos
servem apenas para facilitar o uso humano do computador.
79
IBM TREINAMENTO LINUX BASICO
Cada usuário precisa pertencer a um ou mais grupos. Como cada processo (e cada
arquivo) pertence a um usuário, logo, esse processo pertence ao grupo de seu
proprietário. Assim sendo, cada processo está associado a um UID e a um GID.
Os números UID e GID variam de 0 a 65536. Dependendo do sistema, o valor limite
pode ser maior. No caso do usuário root, esses valores são sempre 0 (zero). Assim,
para fazer com que um usuário tenha os mesmos privilégios que o root, é necessário
que seu GID seja 0.
Sinais de processos
Os sinais são meios usados para que os processos possam se comunicar e para que o
sistema possa interferir em seu funcionamento. Por exemplo, se o usuário executar o
comando kill para interromper um processo, isso será feito por meio de um sinal.
Quando um processo recebe um determinado sinal e conta com instruções sobre o que
fazer com ele, tal ação é colocada em prática. Se não houver instruções pré-
programadas, o próprio Linux pode executar a ação de acordo com suas rotinas.
Entre os sinais existentes, tem-se os seguintes exemplos:
• STOP - esse sinal tem a função de interromper a execução de um processo e só
reativá-lo após o recebimento do sinal CONT;
• CONT - esse sinal tem a função de instruir a execução de um processo após
este ter sido interrompido;
• SEGV - esse sinal informa erros de endereços de memória;
• TERM - esse sinal tem a função de terminar completamente o processo, ou seja,
este deixa de existir após a finalização;
80
IBM TREINAMENTO LINUX BASICO
• ILL - esse sinal informa erros de instrução ilegal, por exemplo, quando ocorre
divisão por zero;
• KILL - esse sinal tem a função de "matar" um processo e é usado em momentos
de criticidade.
O kill também é um comando que o usuário pode usar para enviar qualquer sinal,
porém, se ele for usado de maneira isolada, ou seja, sem o parâmetro de um sinal, o
kill por padrão executa o sinal TERM.
A sintaxe para a utilização do comando kill é a seguinte:
kill -SINAL PID
Como exemplo, vamos supor que você deseja interromper temporariamente a
execução do processo de PID 4220. Para isso, pode-se usar o seguinte comando:
$ kill -STOP 4220
Para que o processo 4220 volte a ser executado, basta usar o comando:
$ kill -CONT 4220
Se o sinal precisa ser enviado a todos os processos, pode-se usar o número -1 no
lugar do PID. Por exemplo:
$ kill -STOP -1
Como já dito, usar o comando kill isoladamente - por exemplo, kill 4220 - faz com que
81
IBM TREINAMENTO LINUX BASICO
este use o sinal TERM por padrão. Esse sinal, no entanto, pode ser ignorado pelos
processos. É por isso que é boa prática usar o comando "kill -9 PID" para "matar" um
processo, pois o número nove representa o sinal kill e este não pode ser ignorado. Isso
deixa claro que se você conhecer o número que é atribuído a um sinal, você pode usá-
lo no lugar de seu nome. Com exceção de alguns sinais, a numeração de cada um
pode mudar de acordo com a distribuição ou com a versão do kernel.
Agora, imagine que você não saiba qual o PID de um processo e tenha se esquecido
que o comando ps (visto mais à frente) descobre tal informação. Neste caso, pode-se
usar o comando killall, desde que você saiba o nome do processo. A sintaxe é:
killall -SINAL processo
Por exemplo:
$ killall -STOP vi
Estado dos processos
Quando um processo é criado, isso não significa que ele será imediatamente
executado. Além disso, determinados processos podem ser temporariamente
paralisados para que o processador possa executar um processo prioritário. Isso quer
dizer que os processos, em certos momentos, podem estar em situações de execução
diferentes. O Linux trabalha, essencialmente, com quatro tipos de situação, isto é,
estados:
• Executável: o processo pode ser executado imediatamente;
82
IBM TREINAMENTO LINUX BASICO
• Dormente: o processo precisa aguardar alguma coisa para ser executado. Só
depois dessa "coisa" acontecer é que ele passa para o estado executável;
• Zumbi: o processo é considerado "morto", mas, por alguma razão, ainda existe;
• Parado: o processo está "congelado", ou seja, não pode ser executado.
Comandos nice e renice
Ao abordarmos os comandos nice e renice é necessário entender o conceito de
gentileza. Um processo pode ter prioridade em relação a outros em sua execução.
Quando um processo é gentil, significa que ele "oferece a gentileza" de permitir que um
processo com prioridade maior que a sua seja executado antes dele. Os níveis de
gentileza, também chamados de nice, são determinados através de números. Quanto
mais alto for o valor nice, mais gentil é o processo. Geralmente, o intervalo de números
usados no nice são os inteiros entre -19 e 19.
Embora determinar a prioridade de um processo não seja uma prática comum, afinal, o
próprio Linux faz muito bem essa tarefa, isso pode ser necessário em alguma situação.
Para isso, utiliza-se um comando que recebe o mesmo nome do conceito: nice. A
sintaxe é:
nice -n prioridade processo
Por exemplo:
$ nice -n -5 ntpd
No exemplo, o ntpd recebe prioridade -5. Trata-se de uma prioridade alta, afinal, como
já dito, quanto menor o número menor sua gentileza.
Se um determinado processo está em execução, isso acontece com uma prioridade já
definida. Para alterar um processo nessa condição, usa-se o comando renice, cuja 83
IBM TREINAMENTO LINUX BASICO
sintaxe é:
$ renice prioridade opção processo/destino
As opções do renice são:
• -u - a alteração ocorrerá nos processos do usuário informado;
• -g - a alteração ocorrerá nos processos do grupo indicado;
• -p - a alteração ocorrerá no processo cujo PID for informado.
Um exemplo:
$ renice +19 1000 -u vol
Neste caso, o comando renice alterou a prioridade do processo 1000, assim como a
prioridade dos processos do usuário vol.
Verificando processos com o ps
O ps é um comando de extrema importância para o gerenciamento de processos. Por
ele, é possível saber quais os processos em execução atualmente, quais os UIDs e
PIDs correspondentes, entre outros.
Se somente ps for digitado na linha de comando, geralmente o sistema mostra quais os
processos do usuário. É preciso usar uma combinação de opções para obter mais
detalhes.
As opções mais importantes são os seguintes:
84
IBM TREINAMENTO LINUX BASICO
• a - mostra todos os processos existentes;
• e - exibe as variáveis de ambiente relacionadas aos processos;
• f - exibe a árvore de execução dos processos;
• l - exibe mais campos no resultado;
• m - mostra a quantidade de memória ocupada por cada processo;
• u - exibe o nome do usuário que iniciou determinado processo e a hora em que
isso ocorreu;
• x - exibe os processos que não estão associados a terminais;
• w - se o resultado de processo não couber em uma linha, essa opção faz com
que o restante seja exibido na linha seguinte.
Das opções acima, a combinação mais usada é aux:
$ ps aux
Como exemplo, o resultado obtido com esse comando foi o seguinte:
85
IBM TREINAMENTO LINUX BASICO
Note que usando a combinação lax, o resultado mostra mais detalhes:
$ ps lax
A seguir, segue a descrição dos campos mostrados anteriormente e alguns que só são
mostrados com a combinação lax:
• USER - nome do usuário dono do processo;
86
IBM TREINAMENTO LINUX BASICO
• 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;
• %CPU - porcentagem do processamento usado;
• %MEM - porcentagem da memória usada;
• VSZ - indica o tamanho virtual do processo;
• RSS - sigla de Resident Set Size, indica a quantidade de memória usada (em
KB);
• TTY - indica o identificador do terminal do processo;
• START - hora em que o processo foi iniciado;
• TIME - tempo de processamento já consumido pelo processo;
• COMMAND - nome do comando que executa aquele processo;
• PRI - valor da prioridade do processo;
• NI - valor preciso da prioridade (geralmente igual aos valores de PRI);
• WCHAN - mostra a função do kernel onde o processo se encontra em modo
suspenso;
• STAT - indica o estado atual do processo, sendo representado por uma letra: R -
executável; D - em espera no disco; S - Suspenso; T - interrompido; Z - Zumbi.
Essas letras podem ser combinadas e ainda acrescidas de: W - processo
paginado em disco; < - processo com prioridade maior que o convencional; N -
processo com prioridade menor que o convencional; L - processo com alguns
recursos bloqueados no kernel.
•
Verificando processos com o top
O comando ps trabalha como se tirasse uma fotografia da situação dos processos
naquele momento. O comando top, por sua vez, coleta as informações, mas as atualiza
regularmente. Geralmente essa atualização ocorre a cada 10 segundos.
87
IBM TREINAMENTO LINUX BASICO
A sintaxe do comando top é a seguinte:
top –opção
Entre as opções, tem-se as que se seguem:
• -d - atualiza o top após um determinado período de tempo (em segundos). Para
isso, informe a quantidade de segundos após a letra d. Por exemplo: top -d 30;
• -c - exibe a linha de comando ao invés do nome do processo;
• -i - faz o top ignorar processos em estado zumbi;
• -s - executa o top em modo seguro.
É possível manipular alguns recursos do comando top através das teclas do teclado.
Por exemplo, para atualizar imediatamente o resultado exibido, basta pressionar a tecla
de espaço. Se pressionar a tecla q, o top é finalizado. Pressione a tecla h enquanto
estiver utilizando o top para ver a lista completa de opções e teclas de atalho.
88
IBM TREINAMENTO LINUX BASICO
Os recursos jobs, fg e bg, fuser, pstree, nohup
Para ter ainda mais controle sobre os processos executados no Linux, pode-se utilizar
os seguintes comandos: jobs, fg e bg, fuser, pstree, nohup. Cada um é descrito a
seguir:
89
IBM TREINAMENTO LINUX BASICO
jobs
Serve para visualizar os processos que estão parados ou executando em segundo
plano (background). Quando um processo está nessa condição, significa sua execução
é feita pelo kernel sem que esteja vinculada a um terminal. Em outras palavras, um
processo em segundo plano é aquele que é executado enquanto o usuário faz outra
coisa no sistema. Uma dica para saber se o processo está em background é verificar a
existência do caractere & no final da linha. Se o processo estiver parado, geralmente a
palavra "stopped" aparece na linha, do contrário, a palavra "running" é exibida. A
sintaxe do jobs é:
jobs -opção
As opções disponíveis são:
• -l - lista os processos através do PID;
• -r - lista apenas os processos em execução;
• -s - lista apenas os processos parados.
Se na linha de um processo aparecer o sinal positivo (+), significa que este é o
processo mais recente a ser paralisado ou a estar em segundo plano. Se o sinal for
negativo (-), o processo foi o penúltimo. Note também que no início da linha um número
é mostrado entre colchetes. Muitos confundem esse valor com o PID do processo,
mas, na verdade, trata-se do número de ordem usado pelo jobs.
fg e bg
O fg é um comando que permite a um processo em segundo plano (ou parado) passar
90
IBM TREINAMENTO LINUX BASICO
para o primeiro (foreground), enquanto que o bg passa um processo do primeiro plano
para o segundo. Para usar o bg, deve-se paralisar o processo. Isso pode ser feito
pressionando-se as teclas Ctrl + Z no teclado. Em seguida, digita-se o comando da
seguinte forma:
bg +número
O número mencionado corresponde ao valor de ordem informado no início da linha
quando o comando jobs é usado.
Quanto ao comando fg, a sintaxe é a mesma:
fg +número
fuser
O comando fuser mostra qual processo faz uso de um determinado arquivo ou
diretório. Sua sintaxe é:
fuser -opção caminho (do arquivo ou diretório)
Entre as opções, tem-se:
• -k - finaliza o processo que utiliza o arquivo/diretório em questão;
• -i - deve ser usada em conjunto com a opção k e serve para perguntar se a
finalização do processo deve ser feita;
• -u - mostra o proprietário do processo;
• -v - o resultado é mostrado em um padrão de exibição semelhante ao comando
91
IBM TREINAMENTO LINUX BASICO
ps.
pstree
Esse comando mostra processos relacionados em formato de árvore. Sua sintaxe é:
pstree -opção PID
Entre as opções, tem-se:
• -u - mostra o proprietário do processo;
• -p - exibe o PID após o nome do processo;
• -c - mostra a relação de processos ativos;
• -G - usa determinados caracteres para exibir o resultado em um formato gráfico.
Um detalhe importante: se ao digitar o comando pstree o PID não for informado, todos
os processos serão listados.
92
IBM TREINAMENTO LINUX BASICO
nohup
O comando nohup possibilita ao processo ficar ativo mesmo quando o usuário faz
logout. É da natureza dos sistemas baseados em Unix interromper processos caso seu
proprietário não esteja mais ativo, por isso, o nohup pode ser muito útil. Sua sintaxe é:
93
IBM TREINAMENTO LINUX BASICO
nohup comando
Finalizando
Saber lidar com processos pode ser crucial para manter um computador funcionando e
executando suas tarefas numa situação crítica. O assunto é essencial a
administradores de sistemas, mas é importante até mesmo ao usuário doméstico.
Obviamente que o controle de processos não se resume aos recursos citados aqui,
uma vez que este artigo deve ser interpretado como um guia básico. Além disso, se
você pretende obter algum certificado em Linux, ter conhecimento sobre o controle de
processos pode lhe dar pontos significativos. Por isso, não hesite em explorar os
comandos. Se quiser mais detalhes, use os recursos de ajuda, como o tradicional "man
comando".
94