Vous êtes sur la page 1sur 8

Linux-avançado

Linux-avançado
Introdução
Os comandos linux são como peças de um lego, vamos
apreder a montar nossos brinquedinhos.

A administração de um sistema consiste em tarefas distintas


e portanto dividiremos este pequeno guia em seções como:
• fazer backup
• exibir tamanho de uma pasta
• exibir detalhes do hardware

Juntando todas essas peças você pode considerar-se


mais que um rélis mortal.

Antes de mais nada se você quer ser um usuário


avançado linux tem que conhecer indo e voltando
alguns comandos, vou listar alguns que consider0
essenciais para uma boa administração do sistema
• find .......... fazer buscas
• ssh .......... administração remota
• rsync .......... ótima ferramenta para backup
• chmod, chown.... modifica permissões e dono de arquivos

Manipulando datas
date +%H=%M
13:05

Como usar o less para paginar comandos longos


O less deve ser usado para paginar comandos muito longos,
ou seja comandos que geram saidas maiores que uma janela
devem ser paginados usando o less. Mas como fazer isto?

Simples, use o redirecionador "|" esta barra vertiacal diz ao


bash que a saída padrão "stdin" que deveria ser a tela será passada
ao less, veja um exemplo:

O comando "cat" visto abaixo lê um arquivo e o envia para a


saída padrão "stdout" mas podemos redirecionar a saída para outro
comando usando a barra vertical
cat /etc/services | less

a saída do comando "cat /etc/services" gera uma saída muito longa,


neste caso colocamos uma barra vertical e redirecionamos sua saida

Edson Candido Xavier - 04/05/2011


Linux-avançado
entregando para o less.

No less podemos usar setas para baixo e para cima bem como fazer buscas
digitando uma barra normal "/" assim:
/palavra<enter>

Anatomia do less
/palavra<enter> .............. busca uma palavra
n ........................... vai para a próxima ocorrência de uma busca
N ........................... vai para a ocorrência prévia de uma busca
ma ........................... cria uma marca na posição atual
'a ........................... pula até a marca "a"
g ........................... vai para a primeira linha
G ........................... vai para a última linha
v ........................... abre o editor padrão (nano)
h ........................... abre a ajuda do less (help)
q ........................... sai da ajuda do less e também do próprio

Agora você já sabe, quando quizer ler um arquivo longo sinta-se a vontade
para usar o amigo less, afinal se desejar modificar o arquivo basta pressionar "v"

Atalhos do bash
O interpretador de comandos "bash" possui alguns atalhos legais
atalho ação
ctrl+l limpa a tela
ctrl+u limpa a linha para traz
ctrl+k limpa a linha para direita
ctrl+y cola o que foi deletado
ctrl+d faz logoff
ctrl+e final da linha
ctrl+a começo da linha

Obtendo ajuda do sistema


Como os comandos do linux são muitos, é fácil esquece a forma
de uso de um comando, ou seja sua sintaxe, ou mesmo alguns parâmetros
do referido comando, mas podemos usar o comando "man" para exibir detalhes
de qualquer comando do sistema veja:
man comando

Alguns comandos tem uma ajuda muito extensa como o find por exemplo,
mas podemos usar buscas assim como no less usando a barra "/"

Para sair de um manual use a letra "q"

Edson Candido Xavier - 04/05/2011


Linux-avançado

Contar diretórios
Obs: O comando de busca "find" obedece a seguinte sintaxe
find /local opcao1 ...

find ~/ -type d | wc -l
ls -ARl | grep "^d" | wc -l

# a opção "A" do ls evita listar


# o diretório atual "." e o diretório acima ".."
# veja "man ls"

Obs: O comando find usado acima busca por tipo "diretórios" "-d"
mas o find tem uma quantidade muito grande de opções como:
• -cmin ..... minuto de criação
• -amin ..... minuto de acesso
• -ctime .... tempo de criação expresso em dias
• -atime .... tempo de acesso também expresso em dias
• -iname .... busca por nome ignorando maiúsculas e minúsculas

Exemplos:
# procurar arquivos "jpg" criados nos últimos 10 minutos
find / -cmin -10 -iname "*.jpg"

# procurar arquivos pdf ou doc


find / -iname "*.pdf" -o -iname "*.doc"

# procurar arquivos maiores que 500M


find ~/ -size +500M

# procurar arquivos htm ou html (páginas web) acessados a mais que 5 min
find ~/ ( -name *.htm -o -name *.html ) -atime +5

# o mesmo que o comando acima


find ~/ -iregex '.*html?' -atime +5

# arquivos txt criados a menos que 20 minutos


find ~/ -iname *.txt -cmin -20 | grep -v "cookies"

# a opção grep -v descarta palavra cookies

Saber o espaço ocupado por um diretório


O comando "du" ou disc usage para os íntimos exibe
o espaço ocupado por cada arquivo ou diretório
du -sh ./
# no caso "./" corresponde ao diretório atual
df #mostra uso das partições

Edson Candido Xavier - 04/05/2011


Linux-avançado
Fazer backup da pasta pessoal
"/backup abaixo fica na raiz "/"
rsync -avz /home/sergio root@172.30.7.56:/backup/backup-sergio

Observação: se usar /home/sergio ele copiará toda a pasta


"sérgio" caso use "/home/sergio/ ele copiará só o conteúdo

Tornando-se administrador
Algumas tarefas só podem ser feitas pelo usuário root "administrador",
o comando para isto é "su", em seguida digite a senha e pronto
su

=Modificando a hora do sistema


Para modificar a hora do sistema você deve estar logado
como root, troque as letras abaixo por "mês, dia, hora, minuto"
date MMDDHHMM
exemplo:
date 12040859

Exibir detalhes do hardware


