94
IBM TREINAMENTO LINUX BASICO Treinamento Básico de LINUX Material Desenvolvido por Edvaldo de Oliveira Mat.105473 1

Linux Basico - Edvaldo Oliveira

Embed Size (px)

DESCRIPTION

Introdução a utilizaçao de Linux, comandos e gerenciamento de arquivos.

Citation preview

Page 1: Linux Basico - Edvaldo Oliveira

IBM TREINAMENTO LINUX BASICO

Treinamento Básico de LINUX

Material Desenvolvido por

Edvaldo de Oliveira Mat.105473

1

Page 2: Linux Basico - Edvaldo Oliveira

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

Page 3: Linux Basico - Edvaldo Oliveira

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

Page 4: Linux Basico - Edvaldo Oliveira

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

Page 5: Linux Basico - Edvaldo Oliveira

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

Page 6: Linux Basico - Edvaldo Oliveira

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

Page 7: Linux Basico - Edvaldo Oliveira

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

Page 8: Linux Basico - Edvaldo Oliveira

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

Page 9: Linux Basico - Edvaldo Oliveira

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

Page 10: Linux Basico - Edvaldo Oliveira

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

Page 11: Linux Basico - Edvaldo Oliveira

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

Page 12: Linux Basico - Edvaldo Oliveira

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

Page 13: Linux Basico - Edvaldo Oliveira

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

Page 14: Linux Basico - Edvaldo Oliveira

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

Page 15: Linux Basico - Edvaldo Oliveira

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

Page 16: Linux Basico - Edvaldo Oliveira

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

Page 17: Linux Basico - Edvaldo Oliveira

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

Page 18: Linux Basico - Edvaldo Oliveira

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

Page 19: Linux Basico - Edvaldo Oliveira

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

Page 20: Linux Basico - Edvaldo Oliveira

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

Page 21: Linux Basico - Edvaldo Oliveira

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

Page 22: Linux Basico - Edvaldo Oliveira

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

Page 23: Linux Basico - Edvaldo Oliveira

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

Page 24: Linux Basico - Edvaldo Oliveira

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

Page 25: Linux Basico - Edvaldo Oliveira

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

Page 26: Linux Basico - Edvaldo Oliveira

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

Page 27: Linux Basico - Edvaldo Oliveira

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

Page 28: Linux Basico - Edvaldo Oliveira

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

Page 29: Linux Basico - Edvaldo Oliveira

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

Page 30: Linux Basico - Edvaldo Oliveira

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

Page 31: Linux Basico - Edvaldo Oliveira

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

Page 32: Linux Basico - Edvaldo Oliveira

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

Page 33: Linux Basico - Edvaldo Oliveira

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

Page 34: Linux Basico - Edvaldo Oliveira

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

Page 35: Linux Basico - Edvaldo Oliveira

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

Page 36: Linux Basico - Edvaldo Oliveira

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

Page 37: Linux Basico - Edvaldo Oliveira

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

Page 38: Linux Basico - Edvaldo Oliveira

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

Page 39: Linux Basico - Edvaldo Oliveira

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

Page 40: Linux Basico - Edvaldo Oliveira

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

Page 41: Linux Basico - Edvaldo Oliveira

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

Page 42: Linux Basico - Edvaldo Oliveira

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

Page 43: Linux Basico - Edvaldo Oliveira

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

Page 44: Linux Basico - Edvaldo Oliveira

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

Page 45: Linux Basico - Edvaldo Oliveira

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

Page 46: Linux Basico - Edvaldo Oliveira

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

Page 47: Linux Basico - Edvaldo Oliveira

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

Page 48: Linux Basico - Edvaldo Oliveira

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

Page 49: Linux Basico - Edvaldo Oliveira

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

Page 50: Linux Basico - Edvaldo Oliveira

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

Page 51: Linux Basico - Edvaldo Oliveira

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

Page 52: Linux Basico - Edvaldo Oliveira

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

Page 53: Linux Basico - Edvaldo Oliveira

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

Page 54: Linux Basico - Edvaldo Oliveira

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

Page 55: Linux Basico - Edvaldo Oliveira

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

Page 56: Linux Basico - Edvaldo Oliveira

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

Page 57: Linux Basico - Edvaldo Oliveira

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

Page 58: Linux Basico - Edvaldo Oliveira

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

Page 59: Linux Basico - Edvaldo Oliveira

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

Page 60: Linux Basico - Edvaldo Oliveira

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

Page 61: Linux Basico - Edvaldo Oliveira

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

Page 62: Linux Basico - Edvaldo Oliveira

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

Page 63: Linux Basico - Edvaldo Oliveira

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

Page 64: Linux Basico - Edvaldo Oliveira

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

Page 65: Linux Basico - Edvaldo Oliveira

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

Page 66: Linux Basico - Edvaldo Oliveira

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

Page 67: Linux Basico - Edvaldo Oliveira

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

Page 68: Linux Basico - Edvaldo Oliveira

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

Page 69: Linux Basico - Edvaldo Oliveira

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

Page 70: Linux Basico - Edvaldo Oliveira

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

Page 71: Linux Basico - Edvaldo Oliveira

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

Page 72: Linux Basico - Edvaldo Oliveira

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

Page 73: Linux Basico - Edvaldo Oliveira

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

Page 74: Linux Basico - Edvaldo Oliveira

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

Page 75: Linux Basico - Edvaldo Oliveira

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

Page 76: Linux Basico - Edvaldo Oliveira

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

Page 77: Linux Basico - Edvaldo Oliveira

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

Page 78: Linux Basico - Edvaldo Oliveira

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

Page 79: Linux Basico - Edvaldo Oliveira

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

Page 80: Linux Basico - Edvaldo Oliveira

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

Page 81: Linux Basico - Edvaldo Oliveira

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

Page 82: Linux Basico - Edvaldo Oliveira

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

Page 83: Linux Basico - Edvaldo Oliveira

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

Page 84: Linux Basico - Edvaldo Oliveira

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

Page 85: Linux Basico - Edvaldo Oliveira

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

Page 86: Linux Basico - Edvaldo Oliveira

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

Page 87: Linux Basico - Edvaldo Oliveira

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

Page 88: Linux Basico - Edvaldo Oliveira

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

Page 89: Linux Basico - Edvaldo Oliveira

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

Page 90: Linux Basico - Edvaldo Oliveira

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

Page 91: Linux Basico - Edvaldo Oliveira

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

Page 92: Linux Basico - Edvaldo Oliveira

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

Page 93: Linux Basico - Edvaldo Oliveira

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

Page 94: Linux Basico - Edvaldo Oliveira

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