LPI 103-104 | TUTORIAL
Vamos continuar com a segunda aula da preparação para a certificação LPI
A aula de hoje trata do importantíssimo ambiente de linha de
comando, além de sistemas de arquivos e outros assuntos.
por Luciano Siqueira
Tópico 103:
Comandos
GNU e Unix.
Objetivo 1.103.3: Trabalhando
na linha de comando
tos. Usar alias sem argumentos mostra quais
aliases existem e seus conteúdos.
exec
O comando iniciado através de exec
não se torna um processo filho do shell,
mas toma seu lugar. Dessa forma, o shell é
finalizado quando o comando terminar.
O shell interpreta a primeira palavra
na linha de comando como um comando.
O caminho completo ou relativo para o
comando precisa ser fornecido, a menos
que o comando esteja localizado em um
dos diretórios contidos na variável de ambiente PATH. Se o programa se encontrar
no diretório de trabalho atual e fora dos
diretórios contidos em PATH, ele precisará ser invocado precedido por ./.
A maneira mais direta de interagir com o
computador é usando a linha de comando.
O prompt do shell (terminando em $ ou
# para o usuário root) indica que o shell
está pronto para receber instruções.
O shell é o ambiente que faz o intermédio entre o usuário e os recursos
do computador, como um ambiente
de programação em tempo real para
executar tarefas. O shell padrão no
Linux é o bash (Bourne Again Shell),
Variáveis
e é a ele que os procedimentos aqui As variáveis usadas no shell são semelhanmostrados se referem.
tes às usadas em linguagens de prograAs instruções do shell geralmente mação. Nomes de variáveis são limitados
seguem o formato: comando [opções] {ar- a caracteres alfanuméricos.
gumentos}
Para se criar ou modificar uma variável,
Alguns comandos embutidos do am- espaços não devem ser usados:
biente shell:
$ nome_da_variável=valor_da_variável
alias
Cria um apelido para um comando,
no formato:
O valor de uma variável é retornado
acrescentando-se $ ao seu nome:
$ alias apelido=’nome_do_programa --opções’
$ echo $nome_da_variável
valor_da_variável
É útil para facilitar a entrada de comandos recorrentes que levam muitos argumen-
Há dois tipos de variáveis: locais e
exportadas:
Linux Magazine #27 | Fevereiro de 2007
TUTORIAL
LPI nível 1: Aula 2
Gözde Otman - www.sxc.hu
➧ Locais: Acessíveis apenas no shell
atual.
➧ Exportadas: Acessíveis no shell e pelos processos iniciados neste shell.
Todas as variáveis são listadas usando o
comando set. Para ver apenas as variáveis
exportadas, usa-se env. Se uma variável pode
ser acessada por qualquer processo ou shell,
é chamada de variável “global”.
Algumas variáveis de ambiente podem
ser pré-definidas, seja de forma embutida
na shell ou nos arquivos de configuração,
como mostra a tabela 1.
Variáveis especiais
➧ $!: PID do último processo filho
➧ $$: PID do shell atual
➧ $?: Retorna 0 se o último comando
foi bem sucedido, caso contrário
retorna 1
➧ ~: Corresponde ao diretório pessoal
do usuário atual
➧ ~alaor: Corresponde ao diretório
pessoal do usuário chamado “alaor”
Comandos Seqüenciais
Para executar três comandos em seqüência, independente do resultado de
cada um, utiliza-se o formato:
$ comando1 ; comando2 ; comando3
Para executar o comando seguinte
apenas se o anterior foi bem sucedido
(se retornou 0):
$ comando1 && comando2 && comando3
51
TUTORIAL | LPI 103-104
Tabela 1: Variáveis pré-definidas
Variável
Definição
DISPLAY
Usado pelo X para saber onde executar os aplicativos clientes
HISTFILE
Caminho para o histórico de comandos do usuário (geralmente $HOME/.bash_history)
HOME
Caminho para o diretório pessoal do usuário
LOGNAME
O nome que o usuário usou para entrar no sistema
PATH
Lista de diretórios nos quais programas serão procurados caso tenham sido solicitados sem o caminho completo ou relativo
PWD
O diretório atual
SHELL
O shell utilizado (nesse caso, /bin/bash)
TERM
O tipo de emulador de terminal utilizado
Executar o comando seguinte apenas
se o anterior não foi bem sucedido (se
retornou diferente de 0):
$ comando1 || comando2 || comando3
Auto-Completar Comandos e Caminhos
Um recurso que agiliza a digitação de
comando e caminhos existentes, é a
utilização da tecla [TAB].
Exemplo: Comando whatis
$ wha<TAB>
$ whatis
Objetivo 1.103.2: Processar
fluxos de texto através de filtros
posição de campo. Para separar por campo,
usa-se a opção -d para especificar o caractere
que delimita os campos e -f para informar
a posição do campo. Mostrar os campos da
posição 1 e 3 do arquivo /etc/group, campos
que estão separados por ::
$ cut -d ‘:’ -f 1,3 /etc/group
root:0
bin:1
daemon:2
sys:3
adm:4
(...)
Para mostrar outro delimitador no
lugar do original, usa-se a opção --output-delimiter:
a leitura deve ser feita a partir da linha de
$ cut -d ‘:’ -f 1,3 /etc/group --outputnúmero especificado após o +.
wc: Conta linhas, palavras ou caracteres, ➥delimiter ‘ = ‘
root = 0
com as opções -l, -w e -c respectivamente. bin = 1
Quando usado sem argumentos, mostra daemon = 2
esses três valores na seqüência.
sys = 3
nl: Numera linhas, como cat -b. O adm = 4
argumento -ba faz numerar todas as li- (...)
nhas. O argumento -bt apenas as que
não estejam em branco.
paste: Concatena arquivos lado a lado.
expand: Substitui espaços de tabulação
(“TABs”) por espaços simples, mantendo $ paste texto_simples texto_simples
texto simples texto simples
a mesma distância aparente.
criado com cat criado com cat
unexpand: Substitui dois ou mais espaços simples por espaços de tabulação
(TABs).
join: Similar ao paste, mas trabalha
hexdump: Mostra arquivos binários. A especificando campos, no formato join
opção -C torna a saída mais legível, mos- -1 CAMPO -2 CAMPO <arquivo um> <arquitrando a coluna de endereço hexadecimal, vo dois>, onde CAMPO é o número
seguida pela coluna dos dados do arquivo indicando qual campo nos respectivos
(valores hexadecimais seqüenciais sepa- arquivos (primeiro e segundo) deve ser
rados a cada dois bytes), e por último a correlacionado. Exemplo: Relacionar
coluna que mostra esses mesmos bytes as linhas de arq2 cujo primeiro camno formato ASCII.
po (coluna 1) seja igual ao primeiro
split: Divide um arquivo em outros
campo de arq2:
menores seguindo critérios como tamanho
ou número de linhas. A opção -l indica arq1:
o número de linhas de cada parte do ar- 1 a1 x1
2 b1 y1
quivo dividido. A opção -b indica qual o 3 c1 z1
tamanho de cada parte. Um prefixo para
as partes pode ser indicado após o nome arq2:
1 a2 x2
do arquivo a ser dividido:
Dividir um arquivo em partes de 2 b2 y2
3 c2 z2
1024Kb usando o prefixo “parte_”: $
Esse objetivo se relaciona principalmente ao uso das ferramentas do pacote
GNU textutils. São comandos Unix padrão, utilizados para modificar seqüências de texto.
cat: É usado para mostrar o conteúdo
de arquivos.
tac: Tem a mesma função do cat, mas
mostra o conteúdo de trás para frente.
head: Mostra o começo de arquivos.
Por padrão, as primeiras dez linhas são
mostradas. A quantidade de linhas a serem mostradas é indicada pela opção
-n. A opção -c especifica o número de
caracteres (bytes) a serem mostrados no
split -b 1024k “arquivo original” par- $ join -1 1 -2 1 arq1 arq2
lugar de linhas.
tail: Mostra o final de arquivos. Por pa- te_ . Esse comando criará arquivos 1 a1 x1 a2 x2
drão, as últimas dez linhas são mostradas. chamados parte_aa, parte_ab, parte_ac 2 b1 y1 b2 y2
A quantidade de linhas a serem mostradas etc. Para concatenar novamente o 3 c1 z1 c2 z2
é indicada pela opção -n . A opção -c es- arquivo, usa-se cat. Será criado um
pecifica o número de caracteres (bytes) a arquivo de conteúdo idêntico ao do
A primeira coluna do resultado é o
serem mostrados no lugar de linhas. Para arquivo original.
campo que foi relacionado, seguido das
que o final do arquivo seja mostrado conuniq: Mostra o conteúdo de arquivos su- linhas correspondentes. É possível delitinuamente, à medida que mais texto é primindo linhas seqüenciais repetidas.
mitar quais campos mostrar, com a opção
adicionado ao final do mesmo, usa-se a
cut: Delimita um arquivo em colunas, em -o. Essa opção deve ser escrita no formato
opção -f (de follow). O sinal + indica que determinado número de caracteres ou por N.M, onde N é o número correspondente
52
http://www.linuxmagazine.com.br
LPI 103-104 | TUTORIAL
ao arquivo e M o número correspondenO comando ls é usado para listar arquite ao campo desse arquivo. O campo de vos e conteúdo de um diretório. A opção
relação também pode ser referido por -l exibe detalhes sobre o(s) arquivo(s), -s
0. Exemplo: Fazer a mesma relação do
mostra o tamanho em KB, e -d mostra o
exemplo anterior, mostrando apenas o diretório, e não seu conteúdo. Exemplo
primeiro campo de arq1 e apenas o se- de saída de ls -l:
gundo de arq2:
$ join -1 1 -2 1 -o ‘1.2 2.3’ arq1 arq2
a1 x2
b1 y2
c1 z2
sort: Ordena alfabeticamente. Com
a opção -n, ordena numericamente, e -r
inverte o resultado.
sort texto_simples
criado com cat
texto simples
fmt: Formata para determinado número
de caracteres por linha. O padrão é 75.
➧ -w: indica o número de caracteres
por linha
➧ -s: quebra linhas grandes, mas não
as preenche
➧ -u: um espaço entre palavras e dois
espaços entre sentenças.
pr: Divide o arquivo para impressão.
O padrão é 66 linhas por 72 caracteres
de largura, modificados por -l e -w respectivamente.
tr: Converte caracteres. O comando tr
lê apenas diretamente via stdin. Conversão
simples de um único caractere:
$ cat texto_simples | tr ‘ ‘ ‘.’
texto.simples
criado.com.cat
Converter letras minúsculas para
maiúsculas:
$ cat texto_simples | tr ‘a-z’ ‘A-Z’
TEXTO SIMPLES
CRIADO COM CAT
Objetivo 1.103.3: Gerenciamento
básico de arquivos
Diretórios e arquivos
Arquivos podem ser acessados tanto por
seu caminho absoluto quanto por seu
caminho relativo. Caminhos absolutos
são aqueles iniciados pela barra da raiz
(/), e caminhos relativos são aqueles que
tomam por referência o diretório atual.
O ponto (.) refere-se ao diretório atual,
e .. refere-se ao diretório contendo o
diretório atual.
Linux Magazine #27 | Fevereiro de 2007
$ ls -l /etc/X11/xinit/
total 20
-rw-r--r-- 1 root root 321 2006-01-14
➥17:33 README.Xmodmap
lrwxrwxrwx 1 root root 15 2006-03-20
➥22:31 xinitrc -> xinitrc.fluxbox
-rwxr-xr-x 1 root root 556 2003-03-16
➥19:59 xinitrc.blackbox
-rwxr-xr-x 1 root root 560 2006-03-07
➥03:32 xinitrc.fluxbox
-rwxr-xr-x 1 root root 799 2006-01-14
➥17:30 xinitrc.twm
-rwxr-xr-x 1 root root 788 2005-07-21
➥15:27 xinitrc.wmaker
A primeira coluna mostra o tipo e as
permissões do arquivo, a segunda coluna mostra o número de links físicos
(hard links) para o arquivo, a terceira e
a quarta mostram o dono e o grupo aos
quais o arquivo pertence, a quinta mostra
o tamanho em bytes, a sexta e a sétima
mostram a data e a hora da última modificação no arquivo, e a oitava coluna
mostra o nome do arquivo. Se o arquivo
for um link simbólico, uma seta mostra
o arquivo para o qual ele aponta.
O comando cp é utilizado para copiar
arquivos. Suas opções principais são:
➧ -i: Modo interativo. Pergunta antes
de sobrescrever um arquivo.
➧ -p: Copia também os atributos do
arquivo original.
➧ -r: Copiar recursivamente o conteúdo do diretório de origem.
É importante saber que, ao se copiar
um diretório recursivamente, o uso da
barra / no final do diretório de origem
fará com que apenas o conteúdo do diretório seja copiado para o destino, e o não
uso da barra fará com que o diretório de
origem e seu conteúdo sejam copiados
no destino.
O comando mv move e renomeia arquivos. Usado com a opção -i, ele pede
confirmação antes de sobrescrever um
arquivo de destino.
Para alterar a data de um arquivo,
utiliza-se o comando touch. Usado sem
argumentos, touch altera a data e a hora
de criação e modificação de um arquivo
para os valores atuais do sistema. Para
alterar apenas a data de modificação,
usa-se a opção -m, e para alterar apenas
a data de acesso, usa-se a opção -a. O
argumento passado com -t usa outro
valor de tempo.
No bash, o comando para retornar o
diretório atual é pwd. O comando cd muda
para o diretório especificado ou vai para
o diretório pessoal quando nenhum diretório for especificado.
O comando mkdir cria diretórios. Para
criar uma árvore de diretórios recursivamente, usa-se a opção -p: $ mkdir -p
caminho/completo/para/dir.
Para alterar as permissões do diretório no ato da criação, as mesmas são
transmitidas ao mkdir com a opção -m.
Diretórios vazios podem ser apagados
pelo comando rmdir. Para apagar uma
árvore de diretórios vazios, usa-se a opção
-p. Para apagar diretórios com conteúdo,
usa-se rm -r, e para forçar a remoção, a
opção -f é utilizada.
Encontrando arquivos
com o comando find
Sintaxe do find: find diretório critério
[-exec comando {} \;]
O argumento diretório indica onde
o find deve iniciar a busca, e critério pode ser o nome do arquivo ou
diretório a ser procurado, ou uma
regra para a busca. Critérios comuns
para o find:
➧ -type: Tipo do arquivo (d para diretório, f para arquivo comum e l
para link)
➧ -name nome: Nome do arquivo
➧ -user usuário: Dono do arquivo
➧ -atime -/+n: Data de último acesso
ao arquivo, menor ou maior que n.
n corresponde a n * 24 horas.
➧ -ctime -/+n: Data de criação do arquivo, menor ou maior que n.
➧ -mtime -/+n: Data de modificação do
arquivo, menor ou maior que n.
➧ -amin -/+n: Data de último acesso
ao arquivo, menor ou maior que n.
n corresponde a minutos.
➧ -cmin -/+n: Data de criação do arquivo, menor ou maior que n.
➧ -mmin -/+n: Data de modificação do
arquivo, menor ou maior que n.
➧ -newer arquivo: O arquivo procurado foi criado ou modificado mais
recentemente que arquivo.
➧ -perm modo: O arquivo procurado
tem permissão modo.
➧ -perm -modo: O arquivo procurado
tem todas as permissões listadas em
modo.
➧ -perm +modo : O arquivo procurado tem qualquer das permissões listadas em modo. Exemplo:
encontrar todos os arquivos do
tipo link em /usr/lib criados há
menos de 24 horas:
53
TUTORIAL | LPI 103-104
$ find /usr/lib -type l -ctime -1
/usr/lib/libssl.so
/usr/lib/libcrypto.so
/usr/lib/libssl.so.0
/usr/lib/libcrypto.so.0
dados. Esses descritores podem ser redirecionados de e para outros arquivos
ou processos. Por padrão, o descritor de
entrada (stdin) é o teclado e os descritores
de saída padrão (stdout) e saída de erro
Caracteres curinga (file globbing)
(stderr) são a tela do computador. Os
As operações com arquivos e diretórios valores numéricos para esses descritores
permitem o uso de caracteres curinga, são 0 para stdin, 1 para stdout e 2 para stque são padrões de substituição de ca- derr. Os descritores também podem ser
racteres. O caractere * substitui qualquer acessados através dos dispositivos virtuais
seqüência de caracteres:
/dev/stdin, /dev/stdout e /dev/stderr.
O fluxo dos dados para redireciona$ ls /etc/host*
mentos e canalizações numa linha de co/etc/host.conf
mando vai da esquerda para a direita.
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts.equiv
O caractere ? substitui apenas um
caractere:
$ ls /dev/fd?
/dev/fd0 /dev/fd1 /dev/fd2 /dev/fd3
O uso de colchetes ([]) indica uma
lista de caracteres:
$ ls /dev/hd[abc]
/dev/hda /dev/hdb /dev/hdc
Chaves ({}) indicam uma lista de
termos separados por vírgula:
$ ls /dev/{hda,fd0}
/dev/fd0 /dev/hda
O uso de exclamação antes de um
curinga o exclui da operação:
$ ls /dev/fd[!01]
/dev/fd2 /dev/fd3
Curingas precedidos de barra invertida
(\) não realizam substituição:
$ ls /dev/fd\[\!01\]
ls: /dev/fd[!01]: Arquivo ou diretório não
➥encontrado
Entre aspas duplas, apenas os caracteres especiais |, / e $ têm efeito. Entre
aspas simples, apenas o caractere especial \ tem efeito.
Objetivo 1.103.4:
Fluxos, canalização e
redirecionamentos de saída
Processos Unix geralmente abrem três
descritores padrão de arquivos, que os
permitem processar entrada e saída de
54
Redirecionamento
Para redirecionar a saída padrão de um
comando para um arquivo, utiliza-se o
símbolo > após o mesmo, que deve indicar o arquivo a ser criado com os dados
referidos, como em $ cat texto_simples
> clone_texto_simples. Se o arquivo existir
previamente, será sobrescrito. Para adicionar os valores sem apagar o conteúdo
existente, usa-se >>.
Para redirecionar o conteúdo de um
arquivo para a entrada padrão de um comando, usa-se <. Nesse caso, o fluxo dos
dados segue da direita para a esquerda.
É especialmente útil para utilizar com
comandos como o tr, que não lê arquivos
diretamente. O conteúdo redirecionado
por padrão é o de stdout. Para especificar
stderr, usa-se 2>. Para redirecionar ambos
simultaneamente, usa-se &>.
Canalização (pipe)
É possível enviar a saída de um comando para a entrada de outro comando,
utilizando o caractere de canalização
|. Exemplo: extrair a terceira música de
um CD com o comando cdparanoia, canalizando o áudio através do programa
oggenc para armazenar a música no formato Ogg Vorbis.
É possível também usar a saída de um
comando como argumento para outro,
usando aspas invertidas:
$ ls -dl `cat /etc/ld.so.conf`
drwxr-xr-x 5 root root 7464 2006-01-14
➥17:35 /usr/X11R6/lib
drwxr-xr-x 2 root root 712 2006-03-17
➥12:26 /usr/i486-slackware-linux/lib
drwxr-xr-x 2 root root 688 2005-10-29
➥22:53 /usr/lib/qt/lib
drwxr-xr-x 16 root root 7272 2006-03-21
➥02:49 /usr/local/lib
Resultado idêntico é conseguido inserindo o comando entre as aspas de $().
O comando xargs desempenha função
parecida, passando os dados que recebe via stdin como argumento para um
segundo comando. Exemplo do xargs
acompanhando a execução do find:
$ find /usr/X11R6/bin/ -name ‘xt*’ | xargs
➥ls -l
-rwxr-xr-x 1 root bin 268928 2006-01-14
➥17:35 /usr/X11R6/bin/xterm
-rwxr-xr-x 1 root bin 13076 2006-01-14
➥17:35 /usr/X11R6/bin/xtrapchar
-rwxr-xr-x 1 root bin 6536 2006-01-14
➥17:35 /usr/X11R6/bin/xtrapin
(...)
Nesse exemplo, xargs tomou cada caminho passado por find e repassou como
argumento para o comando ls -l.
Objetivo 1.103.5: Criar,
monitorar e finalizar processos
Em linhas gerais, um processo é um
programa em execução. Cada processo
possui um número único de identificação chamado PID. Esse número pode
ser usado para mudar a prioridade de
um processo ou para finalizá-lo.
pstree: Mostra processos ativos em formato de árvore genealógica (processos filhos
$ cdparanoia -d /dev/cdrom 3 - | oggenc - - ligados aos respectivos processos pais).
➥o 03.ogg
ps: Mostra os processos ativos de maneira detalhada.
Por fim, é possível redirecionar sitop: Monitora continuamente os promultaneamente a saída tanto para um cessos, mostrando informações como uso
arquivo quanto para stdout, através do de memória e CPU de cada processo. A
comando tee. Para tal, canaliza-se a sa- tecla [H] fornece ajuda sobre o uso do
ída do comando para o comando tee, e programa. Pode ser usado para alterar a
a este um nome de arquivo para arma- prioridade de um processo.
zenar a saída:
pidof: Retorna o PID do programa
cujo nome foi solicitado, se o programa
$ cat /etc/passwd | tee cópia_passwd
estiver em execução.
kill : Envia sinais de controle para
O conteúdo de /etc/passwd será mos- processos. O sinal padrão quando
trado na tela e copiado no arquivo có- nenhum sinal é informado é SIGTERM,
de valor numérico 15, que pede ao
pia_passwd.
http://www.linuxmagazine.com.br
LPI 103-104 | TUTORIAL
programa em questão para finalizar. O processo não necessariamente obedece ao sinal, a menos que o
sinal seja SIGKILL. Em alguns casos,
o sinal SIGHUP pode ser interpretado
como ordem para o processo reler
seu(s) arquivo(s) de configuração.
Exemplo de kill:
➧ SIGKILL: Força a finalização do processo. Valor numérico 9.
➧ SIGTERM: Pede ao processo para finalizar. Valor numérico 15.
killall: Tem função igual à de kill,
porém usa o nome do processo no lugar
do PID. Com a opção -l, lista os possíveis sinais.
# kill -SIGTERM 4902
Tarefas em primeiro e segundo plano
Após iniciado um programa no shell,
ele normalmente assumirá o controle
de stdin e stdout, ou seja, ficará em
primeiro plano. Para interromper o
programa e voltar ao prompt do shell,
usa-se a combinação de teclas [Ctrl]+[Z].
Feito isso, para continuar a execução
do programa em segundo plano, ou
seja, mantendo o prompt do bash em
primeiro plano, usa-se o comando bg
Envia o sinal SIGTERM para o processo
de PID 4902.
Sinais comuns:
➧ SIGHUP: Termina ou reinicia o processo. Valor numérico 1.
➧ SIGINT: Interrompe o processo, igual
a [Ctrl]+[C]. Valor numérico 2.
➧ SIGQUIT: Fecha o processo. Valor
numérico 3.
Tabela 2: Comandos do modo de comando
Tecla(s)
Efeito
0, $
Início e fim de linha
1G, G
Início e fim de documento
b, e
Início e fim de palavra
(, )
Início e fim de sentença
{, }
Início e fim de parágrafo
w, W
Pular palavra e pular palavra contando com a pontuação
h, j, k, l
Esquerda, abaixo, acima, direita
/, ?
Busca para frente e para trás
i
Entra no modo de inserção na posição atual do cursor
a, A
Entra no modo de inserção depois do cursor ou no fim da linha
o, O
Adiciona linha e entra no modo de inserção depois ou antes do cursor
s, S
Apaga item ou linha e entra no modo de inserção
c
Modifica um item através de inserção de texto
r
Substitui um único caractere
x
Apaga um único caractere
y, yy
Copia um item ou toda linha
p, P
Cola o conteúdo copiado depois ou antes do cursor
u
Desfazer
ZZ
Fecha e salva se necessário
ZQ
Fecha e não salva
Tabela 3: Comandos de última linha ou coluna
:!
Chama um comando do shell
:quit ou :q
Fecha
:quit! ou :q!
Fecha sem gravar
:wq
Salva e fecha
:exit ou :x ou :e
Fecha e grava se necessário
:visual
Volta para o modo de comando
Linux Magazine #27 | Fevereiro de 2007
(background). Para continuar a execução do programa em primeiro plano,
usa-se o comando fg (foreground).
Ao interromper uma tarefa, é mostrado um número que identifica a mesma.
Este número é passado para fg e bg para
especificar a tarefa desejada. Se houver
apenas uma tarefa na sessão atual, fg e
bg podem ser usados sem argumentos.
Para usar o nome do programa no lugar
de seu número de tarefa, basta precedê-lo por %?.
O comando jobs lista as tarefas existentes na sessão atual do bash. É especialmente útil quando há mais de uma
tarefa em andamento.
É possível iniciar programas diretamente em segundo plano, adicionando
o símbolo & ao seu final. Os números
que são mostrados correspondem ao
número da tarefa e ao PID, respectivamente. O número de uma tarefa
pode ser usado como argumento do
comando kill desde que precedido
do símbolo %.
Quando um usuário sai do sistema,
um sinal SIGHUP é enviado a todos os
processos iniciados por ele. Para que
esse sinal não interrompa o processo
do usuário após este sair do sistema,
o comando deve ser invocado através
do nohup:
$ nohup wget ftp://transferência/muito/
➥demorada.tar.bz2 &
nohup: appending output to `nohup.out’
As saídas stdout e stderr serão redirecionadas para o arquivo nohup.out, criado
no mesmo diretório em que o comando
foi executado.
Objetivo 1.103.6: Modificar
a prioridade de execução
de um processo
Números nice (NI) são usados para alterar a prioridade de CPU e balancear seu
uso num ambiente multiusuário. Todo
processo comum é iniciado com uma
prioridade padrão (0). Números nice vão
de 19 (menor prioridade) a -20 (prioridade maior). Apenas o usuário root pode
diminuir o número nice de um processo
para abaixo de zero.
É possível iniciar um comando com
uma prioridade diferente da padrão através do comando nice. Por padrão, nice
muda a prioridade para 10. nice -n 15
tar czf home_backup.tar.gz /home inicia
o comando tar com número nice de
prioridade 15.
55
TUTORIAL | LPI 103-104
Para alterar a prioridade de um
processo em andamento, o renice é
usado. A opção -p indica o PID do
processo em questão.
# renice -10 -p 2997
2997: prioridade antiga = 0; prioridade
➥nova = -10
sed: O comando sed é mais utilizado
para procurar e substituir padrões em
textos, mostrando o resultado em stdout.
Sua sintaxe é
sed [opções] ‘comando e expressão regular’ [arquivo original]. No sed, a ex-
Tópico 104:
Dispositivos,
Sistemas de arquivos
Linux e padrão FHS
pressão regular fica circunscrita entre
barras (/). Por exemplo, sed -e ‘/^#/d’
/etc/lilo.conf mostra o arquivo /etc/lilo. Objetivo 1.104.1: Criação de
As opções -g e -u permitem alterar to- conf sem as linhas começadas por # (li- partições e sistemas de arquivos
dos os processos do grupo ou do usuário, nhas de comentário). A letra d ao lado
respectivamente. Com renice +5 -g users, da expressão regular é um comando sed Por padrão, discos IDE podem conter até
todos os processos de usuários do grupo que indica a exclusão de linhas contendo quatro partições físicas, das quais uma pode
users tiveram suas prioridades (número o respectivo padrão. Por exemplo, para ser estendida. A partição estendida pode
nice) alteradas para +5.
substituir o termo hda por sdb, usaríamos ser dividida em partições lógicas.
Prioridades podem ser modificadas sed -e ‘s/hda/sdb/g’ /etc/lilo.conf.
Fdisk: O fdisk é o programa padrão
interativamente através do programa
para manipular partições no Linux. Com
Opções comuns de sed:
top. Quando na tela de processos, basta
➧ -e: Executa a expressão e comando a opção -l, ele lista os dispositivos e as
apertar a tecla [R] e indicar o número
a seguir.
partições existentes. Para manipular
PID do processo.
➧ -f: Lê expressões e comandos do partições, o fdisk deve ser iniciado tenarquivo indicado pela opção.
do como argumento o dispositivo em
➧ -n: Não mostrar as linhas que não questão. Uma vez dentro do fdisk, certas
Objetivo 1.103.7: Procurar
correspondam à expressão.
letras corresponderão a comandos. Alguns
Comandos comuns de sed:
comandos bastante utilizados, podem ser
em arquivos de texto usando
➧ s: Substituir.
vistos na tabela 4:
expressões regulares
➧ d: Apagar a linha.
O fdisk cria novas partições identifiExpressões regulares e grep
➧ r: Insere o conteúdo do arquivo indi- cadas como partições nativas de Linux,
cujo código hexadecimal é 83 (0x83). O
Expressões regulares são elementos
cado na ocorrência da expressão.
de texto, palavras-chave e modifica➧ w: Escreve a saída no arquivo indi- código de identificação de partições do
dores que formam um padrão, usacado.
tipo swap é 82 (0x82).
do para encontrar e opcionalmente
➧ g: Substitui todas as ocorrências da
Criação de Sistemas de Arquivos:
alterar um padrão correspondente.
expressão na linha atual.
Durante muito tempo o sistema de arMuitos programas suportam o uso de
quivos mais utilizado no Linux foi o Ext2
expressões regulares. O comando grep Objetivo 1.103.8: Edição
(second extended). No entanto, hoje são
muito usados sistemas de arquivos com
é o mais comum para realizar buscas básica de arquivos com o vi
por expressões regulares em textos.
journalling, como o Ext3 e o ReiserFS.
Caracteres especiais em expressões Na maioria das distribuições, o vi é o edi- Ext2 e Ext3 utilizam blocos de 1024 bytes.
regulares:
tor de textos padrão. O vi localiza-se em Há três tipos de blocos:
➧ ^: Começo de linha
/bin. Há três modos básicos no vi:
➧ Superblocks: Repetem-se a cada 8193
Modo de inserção: A maneira mais
➧ $: Fim de linha
blocos. Contêm informações sobre
comum de entrar no modo de inserção
➧ .: Qualquer caractere
o tamanho dos blocos, inodes livres,
➧ *: Qualquer seqüência de zero ou é apertando a tecla [i] ou [A]. É o modo
data da última montagem etc.
mais caracteres
mais intuitivo, usado para digitar tex➧ inodes: Indicadores para os blocos
➧ []: Qualquer caractere que esteja to no documento. A tecla [ESC] sai do
de dados. Os 12 primeiros blocos
modo de inserção e volta para o modo
presente nos colchetes
de dados após o inode são acessaExemplos: Mostrar apenas as linhas de comando.
dos seqüencialmente. Se os dados
que começam com o caractere # do arexcederem 12 blocos, blocos inode
Modo de última linha ou coluna:
quivo /etc/lilo.conf: grep ‘^#’ /etc/lilo. Acessível ao apertar a tecla [:] no modo
indiretos agem como espelho. Cada
conf. Mostrar linhas de /etc/lilo.conf que
de comando. Usado para fazer buscas,
inode tem 256 bytes e contém a incontenham os termos hda ou hdb: grep salvar, sair, executar comandos no shell,
formação de usuário, grupo, peralterar configurações do vi etc. Para re‘hda[ab]’ /etc/lilo.conf.
missões e data referente aos dados
Mais opções de grep:
tornar ao modo de comando, usa-se o
associados.
➧ -c: Conta as linhas contendo o comando visual. Veja a tabela 3 para
➧ Blocos de dados: Os blocos que
padrão.
mais detalhes.
contêm os arquivos e diretórios
➧ -i: Ignora a diferença entra maiúsModo de comando: É o modo inicial
propriamente ditos.
culas ou minúsculas.
do vi. Serve para navegação e edição. GeA diferença para um sistema de arqui➧ -f: Usa a expressão regular contida no ralmente, os comandos são letras únicas. vos com journalling é que um sistema
arquivo indicado por essa opção.
Se precedido por número, o comando com essa capacidade registra de antemão
➧ -n: Procurar somente na linha indi- será repetido correspondentemente ao todas alterações que irá realizar no disco.
valor desse número.
cada por essa opção.
Dessa forma, erros de gravação (normal➧ -v: Mostra todas as linhas exceto a
Algumas teclas comuns usadas no modo mente ocasionados por queda de energia
que corresponder ao padrão.
de comando podem ser vistas na tabela 2:
ou desligamento incorreto) podem ser
56
http://www.linuxmagazine.com.br
LPI 103-104 | TUTORIAL
Tabela 4: Comandos do fdisk
Como o comando
mkfs, o fsck possui a opção -t para especificar o
Comando
Efeito
p
Lista as partições
n
Cria uma nova partição interativamente
t
Muda a identificação da partição
d
Apaga uma partição
q
Sai do fdisk sem gravar as alterações
w
Sai do fdisk e grava as alterações
m
Mostra a ajuda de comandos
tipo do sistema de arquivos, e um comando específico para cada partição:
fsck.ext2 ou e2fsck, fsck.
ext3, fsck.xfs, reiserfsck
e dosfsck.
Examinando e
corrigindo o sistema
de arquivos
mais facilmente diagnosticados e sanados.
debugfs: Depurador inÉ possível fazer a conversão de Ext2 para terativo de sistemas de arquivos. Examina
Ext3 sem perda de dados.
sistemas Ext2 e Ext3. Muda diretórios,
O comando mkfs cria sistemas de ar- examina dados de inodes, apaga arquivos,
quivos em partições. A opção -t indica cria links, mostra o log de journalling
o tipo do sistema de arquivos. Para criar Ext3 etc. É usado em casos extremos,
uma partição Ext2 na partição /dev/hda3, geralmente após o fsck ter falhado.
usa-se mkfs -t Ext2 /dev/hda3. Há tamdumpe2fs: Mostra informações de
bém comandos específicos para cada grupo de blocos e de superblocos.
sistema de arquivos: mkfs.ext2, mke2fs,
tune2fs: Configura parâmetros ajustámkfs.ext3, mkfs.xfs, mkreiserfs, mkdosfs veis em sistemas de arquivos Ext2, como
e mkfs.vfat.
rótulo e limites de montagem antes de
Partição Swap: Após a partição swap checar automaticamente.
ser criada pelo fdisk, ela precisa ser formatada com o comando mkswap. Por exemUso do disco
plo, mkswap /dev/hda2. Após ser criada e df: Mostra o espaço disponível em cada
formatada, uma partição swap precisa dispositivo. A análise é feita diretamenser ativada para ser usada como memó- te no dispositivo. Por padrão, mostra o
ria swap. O comando swapon -a ativa espaço em unidades de 1 KB. A opção
todas as partições swap que constarem -h usa medidas apropriadas para tornar a
em /etc/fstab. As entradas referentes a saída mais inteligível.
partições swap em /etc/fstab não têm
du: Mostra o espaço ocupado. Sem
argumentos, mostra o uso de cada direponto de montagem.
Exemplo de entrada de partição swap tório no sistema. Um diretório específico
em /etc/fstab:
pode ser indicado através da opção -s. A
opção -h usa medidas apropriadas para
/dev/hda2 swap swap defaults 0 0
tornar a saída mais inteligível.
Normalmente, todas as partições swap
contidas em /etc/fstab são ativadas pelos
scripts de inicialização do sistema. Para
ativar ou desativar essa partição manualmente, usa-se swapon /dev/hda2 e swapoff
/dev/hda2, respectivamente. Informações
sobre partições swap ativas são armazenadas em /proc/swaps.
Objetivo 1.104.2: Manutenção
da integridade de
sistemas de arquivos
Checando o sistema de arquivos
O comando fsck deve ser executado
em partições que apresentarem erros
ou em dispositivos que foram desligados
incorretamente. A partição deverá estar
desmontada ou montada como somenteleitura (ro) para a verificação.
Linux Magazine #27 | Fevereiro de 2007
Objetivo 1.104.3: Controle da
montagem e desmontagem
dos sistemas de arquivos
/etc/fstab
Durante os procedimentos de carregamento
do sistema, é o arquivo /etc/fstab que determina os pontos de montagem dos dispositivos.
Cada linha corresponde a um dispositivo.
Cada linha contém os seguintes termos separados por tabulações ou espaços:
➧ Dispositivo
➧ Ponto de montagem (swap se for uma
partição de swap)
➧ Tipo de sistema de arquivos
➧ Opções
➧ Dump ( 0 ou 1). Determina se o
dispositivo deverá ser considerado
pelo comando dump. Se ausente, 0
é considerado.
➧ fsck (1 ou 2). Determina a ordem
da checagem feita pelo fsck durante
a inicialização. Para a partição raiz,
deve ser 1. Se ausente, 0 é presumido
e a checagem não é feita no boot.
Para permitir que usuários comuns montem e desmontem dispositivos – geralmente,
o caso de dispositivos removíveis –, devese incluir a opção users para o respectivo
dispositivo. O termo auto na posição referente ao sistema de arquivos indica que o
sistema de arquivos deve ser identificado
automaticamente. Para mais opções do
arquivo /exc/fstab veja a tabela 5.
mount
O comando mount usado sem argumentos
mostra os dispositivos montados e outros
detalhes, como ponto de montagem e
tipo do sistema de arquivos. Também
é usado para montar dispositivos manualmente.
Para montar manualmente um dispositivo que conste em /etc/fstab, basta
fornecer para o comando mount a localização do dispositivo ou do diretório
alvo. Para desmontar um dispositivo, o
comando umount é utilizado, tendo como
argumento o dispositivo ou o diretório
alvo a ser desmontado. Usado com a opção -a, mount monta todos os dispositivos
em /etc/fstab (exceto os marcados com
a opção noauto).
Opções de montagem
As opções de montagem são as mesmas
para /etc/fstab e para mount. Se mais
de uma opção for fornecida, deverão ser
separadas por vírgula.
Objetivo 1.104.4: Administração
de cotas de disco
Para habilitar o controle de cotas de
disco, é necessário que o kernel suporte
essa função, e incluir a opção usrquota
ou grpquota em /etc/fstab. Para que a
opção recém-adicionada tenha efeito, é
necessário remontar o dispositivo.
Para gerar a tabela de estatísticas de uso
do sistema de arquivos, deve-se executar o
quotacheck -a, o que é normalmente feito
pelos scripts de inicialização.
Para criar as configurações de cota para
usuários e grupos, usa-se o comando edquota.
A opção -u altera as configurações de cota
para o usuário especificado, da mesma forma que -g altera para o grupo especificado.
O editor padrão do sistema (geralmente
o vi) é usado para essa tarefa.
57
TUTORIAL | LPI 103-104
Tabela 5: Opções do arquivo /etc/fstab
Opção
Efeito
Incluir permissão de escrita para o
grupo do arquivo texto_simples:
rw ou ro
Gravável ou somente leitura
noauto
Não é montado automaticamente
users
O dispositivo poderá ser montado e desmontado por usuários comuns
user
Apenas quem montou terá permissão de desmontar
owner
As permissões do dispositivo montado se adequarão ao usuário que o montou
usrquota
Habilita o uso de cotas de disco para usuário
grpquota
Habilita o uso de cotas de disco para grupo
remount
Remonta um dispositivo montado com outras opções. Útil para remontar um dispositivo como somente leitura, por exemplo
Essas configurações são armazenadas
no diretório alvo onde a partição em questão foi montada, nos arquivos aquota.user
e aquota.group. Nesses arquivos é possível
especificar limites como espaço e inodes
para o usuário ou grupo.
Para que as cotas passem a ser monitoradas e controladas, deve-se executar o
comando quota -a. Assim, os limites para
cada usuário serão comparados à tabela
de estatísticas de cotas, até que um dos
limites seja alcançado e o usuário não
disponha de mais espaço.
É possível também estabelecer um
período em que o usuário será avisado
de que seu limite foi alcançado, através
do comando edquota com a opção -ta,
de uma maneira semelhante à forma de
configurar os limites.
Para que o usuário acompanhe o
status de sua cota, basta executar o comando quota sem argumentos. O superusuário pode gerar relatórios de cota dos
sistemas de arquivos com o comando
repquota -a.
Objetivo 1.104.5: Controle de
permissões e acesso a arquivos
Há três níveis de permissão para arquivos
e diretórios: usuário dono do arquivo (u),
grupo dono do arquivo (g) e outros (o).
Exemplo de permissões de arquivos:
$ ls -l /etc/X11/xdm/
total 80
-rwxr-xr-x 1 root root 385 2006-01-14
➥17:30 GiveConsole
-rwxr-xr-x 1 root root 244 2006-01-14
➥17:30 TakeConsole
-r--r--r-- 1 root root 3618 2006-01-14
➥17:30 Xaccess
-rwxr-xr-x 1 root root 191 2006-01-14
➥17:30 Xreset
-r--r--r-- 1 root root 2559 2006-01-14
➥17:30 Xresources
-r--r--r-- 1 root root 487 2005-09-12
58
$ chmod g=r,o-r texto_simples
$ chmod g+w texto_simples
➥02:56 Xservers
(...)
lrwxrwxrwx 1 root root
20 2006-03-19
➥09:36 authdir -> ../../../var/lib/xdm
-rwxr-xr-x 1 root root 14696 2006-01-14
➥17:35 chooser
drwxr-xr-x 2 root root 104 2006-01-14
➥17:30 pixmaps
-r--r--r-- 1 root root 1533 2006-01-14
➥17:30 xdm-config
A primeira letra representa o tipo do
arquivo, podendo ser:
➧ d: diretório
➧ l: link simbólico
➧ c: dispositivo especial de caracteres
➧ p: canal fifo
➧ s: socket
➧ -: arquivo convencional
As demais letras são divididas em grupos
de três, determinando as permissões para
o dono do arquivo, o grupo do arquivo e
demais usuários, respectivamente.
As permissões são alteradas com o
comando chmod, podendo ser de leitura
(r), escrita (w) e execução (x).
Exemplo: O grupo a que pertence o
arquivo texto_simples terá apenas acesso de
leitura ao mesmo, e para os demais usuários
será retirada a permissão de leitura:
Apesar de possuírem o mesmo modelo
de permissões, arquivos e diretórios reagem
de maneiras diferentes. Em diretórios, a
permissão r permite acessar o conteúdo
do diretório, a permissão w permite criar
arquivos dentro do diretório, e x permite
listar o conteúdo do diretório.
Permissões Octais
Permissões podem ser manejadas mais
eficientemente através de um formato
numérico, chamado octal. O número
octal consiste de uma seqüência de dígitos, cada um representando as permissões para o usuário, grupo e outros, nessa
ordem. Veja a tabela 6 .
Assim, o comando chmod 0664 texto_simples mudará as permissões do
arquivo texto_simples para -rw-rw-r--,
ou seja, leitura e escrita para o usuário,
leitura e escrita para o grupo e somente
leitura para outros.
Para mudar recursivamente todos os
arquivos dentro de um diretório especificado, utiliza-se o chmod com a opção -R.
umask
O umask é o filtro de permissões para
criação de arquivos. As permissões para
novos arquivos criados são aplicadas calculando as permissões padrão do sistema
(0666 para arquivos e 0777 para diretórios) menos as permissões umask.
umask, sem argumentos, mostra a máscara atual de criação de arquivos. Para
mudar, basta fornecer a nova máscara
como argumento. Em sistemas onde os
grupos iniciais dos usuários são particulares, a máscara poderá ser 002, o que sub-
Tabela 6: Permissões octais e seus significados
Dígito
Leitura (valor 4)
Escrita (valor 2)
Execução (valor 1)
0
–
–
–
1
–
–
sim
2
–
sim
–
3
–
sim
sim
4
sim
–
–
5
sim
–
sim
6
sim
sim
–
7
sim
sim
sim
http://www.linuxmagazine.com.br
LPI 103-104 | TUTORIAL
Tabela 7: Permissões especiais em formato octal
Dígito
suid (valor 4)
sgid (valor 2)
sticky (valor 1)
0
–
–
–
1
–
–
sim
2
–
sim
–
3
–
sim
sim
4
sim
–
–
5
sim
–
sim
6
sim
sim
–
7
sim
sim
sim
trairá das permissões padrão do sistema
a permissão 2 (w, escrita), na categoria
outros (o). Dessa forma, os arquivos serão
criados com as permissões 0664.
Em sistemas onde o grupo inicial
de todos os usuários é o grupo users, a
máscara poderá ser 0022, o que subtrairá
das permissões padrão do sistema a permissão 2 (w, escrita), nas categoria grupo
(g) e outros (o). Dessa forma, os arquivos
serão criados com as permissões 0644, limitando a permissão de escrita apenas
ao usuário dono do arquivo.
suid e sgid
Todos os processos são vinculados ao
usuário que os iniciou. Dessa forma,
um programa pode trabalhar com um
arquivo apenas até onde as permissões
desse arquivo permitem ao usuário. Algumas tarefas, no entanto, exigem que
um usuário altere ou acesse arquivos aos
quais não tem a permissão necessária. Por
exemplo, alterar a própria senha exige que
o arquivo /etc/passwd seja alterado e as
permissões de /etc/passwd só permitem
escrita ao usuário dono (root):
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 814 2006-03-15
➥14:04 /etc/passwd
Para contornar essa condição, existe
um bit de permissão especial chamado
suid. Arquivos executáveis que possuam a
permissão suid serão executados em nome
do dono do arquivo, e não em nome de
quem os executou. A permissão suid é
representada pela letra s, no campo referente ao dono do arquivo (u):
$ ls -l /usr/bin/passwd
-rws--x--x 1 root bin 37880 2004-06-21
➥16:20 /usr/bin/passwd
Exemplo: Incluir o modo suid em um
arquivo executável:
Linux Magazine #27 | Fevereiro de 2007
$ chmod u+s meu_programa
De maneira semelhante, a permissão
sgid atua em diretórios. A permissão sgid
é uma permissão de grupo, portanto aparece no campo de permissões referente
ao grupo.
Num diretório com a permissão sgid,
todos os arquivos criados pertencerão ao
grupo do diretório em questão, o que é
especialmente útil em diretórios com o
qual trabalham um grupo de usuários
pertencentes ao mesmo grupo.
Quando habilitadas, as permissões
suid e sgid fazem aparecer a letra s no
lugar da letra x nas permissões de dono
do arquivo e grupo do arquivo, respectivamente. Se a permissão de execução
também existir, aparecerá a letra s em
minúsculo. Se apenas as permissões suid
e sgid existirem, aparecerá a letra S, em
maiúsculo.
Permissões especiais
em formato octal
Como as opções convencionais, as
permissões especiais também podem
ser manipuladas em formato octal
(numérico). A permissão especial
é o primeiro dos quatro dígitos da
opção no formato octal. A tabela 7
detalha essa correspondência.
Objetivo 1.104.6:
Modificar donos e
grupos de arquivos
Para alterar dono e grupo de arquivos
e diretórios, usa-se chown e chgrp. O primeiro argumento é um nome válido de
usuário ou grupo, e o segundo é o arquivo ou diretório a ser alterado. Apenas o
superusuário pode usar o comando chown,
mas qualquer usuário pode usar chgrp em
seus arquivos e diretórios.
Mudar dono de arquivo:
# chown luciano texto_simples
Mudar grupo de arquivo:
$ chgrp users texto_simples
Para alterar usuário e grupo simultaneamente:
# chown luciano.users texto_simples
Tanto chown quanto chgrp possuem a
opção -R, para alterar conteúdos de diretórios recursivamente.
A permissão sticky
O inconveniente em usar diretórios
compartilhados é que um usuário po- Objetivo 1.104.7: Criar e alterar
deria apagar algum ou todo o conteúdo links simbólicos e links físicos
inadvertidamente. Para evitar que isso
aconteça, existe o modo de permissão
sticky, que impede que usuários apaHardlinks (links físicos)
guem arquivos que não tenham sido Hardlinks são um ou mais nomes que um
criados por eles mesmos. É o caso do inode do sistema de arquivos pode ter.
diretório /tmp:
Todo arquivo criado é, necessariamente,
um hardlink para seu inode correspon$ ls -ld /tmp
dente. O mesmo só será apagado após
drwxrwxrwt 21 root root 1312 2006-03-23
seu último hardlink remanescente ser
➥22:51 /tmp
apagado e nenhum programa estar mantendo o arquivo aberto. Novos hardlinks
A letra t nas permissões para demais são criados usando o comando ln:
usuários demonstra o uso da permissão
sticky. Se apenas a permissão sticky existir, $ ln texto_simples outro_texto_simples
aparecerá a letra T maiúscula.
Exemplo: Usar a permissão sticky no
A opção -i do ls mostra o número
diretório comunitario:
dos inodes dos arquivos:
$ chmod o+t comunitario/
$ ls -i texto_simples outro_texto_simples
59
TUTORIAL | LPI 103-104
55412 outro_texto_simples 55412 texto_
➥simples
Ambos texto_simples e outro_texto_simsão hardlinks para o mesmo inode
55412. Hardlinks para o mesmo inode possuem mesma permissão, donos, tamanho
e data, pois esses atributos são registrados
diretamente nos inodes.
ples
$ ls -l texto_simples
-rw-r--r-- 2 luciano users 29 2006-01-01
➥00:01 texto_simples
Diretórios
Conteúdo
/bin e /sbin
Contêm os programas necessários para carregar o sistema e comandos especiais
/etc
Arquivos de configuração específicos da máquina
/lib
Bibliotecas compartilhadas pelos programas em /
bin e /sbin e módulos do kernel
/mnt
Pontos de montagem para outras partições ou dispositivos
/proc
Armazena informações do kernel em tempo de execução
O número 2 na segunda coluna de
informações demonstra que há dois
hardlinks para o inode correspondente
ao arquivo texto_simples.
Hardlinks só podem ser criados dentro
de um mesmo sistema de arquivos. Não
é possível criar hardlinks para diretórios.
Os arquivos especiais . e .. são hardlinks
para diretório criados exclusivamente
pelo próprio sistema.
Tabela 9: Diretórios que podem ser pontos de
montagem para outras partições e dispositivos
Softlinks (links simbólicos)
Links simbólicos apontam para um caminho ou, mais especificamente, para
um hardlink. Links simbólicos podem
apontar para qualquer alvo, inclusive em
sistemas de arquivos diferentes.
Para criar um link simbólico, usa-se
ln com a opção -s.
$ ln -s texto_simples link_texto_simples
Detalhes do link:
$ ls -l mais_texto_simples
lrwxrwxrwx 1 luciano users 13 2006-03-24
➥05:11 mais_texto_simples -> texto_simples
Um link é indicado pela letra l no
início das permissões, que nesse caso são
sempre rwxrwxrwx. O tamanho do arquivo
de link é exatamente a quantidade de
bytes (caracteres) do caminho alvo. A
seta ao lado do nome do link simbólico
indica o caminho até o alvo. Um link
simbólico para um caminho relativo
será quebrado se o alvo ou o próprio
link for movido. Um link simbólico para
um caminho absoluto só será quebrado
se o alvo for movido ou apagado. Para
atualizar a informação de alvo de um
link simbólico existente, recria-se o link
com a opção -f.
Funções comuns para links simbólicos
são indicar caminhos longos freqüentemente usados, criar nomes mais simples
para executáveis e nomes adicionais para
bibliotecas de sistema.
60
Tabela 8: Diretórios que residem
obrigatoriamente na partição raiz
Diretórios
Conteúdo
/boot
Kernel e mapas do sistema e os carregadores de boot de segundo estágio
/home
Os diretórios dos usuários
/root
Diretório do superusuário
/tmp
Arquivos temporários
/usr
Programas, bibliotecas e documentos disponíveis no sistema
/usr/local e /opt
Programas adicionais. Também podem conter as bibliotecas necessárias para os programas adicionais
/var/www e /var/ftp
Páginas HTML e diretórios para FTP anônimo
/var
Dados de programas como configurações variantes e logs. Contém diretórios compartilhados (ex: /var/
spool/mail) e não compartilhados (ex: /var/log)
Objetivo 1.104.8: Encontrar
arquivos de sistema e conhecer
sua localização correta
geralmente feito por um agendamento
cron diário, mas que pode ser executado
Hierarquia padrão de
sistemas de arquivos (FHS)
O FHS (do inglês Filesystem Hierarchy Standard) é o padrão de diretórios base adotado
pela maioria da distribuições Linux. Cada
diretório serve a um propósito, sendo divididos entre os que devem existir na partição
raiz (veja a tabela 8) e os que podem ser
pontos de montagem para outras partições
ou dispositivos (veja a tabela 9).
manualmente. O arquivo de configuração do updatedb é o /etc/updatedb.conf.
Nele constam informações como quais
diretórios e sistemas de arquivos ignorar
na atualização do banco de dados.
which: Usado para retornar o caminho
completo para o programa fornecido. Realiza a busca apenas nos diretórios definidos na variável de ambiente PATH.
whereis: Retorna os caminhos para o
arquivo executável, código-fonte e página
manual referente ao comando solicitado, se houver.
Encontrando arquivos
Além do find, é possível utilizar o locate
para encontrar arquivos. Todo caminho
de arquivo ou diretório contendo a expressão fornecida como argumento será
mostrado. A busca é significativamente
mais rápida em relação ao find pois o
locate realiza a busca em seu banco de
dados – /var/lib/slocate/slocate.db – e
não diretamente no disco. Esse banco de
dados precisa ser regularmente atualizado através do comando updatedb, o que é
Consideração sobre os tópicos
Os tópicos 103 e 104 são alguns dos mais
extensos. Justamente por isso, não espere perguntas muito detalhadas sobre os
assuntos abordados. Porém, os temas
atravessam outros tópicos, e na prova
haverá várias perguntas a respeito. Tenha
certeza de conhecer o propósito de cada
comando e suas principais opções. Além
de perguntas práticas, serão feitas algumas
perguntas conceituais, principalmente
sobre sistemas de arquivos. ■
http://www.linuxmagazine.com.br
Download

LPI nível 1: Aula 2