Se pretende solucionar algum problema de hardware o primeiro passo
é listar detalhes do mesmo, tente usar os comandos:
• lspci
• lsusb
• lshw

Exibindo detalhes do hardware com o lshw


No comando abaixo redirecionamos a saída do comando lshw
para poder paginar, ou seja, subir ou descer no resultado
do relatório que via de regra é um bocado estenso
lshw | less

Acesso remoto com o ssh


O ssh permite um acesso remoto seguro e rápido
ssh usuario@host
# host é uma denominação para um computador em rede
# também pode-se referir a um nó de rede

Edson Candido Xavier - 04/05/2011


Linux-avançado
Descobrindo o endereço de rede
Muitos comandos necessitam do endereço de rede, para
descobri-lo digitamos:
ifconfig

Testando se um computador está acessível pela rede


O comando agora envia dois pacotes para o host "computador" 172.30.10.245
e aguarda a resposta, passando-nos ao final um relatório
ping -c 2 172.30.10.245

copiando arquivos via rede


scp -r origem destino
scp -r sergio@172.30.10.245:/home/sergio/bin/script ./

No último exemplo acima estamos copiando um script localizado em:


/home/sergio/bin/

de um computador endereçado como 172.30.10.245


para a pasta atual "./"

Agendando o desligamento
No comando abaixo estamos agendando o desligamento
(necessitamos estar logados como root. Se quizéssemos
reiniciar bastaria trocar "-h" por "-r"
shutdown -h 22:00

Editando arquivos de forma não interativa


Forma não interativa, mas o que é isso?
Você já edita arquivos interativamente, ou seja, abre um editor,
escolhe o arquivo e edita, ou seja, você está interagindo com o
editor, mas tiver que editar 1000 arquivos como automatizar isto?

Usando o SED
O comando abaixo irá subtituir todas as ocorrências
de "windows" por "linux" em todos os arquivos txt da pasta
atual (não esqueça de usar a opção "-i" para não detonar seus arquivos
sed -i "s/windows/linux/g" *.txt

O comando abaixo irá deletar todas as linhas que contiverem


a palavra casa no começo de linha "^"
sed -i "/^casa/d" *.txt

Edson Candido Xavier - 04/05/2011


Linux-avançado
Repetindo comandos rapidamente
history #exibe o histórico de comandos
!46 #executa o comando de número 46 do histórico
!! #repete o último comando
!find #repete o ultimo find

Como compactar para tar.bz2


tar jcvf diretorio.tar.bz2 diretorio

• j ........ para tar.bz2


• c ........ create
• v ........ mostra a operação na tela
• f ........ indica o nome do arquivo
Se usar-mos "z" ao invés de "j" será criado um
arquivo tar.gz (menos compactação e menos confiável)

Para extrair tar.bz2


tar jxvf arquivo.tar.bz2
tar jxvf arquivo.tar.bz2 -C /caminho/para/extração/

Manipulando texto com o awk


O wak serve para manipular colunas de uma saída,
o comando abaixo imprimirá a segunda coluna
echo "palavra texto" | awk '{print $2}'

Podemos usar o awk para imprimir determinadas linhas


que contenham um padrão
ifconfig eth0 | awk '/inet end/ {print $3}'

Matando processos
Para descobrir o identificador de um processo
process id
ps -aux | grep firefox

Digamos que a saída do comando anterior


retorne o número "8856" podemos matar o processo assim:
kill -9 8856

Você pode ainda chamar o "xkill" pelo comando


executar "alt-f2" ou no terminal executar este comando
killall geditSem título 1

No caso acima estamos matando todos os processos do editor de textos gedit

Edson Candido Xavier - 04/05/2011


Linux-avançado
Criando atalhos para pastSem título 1as
Esta dica eu peguei no dicas-l, como sempre o Júlio Neves
com suas ajudas inusitadas.

Editando o seu arquivo ~/.bashrc para quem não sabe ~/


quer dizer /home/fulano e .bashrc signifca um arquivo oculto
(veja o ponto no seu início)

Pois bem no meu .bashrc coloquei lá no final:


CDPATH=.:..:~:~/Documentos:~/Imagens

O cdpath contém os locais em que o sistema procura pastas


na hora que digitamos o comando CD, por isso o nome CD(path)
pois path quer dizer caminho.

Cada caminho tem como delimitador ":"


ou seja os caminhos do meu sistema são:
. pasta atual
.. pasta acima
~ pasta pessoal /home/sergio
~/Documentos /home/sergio/Documentos
~/Imagens /home/sergio/Imagens

E qual a mágca ele faz?


se eu estiver usando o console (em qualquer local) posso acessar
a pasta textos que fica em /home/sergio/Documentos/textos apenas
digitando textos, veja:

cd /etc/
cd textos
pwd
/home/sergio/Documentos/textos

Já que estamos falando de caminhos (path) podemos também editar


a variável de sistema PATH que indica em que locais procurar por
programas. Para entender melhor:
casa
bash: casa: comando não encontrado

O que aconteceu foi que o bash nosso amado interpretador de comandos


procurou na minha variável $PATH e não achou nenhum programa com o
nome casa.
Mas o que contém essa variável?
echo $PATH
/home/sergio/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:

Edson Candido Xavier - 04/05/2011


Linux-avançado
Novamente o delimitador é ":" sendo assim (como diz no brega) podemos trocar "tr" os dois pontos para
visualizar melhor.
echo $PATH | tr ":" "\n"
/home/sergio/bin
/usr/local/sbin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games

Assim como a variável CDPATH, PATH também pode ser editada


no arquivo .bashrc

Para acrescentar algo ao PATH, tipo ~/bin (uma pasta de scripts do usuário)
coloque no final do seu .bashrc

Edson Candido Xavier - 04/05/2011

Vous aimerez peut-être aussi