Você está na página 1de 112

Linux: Do Basico Ao Shell-Script

Prof. Dr. Salviano A. Leao


Junho de 2010

Salviano A. Leao 1

Sumario

 Linux: comandos basicos

 Bash e ferramentas
 Construcao e analise de alguns scripts

Salviano A. Leao 2

Referencias para os comandos basicos

   http://wiki.ubuntu-br.org/ComandosBasicos  http://www.infowester.com/comandoslinux.php 
http://www.mtm.ufsc.br/~krukoski/pub/linux/focalinux2/ch-cmdv.htm

http://www.guiaubuntupt.org/wiki/index.php?title=Comandos_basicos#c

http://www.planetarium.com.br/planetarium/noticias/2004/2/107662993

 http://pt.wikipedia.org/wiki/Guia_de_comandos_para_Linux/Unix   http://focalinux.cipsga.org.br/

http://www.vivaolinux.com.br/artigo/Fundamentos-do-sistema-Linux-c

Salviano A. Leao 3

Referencias para Shell-script

 Julio Cezar Neves: http://br.gnome.org/TWikiBar/TWikiBarPapo001


 Aurelio Marinho Jargas: http://aurelio.net/shell/

 wikipedia: http://pt.wikipedia.org/wiki/Shell_script  Shell Script: http://www.inf.ufpr.br/afms03/shell.html  Shell Script 4 All: http://shellscript4all.blogspot.com/  Advanced Bash-Sripting Guide: http://tldp.org/LDP/abs/html/  Bash by examples:
http://www.ibm.com/developerworks/linux/library/l-bash.html

 Shelldorado: http://www.shelldorado.com/

Salviano A. Leao 4

Livros recomendados

 Julio Cezar Neves, Programacao Shell Linux, Editora Brasport 7a edicao (2008)  Aurelio Marinho Jargas, Shell Script Prossional, editora Novatec (2008).  Aurelio Marinho Jargas, Expressoes Regulares Uma abordagem divertida, editora Novatec 3a edicao(2009).

 Carl Albing, JP Vossen, and Cameron Newham, Bash Cookbook, OReilly First
Edition (2007).

 Eric Foster-Johnson, John C. Welsh and Micah Anderson, Beginning Shell


Scripting, Wiley Publishing Inc. (2005).

 Dale Dougherrty and Arnold Robbins, Sed & awk, OReilly Second Edition
(1997).

 Jeffrey E.F. Friedl, Mastering Regular Expressions, OReilly Third Edition


(2006).

Salviano A. Leao 5

Obtendo ajuda

help Mostra informacoes gerais sobre os comandos intrnsecos do Shell; man Mostra toda a informacao a respeito de um comando; info Mostra documentacao no formato proprio do info; apropos Pesquisa na paginas do man nomes e descricoes que se encaixam o comando buscado; whatis Procura nomes na paginas do man e mostra na tela as paginas de descricao de qualquer nome que se assemelha; catman Constroi o banco de dados que o apropos faz uso. Em geral os comandos GNU/Linux fornecem uma pequena descricao sobre o comando ao digitarmos o comando com a opcao --help:
$ comando -- help

A sintaxe geral dos comandos linux e:


$ comando [ opcao ... ] [ expressao ] [ arquivo ... ]

Salviano A. Leao 6

man pages - Manual de Referencias

Estrutura das Paginas do man 1. Comandos do usuario 2. Chamadas do sistema 3. Biblioteca de funcoes 4. Formato de arquivos especiais 5. Arquivos de conguracao 6. Jogos e demonstracoes 7. Pacotes de macros e convencoes 8. Comandos de administracao do sis tema 9. Rotinas do Kernel Comandos que podem ser executados a partir do shell Funcoes que devem ser executadas pelo kernel Funcoes internas das bibliotecas, princi palmente as da libc Driver e hardware, principalmente os encontrados em /dev Formato de arquivos e convencoes, por exemplo /etc/passwd Jogos Sistemas de arquivos, protocolos de rede, codigos ASCII e outros Comandos que em geral so o root pode executar Nao e padrao

Salviano A. Leao 7

Comandos basicos usuario: qualquer

chage user Muda as informacoes de expiracao da senha do usuario user; chfn user Muda o nome real do usuario user e suas informacoes; crontab Mantem individualmente as tarefas agendadas para cada usuario; nger user Mostra informacoes sobre o usuario user; id Mostra as identicacoes do reais e efetivas dos usuarios e grupos; last Mostras as coneccoes mais recentes do usuario; lastlog Mostra a ultima conecao dos usuarios do sistema; passwd user Troca senha do usuario user; uptime Mostra a quantas horas seu computador esta ligado; w Mostra os usuarios conectados atualmente no computador; who Mostra quem esta usando o sistema. whoami Mostra o nome de login do usuario. O mesmo que id -un.
Salviano A. Leao 8

Comandos basicos do sistema

exit Sair do terminal; halt Desligar o sistema; logout Sair do terminal; reboot Reinicia o computador; shutdown Desliga ou reinicia o computador. Ha algumas opcoes para esse comando, veja por exemplo: shutdown -r now Reinicia o computador; shutdown -h now Desliga o computador; O parametro now pode ser mudado. Por exemplo: digite
$ shutdown -r +10

e o sistema ira reiniciar daqui a 10 minutos;

Salviano A. Leao 9

Comandos basicos usuario: superusuario

O usuario comun pode usar, entretanto ele deve possuir permissoes: su Muda a identicacao do usuario ou torna-se o superusuario, o root; sudo Executa um comando com um outro usuario; Somente o superusuario pode executar: addgroup Adiciona usuarios e grupos ao sistema, de acordo com as opcoes; adduser Adiciona usuarios e grupos ao sistema, de acordo com as opcoes; delgroup Remove um usuario ou grupo do sistema; deluser Remove um usuario ou grupo do sistema; lastb Mostra lista dos ultimos usuarios conectados no sistema; useradd Cria um novo usuario ou adapta as informacoes de um usuario; userdel Apaga todos os arquivos relacionados ao usuario; usermod Modica as informacoes do sistema relativas ao usuario;

Salviano A. Leao 10

O Comando history

Ele mostra os ultimos 1000 comandos executados na linha de comando na conta corrente. O comando history -c apaga historia dos ultimos comando digitados; Designador de eventos ele refere-se a uma linha da lista do history !n Refere-se a n-esima linha de comando da lista; !-n Refere-se a corrente linha de comando menos n; !! Refere-se ao comando previo; !texto Refere-se ao mais recente comando que inicia com texto; !?texto[? ] Refere-se ao mais recente comando contendo texto; texto1texto2 Repita o ultimo comando trocando texto1 por texto2;

Salviano A. Leao 11

Estrutura de Arquivos do Linux

/ |-|-|-|-|-| |-|-|-|-|-|-|-|-|-|--

bin boot dev etc home -- salviano lib media mnt proc root sbin sys tmp usr var

|-| | | | | | | | | |

usr |-|-|-|-|-|-|-|-|---

bin games include lib lib32 lib64 -> lib local sbin share src

Salviano A. Leao 12

Conteudo dos diretorios

Diretorio /bin /boot /dev /etc /home /lib /media /proc /root /sbin /tmp

Tipos de arquivos Principais utilitarios do sistema. Contem os arquivos e a imagem do kernel necessarios para a inicilizacao do sitema. Arquivos especiais dos dispositivos do sistema. Arquivos de conguracao do sistema. Local onde cam os diretorios dos usuarios com contas no sistema. Bibliotecas de funcoes administrativas do sistema alem dos modulos do kernel. Em geral onde sao montados os dispositivos removveis, por exemplo os pendrives, CDs e DVD, etc. Arquivos com informacoes sobre o hardware. diretorio padrao do superusuario, o root. Comando de manutencao do sistema, em geral so o superusuario pode executar. arquivos temporarios do sistema

Salviano A. Leao 13

Conteudo dos diretorios

Diretorio /usr /usr/bin /usr/games /usr/include /usr/lib /usr/local /usr/local/bin /usr/local/lib /usr/sbin /usr/share /usr/src /var

Tipos de arquivos Encontram os utilitarios, documentacao, bibliotecas, etc. Utilitarios que o usuario tem permissao para executar. Jogos. Cabecalhos das bibliotecas. Bibliotecas. Usado por programas especcos do usuario. Os programas executaveis especcos do usuario. As bibliotecas dos programas especcos do usuario. Utilitarios do sistema que o superusuario tem permissao para executar. Local onde encontra-se a documentacao, icones, etc. Aqui encontra-se o codigo fonte do kernel quando ele e instalado. Onde o sistema guarda os relatorios, os arquivos de log, e os arquivos de impressao, de email, de download instalacao do siste, etc.

Salviano A. Leao 14

Informacoes sobre as particoes

fdisk Mostra informacoes sobre as particoes e tambem edita as particoes do sistema. As informacoes sao obtidas melhor pelo comando:
phonon:~/Seminarios/XXVIISF > sudo fdisk -l /dev/sda

Disco /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Unidades = cilindros de 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Identificador do disco: 0x20000000 Dispositivo Boot Incio /dev/sda1 1 /dev/sda2 * 11 /dev/sda3 1202 /dev/sda4 7576 /dev/sda5 7576 /dev/sda6 13313 /dev/sda7 38404 Fim 10 1202 7575 38913 13312 38403 38913 Blocos 80293+ 9566208 51197266 251722454 46082421 201543426 4096543+ Id de 7 7 5 83 83 82 Sistema Utilitrio Dell a HPFS ou NTFS HPFS ou NTFS Estendida Linux Linux Linux swap / Solaris

Salviano A. Leao 15

Informacoes sobre o uso do sistema de arquivos

df Mostra informacoes dos discos de todos os sistemas de arquivos. Ha algumas opcoes interessantes: df -h Mostra as informacoes num formato mais legvel;
Sist. Arq. /dev/sda5 none none none none none /dev/sda6 /dev/sda3 Tam 44G 1,9G 1,9G 1,9G 1,9G 1,9G 190G 49G Usad Disp Uso% Montado em 12G 30G 28% / 324K 1,9G 1% /dev 188K 1,9G 1% /dev/shm 92K 1,9G 1% /var/run 0 1,9G 0% /var/lock 0 1,9G 0% /lib/init/rw 74G 107G 41% /home 21G 29G 42% /windows

free Mostra o uso da memoria do computador, inclusive do swap. As opcoes -b, -k, -m, -g mostra o resultado respectivamente em unidades de bytes, KB, MB, ou GB.

Salviano A. Leao 16

Informacoes sobre o uso do disco

du Mostra o uso detalhado de disco no diretorio corrente e em seus subdiretorios. Ha diversas opcoes: du -h Mostra informacoes em formato legvel. du -s Mostra de forma sintetica o uso do disco. du -sh Mostra de forma sintetica o uso do disco em formato legvel. du -ah Mostra tambem o tamanho dos arquivos, tudo em formato legvel. du max-depth=n -ah Mostra tambem o tamanho dos arquivos, tudo em formato legvel, porem so vai ate n nveis de profundidade de subdiretorios.

Salviano A. Leao 17

Variaveis de ambiente e atalhos

As variaveis denidas pelo sistema para cada usuario sao obtidas com o comando env ou printenv
$ env $ printenv

Ele fornece todas as variaveis de ambiente usadas pelo usuario. Os arquivos de conguracao da area do usuario sao: Arquivo .bashrc .bash aliases Conteudo Sempre que se entra no sistema esse e o primeiro arquivo a ser rodado. Nele encontra-se a dencao do formato do prompt, o PATH do usuario, suas denicoes, etc. Aqui o usuario deni os seus atalhos.

Salviano A. Leao 18

Arquivo .bashrc

# .bashrc # Ajusta PATH para incluir o diretrio bin especfico do usurio se existir o a if [ -d ~/bin ] ; then PATH=${HOME}/bin:/${HOME}/bin/fx:${PATH} fi # N~o duplique as linhas do history a export HISTCONTROL="ignorespace:ignoredups" export HISTIGNORE="&:ls:[bf]g:exit: [ \t]*:ps:cd" # Definindo algumas variavies do sistema export BROWSER="/usr/bin/firefox" export JAVA_HOME="/usr/lib/jvm/java-6-sun/" # Para obter um prompt colorido if [ "$USER" = root ] then PS1=${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;33m\]\w > \[\033[00m\] else PS1=${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;33m\]\w > \[\033[00m\] fi # Habilite a caracterstica de completar um comando. if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi # >>>>>>>>>>>>>>> Defini~es de atalhos co <<<<<<<<<<<<<<<<<<<<< if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # Mensagens de boas vindas ao conetar clear echo -ne "Hoje : "; date +%d/%m/%y e cal echo -ne "Voc^ est logado h: " ; uptime | awk /up/ {print $3, $4} e a a echo fortune

Salviano A. Leao 19

Arquivo .bash aliases

# Habilite o suporte a cores do ls e tambm adicione alguns atalhos e if [ "$TERM" != "dumb" ]; then eval "dircolors -b" # gera o cdigo para definir LS_COLORS p/ o bash o alias ls=ls --color=auto -hsCF alias dir=ls --color=auto --format=vertical alias vdir=ls --color=auto --format=long fi # Mais alguns atalhos alias l="ls" alias ll="ls -l" alias lsa=ls -a alias lsd="ls -d */" alias la=ls -ACF alias l=ls -ahlsCF alias cd..="cd .." alias cp="cp -i" alias mv="mv -i" alias rm="rm -i"

# # # # # # #

Listagem clssica a Listagem detalhada Listar tudo Listar s diretrios o o Listar tudo, formatando a sada List tudo, formatando a sada em colunas Erro comun de digita~o ca

# Sempre pede confirma~o ao copiar um arquivo ca # Sempre pede confirma~o ao mover um arquivo ca # Sempre pede confirma~o ao apagar um arquivo ca

# Mostra o tamanho de um diretrio em formato legvel. o alias du=du -h # Mostra informa~es das parti~es em formato legvel. co co alias df=df -h alias gnuplot="rlwrap -a -c gnuplot" #Definindo uma fun~o ca acha_pac() # Procura por arquivos do LaTeX { find /usr/share/texmf/tex/latex/ -type f -name $1\* -print find /usr/share/texmf-texlive/tex/latex/ -type f -name $1\* -print find /usr/share/doc/ -type f -name $1\* -print find /etc/texmf/ -type f -name $1\* -print }

Salviano A. Leao 20

Listando arquivos e diretorios com o ls

Ha inumeras opcoes para esse comando, entre as mais uteis estao -C Lista arquivos em colunas, ordenados verticalmente. -F Suxa o nome dos diretorios com /, e dos executaveis com *. -R Lista os diretorios encontrados, recursivamente. -a Lista todos os arquivos, incluindo os arquivos ocultos. -c Usa o tempo de alteracao para ordenar. -d Lista diretorios e arquivos no mesmo formato. -l Lista todas as informacoes do arquivo em uma coluna. -r Inverte a ordem do ordenacao. -t Ordena a exibicao pelo rotulo de tempo. -u Usa o tempo do ultimo acesso para ordenar. -1 Lista somente o nome dos arquivos em coluna simples.

Salviano A. Leao 21

Uma opcoes uteis do ls para programacao shell

-b, - -escape, - -quoting-style=escape Coloca aspas em nomes de arquivos com caracteres nao gracos usando sequencia de barra invertida alfabetica e octal como usado em C. Esta opcao e como a opcao -Q exceto que os nome de arquivos nao sao colocados entre duas aspas. -B, - -ignore-backups Nao lista arquivos que terminam com , a menos que sejam fornecidos na linha de comando. -Q, - -quote-name, - -quoting-style=c Conna o nome do arquivo em aspas duplas e os caracteres nao gracos entre aspas como no C. - -full-time Lista o tempo completo, em detrimento a abreviacao padrao. O formato e como no padrao date(1) ; nao e possvel alterar isto, mas voce pode extrair a cadeia de caracteres da data com cut(1) e passar o resultado para date -d. - -show-control-chars Imprime caracteres nao gracos como no nome do arquivo. Isto e o padrao a menos que a sada seja um terminal e o programa seja ls.

Salviano A. Leao 22

Uma opcoes uteis do ls para programacao shell

- -quoting-style=word Usa o estilo word para colocar aspas nos nomes da sada. A word pode ser uma das seguintes: literal Sada de nomes como e. Isto e o comportamento padrao de ls. shell Colocar aspas nos nomes para o interpretador de comandos se eles contem meta caracteres do interpretador de comandos ou que causaria sada ambgua. shell-always Coloca aspas nos nomes para o interpretador de comandos, mesmo se eles normalmente nao requereriam aspas. c Coloca aspas nos nomes como nas cadeias de caracteres da linguagem C; isto e igual a opcao -Q. escape Coloca aspas como o c exceto que omite as aspas duplas ao redor; isto e igual a opcao -b. Um valor padrao para esta opcao pode ser especicada com a variavel de ambiente QUOTING STYLE.

Salviano A. Leao 23

Informacoes sobre o sistema

dmesg Mostra as mensagens da inicializacao (os log) do sistema; hostname Mostra o nome da maquina que se esta conectado (o host local); uname Mostra informacoes sobre o sistema. -a Mostra todas as informacoes; -o Mostra o sistema operacional; -p Mostra o tipo do processador -s Mostra o nome do kernel usado. lshw Lista o hardware da maquina. Opcoes -X Lanca uma interface graca; -short Retorna informacoes em formato mais compacto; ifcong Mostra as interfaces de redes ativas e as informacoes relacionadas a cada uma delas.

Salviano A. Leao 24

Comandos de informacoes do sistema

basename Mostra o NOME sem quaisquer componentes iniciais de diretorio. Se for especicado, remove tambem o SUFIXO nal. dirname Mostra so o diretorio. whereis Mostra onde se encontra determinado arquivo (binarios), fonte e paginas de manual ou simplesmente um comando. Algumas opcoes sao: -b Procure somente binarios; -m Procure somente nas paginas de manual; -s Procure somente por codigos fontes; which Mostra qual arquivo binario esta sendo chamado pelo shell quando chamado via linha de comando. Opcoes

Salviano A. Leao 25

Manipulando arquivos e diretorios

pwd Mostra o diretorio corrente; cd Muda de diretorio; cd Vai para o diretorio raiz do usuario ($HOME);

cd .. Volta um diretorio anterior; cd - Volta para o ultimo diretorio; cp Copia um arquivo e/ou diretorio. As opcoes sao: -i Modo iterativo, pedindo conrmacao para todas as acoes; -f Forca copia, sobrescrevendo o arquivo alvo caso necessario; -p Preserva as permissoes na copia; -r ou -R Copia recursivamente atraves dos subdiretorios;

Salviano A. Leao 26

Removendo e Movendo/Renomeando arquivos

mv Move e/ou renomeia um arquivo e/ou diretorio; -i Modo iterativo, pedindo conrmacao para todas as acoes; -f Forca, e ignora a opcao -i; -r ou -R Vai recursivamente atraves dos subdiretorios; rm Apaga um arquivo e/ou diretorio; -i Modo iterativo, pedindo conrmacao para todas as acoes; -f Forca a remocao, e ignora a opcao -i; -r ou -R Remove recursivamente atraves dos subdiretorios;

Salviano A. Leao 27

Manipulando diretorios

 O comando
mkdir [ opcoes ] [ novo - diretorio ]

cria o diretorio novo-diretorio. Aqui as opcoes podem ser: -m Especica as permissoes que do novo diretorio tera; -p Cria todos os diretorios e subdiretorios necessarios; -v Exibe uma mensagem para cada diretorio criado.

Salviano A. Leao 28

Manipulando diretorios

 O comando
rmdir [ opcoes ] [ diretorio ]

apaga o diretorio diretorio. Aqui as opcoes podem ser: -p Remove os diretorios-pai do diretorio selecionado, se possvel. Assim, o comando rmdir -p a/b/c/ vai apagar o diretorio a/b/c/, depois o diretorio a/b/ e por m o diretorio a/, se possvel; -v Mostra os detalhes da remocao dos diretorios. Podem ser especicados mais de um diretorio por vez. O rmdir so remove diretorio vazios.

Salviano A. Leao 29

Ligacoes simbolicas comando: ln

O comando
ln [ opcoes ] [ origem ] [ link ]

cria uma ligacao simbolica entre arquivos e/ou diretorios. Aqui origem Diretorio ou arquivo de onde sera feito o link. link Nome do link que sera criado. equanto as opcoes sao -f Remove o arquivo de destino existente. -s Cria um link simbolico. Usado para criar ligacoes com o arquivo/diretorio de destino. -v Mostra o nome de cada arquivo antes de fazer o link. -d Cria um hard link para diretorios. Somente o root pode usar esta opcao.

Salviano A. Leao 30

Tipos de links

Ha dois tipos de links: os simbolicos e os hardlinks. O link simbolico cria um arquivo especial no disco (do tipo link) que tem como conteudo o caminho para chegar ate o arquivo alvo. O hardlink faz referencia ao mesmo inodo do arquivo original, assim ele e perfeitamente identico, inclusive nas permissoes de acesso, ao arquivo original.
$ ls -i /etc/passwd 1576306 4,0K /etc/passwd $ stat /etc/passwd File: /etc/passwd Size: 1841 Blocks: 8 IO Block: 4096 Device: 805h/2053d Inode: 1576306 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( Access: 2010-06-06 11:17:01.501942274 -0300 Modify: 2010-05-25 15:05:36.710615705 -0300 Change: 2010-05-25 15:05:36.743892352 -0300

arquivo comum 0/ root)

Ao contrario dos links simbolicos, nao e possvel fazer um hardlink para um diretorio ou fazer referencia a arquivos que estejam em particoes diferentes.

Salviano A. Leao 31

Notas sobre o link

Deve-se notar que ao usar: o comando rm com um link, somente o link sera removido. o comando cp com um link, o arquivo original sera copiado ao inves do link. o comando mv com um link, a modicacao sera feita no link. um comando de visualizacao (como o cat), o arquivo original sera visualizado. Exemplos:
$ ln -s / home / salviano / file1 / home / salviano / tmp / file1

Cria o link /home/salviano/tmp/le1 para o arquivo /home/salviano/le1


$ ln -s / home / salviano / cursos / QM / home / salviano / dropbox / QM

Cria um link /home/salviano/dropbox/QM para o diretorio /home/salviano/cursos/QM.

Salviano A. Leao 32

Comando diff

Compara dois arquivos e mostra as diferencas entre eles. Ele so e usado para comparar arquivos em formato de texto. As diferencas entre dois arquivos podem ser redirecionadas para um terceiro arquivo o qual podera ser usado pelo comando patch para aplicar as alteracoes em um arquivo que nao contem as diferencas. A sintaxe do comando e
diff [ diretorio1 / arquivo1 ] [ diretorio2 / arquivo2 ] [ opcoes ]

na qual diretorio1/arquivo1 e diretorio2/arquivo2 sao os arquivos ou diretorios que serao comparados. Ja as opcoes podem ser: -a Compara os dois arquivos como arquivos texto. -b Ignora espacos em branco como diferencas. -B Ignora linhas em branco inseridas ou apagadas nos arquivos. - -brief Relata somente as diferencas entre os arquivos, e nao os detalhes destas diferencas.

Salviano A. Leao 33

Opcoes do diff

-i Ignora diferencas entre maiusculas e minusculas nos arquivos. -H Usa analise heurstica para vericar os arquivos. -N Em uma comparacao de diretorios, se o arquivo apenas existe em um diretorio, trata-o como presente mas vazio no outro diretorio. -P Em uma comparacao de diretorios, se o arquivos apenas existe no segundo diretorio, trata-o como presente mas vazio no primeiro diretorio. -q Mostra somente se os dois arquivos possuem diferencas. Nao mostra as diferencas entre eles. -r Compara diretorios e sub-diretorios existentes. -S NOME Inicia a comparacao de diretorios pelo arquivo NOME. E util quando cancelamos uma comparacao. -t Aumenta a tabulacao das diferencas encontradas. -u Usa o formato de comparacao unicado.

Salviano A. Leao 34

Notas sobre o diff

Use o comando zdiff para comparar diretamente arquivos compactados pelo utilitario gzip; Use o comando sdiff para visualizar as linhas diferentes entre os dois arquivos em formato texto simples.
Caso seja necessario comparar ate tres arquivos use o diff3.

Salviano A. Leao 35

Exemplos do diff

$ diff texto . txt texto1 . txt

Compara o arquivo texto.txt com texto1.txt e exibe suas diferencas na tela.


$ diff - Bu texto . txt texto1 . txt

Compara o arquivo texto.txt com texto1.txt ignorando linhas em branco diferentes entre os dois arquivos e usando o formato unicado.
diff texto . txt texto1 . txt > texto . diff

Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamado texto.diff contendo a diferenca entre eles. Este arquivo podera ser usado pelo patch para aplicar as diferencas existente entre os dois no arquivo texto.txt.

diff -r / usr / src / linux -2.6.30 / usr / src / linux -2.6.32 > patch -2.6.32. di

Compara o diretorio e sub-diretorios linux-2.6.30/ e linux-2.6.32/ e grava as diferencas entre eles no arquivo patch-2.6.32.diff.

Salviano A. Leao 36

Comando patch

Atualiza arquivos texto atraves das diferencas geradas pelo comando diff. A sua sintaxe e
patch [ opcoes ] [ arqv . diff ] ou patch [ opcoes ] < [ arqv . diff ]

na qual o arqv.diff e o arquivo contendo as diferencas geradas pelo comando diff e as algumas da opcoes do comando sao: -p N Aqui N e o nvel do diretorio onde o patch sera aplicado, se for igual a 0, o patch assume que os arquivos que serao atualizados estao no diretorio atual, se 1, assume que os arquivos que serao atualizado estao no diretorio acima (..), se 2, 2 diretorios acima e assim por diante. -b Cria copias de seguranca dos arquivos originais ao aplica o patch. -binary Le e grava arquivo usando modo binario. -d DIR Muda para o diretorio [dir] antes de aplica o patch. -E Remove arquivos vazios apos a aplicacao do patch.

Salviano A. Leao 37

Notas sobre o pach

-n Interpreta o arquivo de patch como um .diff normal. -N Nao desfaz patches ja aplicados. -s Nao mostra mensagens de erro. -u Interpreta o patch em formato unicado. As diferencas sao aplicadas em arquivos originais gerados pelo comando diff. E importante entender os comandos patch e diff pois sao comandos muito utilizados para desenvolvimento feito por equipes de pessoas. Exemplo:
patch - p0 < texto . diff

Aplica as diferencas contidas no arquivo texto.diff nos arquivos originais.


patch - p0 texto . txt texto . diff

Aplica as diferencas contidas no arquivo texto.diff nos arquivos originais. Faz a mesma coisa que o comando anterior.

Salviano A. Leao 38

Comando grep

A familia de comandos grep, egrep, fgrep, rgrep, faz uma busca em um texto por um padrao e retorna as linhas do texto que contem o padrao procurado. Sua sintaxe e a seguinte
grep [ OPTIONS ] PADRAO [ ARQUIVO ...] grep [ OPTIONS ] [ - e PATTERN | -f ARQUIVO ] [ ARQUIVO ...]

O comando egrep e o mesmo que grep -E. fgrep e o mesmo que grep -F. rgrep e o mesmo que grep -r. Opcoes do tipo de pesquisa: -E Interpreta o PADRAO como uma expressao regular extendida. -F Interpreta o PADRAO como uma lista de palavras xas, separdas por uma nova linha, sendo que qualquer uma delas pode ocorrer. -G Interpreta o PADRAO como uma expressao regular basica.

Salviano A. Leao 39

Algumas opcoes do grep

-e PADRAO use o PADRAO como o padrao da busca. Este pode ser usado para especicar multiplos padroes de busca. -f ARQV obtem o padrao do arquivo ARQV, um por linha. -i Ignora a diferenca entre maiusculas e minusculas. -v Mostra as linhas que nao casam com o padrao. -r Varre subdiretorios tambem. -qs Nao mostra as linhas nem erros (usar como teste). -n Mostra tambem o numero da linha -m NMAX Pare a busca a encontrar NMAX linhas. -c Conta o numero de linhas encontradas. -l Mostra apenas o nome o arquivo que casou. -w O padrao e uma palavra inteira e nao parte dela. -x O padrao e uma linha inteira e nao parte dela. -A N Mostre N linhas de contexto depois do padrao. -B N Mostre N linhas de contexto antes do padrao. -C N Mostre N linhas de contexto antes e depois do padrao.

Salviano A. Leao 40

Uso simples do comando grep

$ grep -i "SALviano" /etc/passwd salviano:x:1000:1000:Salviano de Araujo Le~o,,,:/home/salviano:/bin/bash a

$ grep -i "SALviano" /etc/passwd /etc/group /etc/passwd:salviano:x:1000:1000:Salviano de Araujo Le~o,,,:/home/salviano:/bin/ba a /etc/group:adm:x:4:salviano /etc/group:dialout:x:20:salviano /etc/group:cdrom:x:24:salviano /etc/group:plugdev:x:46:salviano /etc/group:lpadmin:x:105:salviano /etc/group:admin:x:115:salviano /etc/group:salviano:x:1000:

$ grep -i "SALviano" /etc/* grep: /etc/at.deny: Permiss~o negada a grep: /etc/fuse.conf: Permiss~o negada a /etc/group:adm:x:4:salviano /etc/group:dialout:x:20:salviano /etc/group:cdrom:x:24:salviano /etc/group:plugdev:x:46:salviano /etc/group:lpadmin:x:105:salviano /etc/group:admin:x:115:salviano /etc/group:salviano:x:1000: /etc/group:sambashare:x:122:salviano grep: /etc/gshadow: Permiss~o negada a /etc/mtab:gvfs-fuse-daemon /home/salviano/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,no grep: /etc/mtab.fuselock: Permiss~o negada a /etc/passwd:salviano:x:1000:1000:Salviano de Araujo Le~o,,,:/home/salviano:/bin/ba a grep: /etc/shadow: Permiss~o negada a
Salviano A. Leao 41

Expressoes Regulares

Lista dos Principais Metacaracteres Expressao Regular basica Expressao Regular estendida Metacaractere . Nome Ponto Lista Lista negada Opcional Asterisco Mais Chaves

^ $ . * [ \? \+ \| \( \) \{ \} ^ $ . * [ ? + | ( ) { }
Metacaractere Nome Circunexo Cifrao Borda Escape Ou Grupo Retrovisor

^
$

[] [^ ]
?

* + {}

\b \ |
() \1

Salviano A. Leao 42

Exemplos de representantes

Metacaractere .

Nome Ponto Lista Lista negada

Funcao Um caractere qualquer Lista de caracteres permitidos Lista de caracteres proibidos

[] [^ ]

$ grep -e "sy.:" /etc/passwd sys:x:3:3:sys:/dev:/bin/sh $ grep -ne "sy.:" /etc/passwd 4:sys:x:3:3:sys:/dev:/bin/sh $ grep -e "sy[sn]" /etc/passwd sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync syslog:x:101:103::/home/syslog:/bin/false hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false

Salviano A. Leao 43

Exemplos de quanticadores

Metacaractere ?

Nome Opcional Asterisco Mais Chaves Zero ou um Zero, um ou mais Um ou mais De n ate m

Funcao

* + {n,m}

$ grep -E "sys:?" /etc/passwd sys:x:3:3:sys:/dev:/bin/sh syslog:x:101:103::/home/syslog:/bin/false hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false $ grep -E "sys:+" /etc/passwd sys:x:3:3:sys:/dev:/bin/sh

Salviano A. Leao 44

Exemplos de ancoras

Metacaractere

Nome Circunexo Cifrao Borda

Funcao Incio da linha Fim da linha Incio ou m da palavra

^
$

\b

$ grep -E "^[sS]" /etc/passwd sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync syslog:x:101:103::/home/syslog:/bin/false speech-dispatcher:x:107:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh saned:x:113:119::/home/saned:/bin/false salviano:x:1000:1000:Salviano de Araujo Le~o,,,:/home/salviano:/bin/bash a sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin

Salviano A. Leao 45

Exemplos dos outros metacaracteres

Metacaractere

Nome Escape Ou Grupo Retrovisor

Funcao Torna literal o caracter X Ou um ou outro Delimita um grupo Texto casado nos grupos de 1 . . . 9

\x |
(. . . ) \1 . . . \9

$ grep -E "[sS]alviano|root" /etc/passwd root:x:0:0:root:/root:/bin/bash salviano:x:1000:1000:Salviano de Araujo Le~o,,,:/home/salviano:/bin/bash a $ grep -E "(:)\1" /etc/passwd libuuid:x:100:101::/var/lib/libuuid:/bin/sh syslog:x:101:103::/home/syslog:/bin/false messagebus:x:102:107::/var/run/dbus:/bin/false saned:x:113:119::/home/saned:/bin/false sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin festival:x:116:29::/home/festival:/bin/false postfix:x:117:123::/var/spool/postfix:/bin/false

Salviano A. Leao 46

Classe POSIX

Classe POSIX

Similar

Signicado Letras masculas Letras minusculas Letras mausculas e minusculas Letras e numeros Numeros Numeros hexadecimais Sinais de pontuacao Espaco (ESP) e TAB Caracteres brancos Caracteres de controle Caracteres imprimveis, exceto ESP e TAB Caracteres imprimveis

[:upper:] [:lower:] [:alpha:] [:alnum:] [:digit:] [:xdigit:] [:punct:] [:blank:] [:space:] [:cntrl:] [:graph:] [:print:]

[A-Z] [a-z] [A-Za-z] [A-Za-z0-9] [0-9] [0-9A-Fa-f] [.,!?:#$&...] [ \t] [ \t\n\r\f\v] [^\n\r\f\v] [^ \t\n\r\f\v]

Salviano A. Leao 47

Comandos para obter informacoes de arquivos

le Mostra o tipo de arquivo; type Determina o tipo de um comando, se ele e um comando instalado nos sistema ou se ele e comando do proprio shell. Ele tem as seguintes opcoes: -t Que e a opcao padrao, retorna o tipo do comando; -p Retorna o caminho do comando; -a Retorna todas as informacoes sobre o comando; touch Cria arquivo vazio; lsof Mostra arquivos abertos.

Salviano A. Leao 48

Manipulando arquivos

cat Mostra o conteudo de um arquivo binario ou texto e tambem pode concaternar arquivos. tac Semelhante ao cat mas inverte a ordem; wc Mostra a quantidade de linhas, palavras e byte do arquivo. Suas opcoes sao: -c ou - -bytes Mostra a contagem dos bytes; -m ou - -chars Mostra a contagem dos caracteres; -l ou - -lines Mostra a contagem das linhas; -w ou - -words Mostra a contagem das palavras; nl Mostra o numero de linhas junto com o conteudo de um arquivo. Esse comando e equivalente ao cat -n.

Salviano A. Leao 49

Comando split

Esse comando e usado para quebrar um arquivo em varios pedacos. A sintaxe do comando e:
split [ OPCAO ]... [ INPUT [ PREFIX ]]

A sada sera pedacos de tamanho-xo do INPUT prezado PREFIXaa, PREFIXab, ...; O tamanho padrao em linhas e 1000, e o PREFIX padrao e x. Todos os argumentos sao necessario. A opcoes sao: -a N Usa um suxo de comprimento N, o padrao e 2; -b SIZE Divide o arquivo xando a quantidade bytes dos arquivos em SIZE bytes; -C SIZE Coloque o maximo de SIZE bytes de linhas por arquivo; -d Usa suxos numericos em vez de alfabetico; -l N Use N linhas por arquivo; O tamanho SIZE dos arquivos podem ter um suxo multiplicador: b 512; kB 1000; K 1024; MB 1000*1000; M 1024*1024; GB 1000*1000*1000;
Salviano A. Leao 50

G 1024*1024*1024;

Comando csplit

Esse comando e usado para quebrar um arquivo em secoes determinadas pela linha de contexto. A sintaxe do comando e:
csplit [ OPCAO ]... [ ARQUIVO ] [ PADRAO ]

A sada sera pedacos do ARQUIVO separado pelo PADRAO para os arquivos xx00, xx01, .... A opcoes sao: -b, - -sufx-format=FORMAT Usa o sprintf FORMAT ao em vez de %02d -f, - -prex=PREFIX Usa PREFIX em vez de xx -k, - -keep-les Nao remove os arquivos de sada em caso de errros. -n, - -digits=DIGITS Usa um numero especco de dgitos em vez de 2 -s, - -quiet, - -silent Nao mostra a sada. -z, - -elide-empty-les remove os arquivos de sada vazios.

Salviano A. Leao 51

O padrao

Ele le o arquivo de entrada ARQUIVO, e com o PADRAO podendo ser: INTEGER Copia ate mas nao inclu o numero especco de linhas /REGEXP/[OFFSET] Copia ate mas nao inclu a linha que casa com a ER. %REGEXP%[OFFSET] Ignora, mas nao incluindo a linha que casa. {INTEGER} Repete o padrao especicado previamente esse numero de vezes. {} Repete o padrao especicado previamente tantas as vezes quanto for possvel. A linha de deslocamento OFFSET e necessario ter um sinal de + ou seguido por um inteiro positivo.

Salviano A. Leao 52

Exemplo do csplit

Ao contrario do comando split, o comando csplit permite que se especique uma palavra que ira indicar o delimitador de cada um dos novos arquivos. Considere por exemplo o arquivo Tese.tex:
\chapter{Introduao} c~ Nesse trabalho ser discutidos ... a \chapter{Teoria} Nosso sistema pode ser descrito pela Hamiltoniana... \chapter{Resultados} Vamos apresentar os resultados tericos e experimentais,... o \chapter{Conclus~o} a Nosso resultados este de acordo com os resultados experimentais...

Salviano A. Leao 53

Exemplo csplit

Para quebrar o arquivo tese em um por captulo fazemos:


$ csplit -f Cap_ Tese . tex " /\\ chapter / " {3} $ ls - al total 60 drwxr - xr - x 2 salviano salviano 4096 2010 -06 -09 drwxr - xr - x 8 salviano salviano 4096 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 0 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 63 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 71 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 83 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 87 2010 -06 -09 -rw -r - -r - - 1 salviano salviano 304 2010 -06 -09

09:41 09:39 09:41 09:41 09:41 09:41 09:41 09:40

. .. Cap_00 Cap_01 Cap_02 Cap_03 Cap_04 Tese . tex

Salviano A. Leao 54

Analise do resultado

O que ocorreu foi o seguinte: O csplit ira criar varios arquivos iniciados em Cap , ate um maximo de 4 arquivos (parametro 3, computa-se o numero entre colchetes + 1). Este valor indica o numero de vezes que o comando sera repetido. Quando nao sabemos o numero de arquivos contidos usamos o quanticador {}, ou chutamos um numero muito grande e usamo a opcao -k para ele nao reclamar.

Salviano A. Leao 55

Comando sort

Classica as linhas de um arquivo texto ou da entrada padrao, de acordo com as opcoes passadas. A classicacao e feita por linhas e as linhas sao divididas em campos que e a ordem que as palavras aparecem na linha separadas por um delimitador (normalmente um espaco). A sintaxe do comando e
sort [ opcoes ] [ arquivo ]

na qual arquivo e o nome do arquivo que sera classicado. Se nenhum arquivo for especicado, sera usado o dispositivo de entrada padrao (normalmente o teclado ou um pipe ). Algumas opcoes sao: -b Ignora linhas em branco. -d Somente usa letras, dgitos e espacos durante a classicacao. -f Ignora a diferenca entre maiusculas e minusculas. -r Inverte o resultado da comparacao.

Salviano A. Leao 56

Comando sort: opcoes

-n Caso estiver classicando um campo que contem numeros, os numeros serao classicados na ordem aritmetica. Por exemplo, se voce tiver um arquivo com os numeros: 200 20 70 Usando a opcao -n, o arquivo sera classicado desta forma: 20 70 200 No caso em que essa opcao nao e usada, o sort ira classicar o arquivo como uma listagem alfabetica (que vai de a ate z e do 0 ate 9), dessa forma ela tera a seguinte forma: 20 200 70

Salviano A. Leao 57

Opcoes do sort

-c Verica se o arquivo ja esta classicado. Se nao estiver, retorna a mensagem disorder on arquivo. -o SAIDA Grava a sada do comando sort no arquivo SAIDA. -m ARQUIVO1 ARQUIVO2 Combina o conteudo de ARQUIVO1 e ARQUIVO2 gerando um unico arquivo. Os dois arquivos precisam estar ordenados antes dessa opcao ser usada. -i Ignora os caracteres fora da faixa octal ASCII 040-0176 durante a organizacao. -t CARACTER Usa CARACTER como delimitador durante a classicacao de linhas. Por padrao e usado um espaco em branco como delimitador de caracteres.

Salviano A. Leao 58

Opcoes do sort

-k POS1, POS2 Especca qual o campo dentro na linha entre POS1 e POS2 que sera usado na classicacao. Cada posicao tem a forma [F. C][OPTS], onde F e o numero de campo para usar, e C e o numero do primeiro caractere do incio do campo. Campos e posicoes de caracteres sao numeradas a partir de 1, uma posicao de caractere zero em POS2 indica o ultimo caractere do campo. Se C e omitido em POS1, o padrao e 1 (o incio do campo), se omitido em POS2, o padrao e 0 (o m do campo). OPTS sao opcoes de ordenacao, permitindo que as chaves individuais para serem classicados de acordo com diferentes regras. Exemplo: Para classicar o segundo campo, use - -key=2,2 ou (-k 2,2).

Salviano A. Leao 59

Visualisadores de incio e m de arquivo

head Mostra as linhas iniciais de um arquivo texto. As opcoes sao -c N Mostra os N-bytes do incio do arquivo; -n N Mostra as N primeiras linhas do arquivo. O padrao e mostrar as 10 primeiras. tail Mostra as linhas nais de um arquivo texto. As opcoes sao -c N Mostra os N-bytes do m do arquivo; -n N Mostra as N ultimas linhas do arquivo. O padrao e mostrar as 10 ultimas. more e um ltro para paginar o texto na tela, com algumas opcoes. Ele ja esta meio obsoleto e e mais conveniente usarmos o seu substiituto que possu mais recurso, o comando less.

Salviano A. Leao 60

Comando od

E o Octal Dump, que serve para mostrar o codigo de cada caractere de um arquivo ou texto. Alem de octal, tambem mostra os codigos em hexadecimal e ASCII. Algumas opcoes mais uteis sao -a Mostra os nomes dos caracteres; -b Mostra os caracteres em octal; -c Mostra os caracteres em ASCII ou com barras de ESCAPE; -x Mostra os caracteres em hexadecimal. Este comando e muito util para encontramos caracteres especiais em alguns arquivos.

Salviano A. Leao 61

Exemplos do comando od

$ cat Arq_com_caracteres_especiais 200 20 70 1 2 . 2 : 3 4 x x x 8 x $ od -a Arq_com_caracteres_especiais 0000000 2 0 0 nl 2 0 nl 7 0000020 nl sp sp sp sp sp 2 nl 0000040 sp sp sp sp 3 nl sp sp 0000060 sp sp x nl sp sp sp sp 0000100 sp sp ht ht sp 8 nl sp 0000120

0 . sp sp sp

nl sp sp x sp

sp sp sp sp sp

sp sp 4 sp sp

sp sp nl ht x

sp 2 sp sp nl

sp nl sp sp sp

1 : sp x nl

Salviano A. Leao 62

Editores para linha de comando

ed Editor de texot orientado a linhas. vi Editor de texto comun a quase todos os sistemas tipo Unix. nano Editor de texto muito usado nos GNU/Linux atuais, e extremamente versatil e poderoso. emacs Editor de texto muito usado por ser extremamente versatil e poderoso. mcedit Editor integrado ao GNU Midnight Commander, cujo pacote linux e o mc, de uso facil e simples. pico Pequeno editor de texto; sed Editor de texto orientado para uxo.

Salviano A. Leao 63

Comando less

O less e um ltro para paginar o texto na tela, que permite mover-se no texto em todas as direcoes. Para navegar no texto, seus comandos sao similares aos do emacs. Aqui listamos alguns: ESPACO ou V or f or F Move o texto N linhas a frente. N refere-se ao tamanho padrao em linhas do terminal usado. O comando z redene esse valor z Redene o tamanho padrao em linhas do terminal. /PADRAO Pesquisa para frente o PADRAO no texto. ?PADRAO Pesquisa para tras o PADRAO no texto. q ou Q ou :q ou :Q ou ZZ Sai do ambiente less. Para maiores detalhes de navegacao consulte o manual.

Salviano A. Leao 64

Comando echo

Mostra um texto. Comando extremamente util. A sintaxe do comando e:


echo [ OPCOES ]... [ STRING ]...

A opcoes pdem ser: -n Nao quebra a linha no nal. -e Habilita a interpretacao dos caracteres especiais (Escape), listados na tabela. -E Desabilita a interpretacao dos caracteres especiais (Escape). Exemplos:
X3 $echo -e " teste1 \ cteste2 \ t X " teste1$ $echo -e " X1 \ tX2 \ tX3 \ n \ t \ tX5 " X1 X2 X3 X5

$ echo -e " teste \ nteste \ b X " teste test X $echo -e " teste \ fteste \ t X " teste teste X $echo -e " X1 \ rX2 \ rX3 "

Salviano A. Leao 65

Tabela de caracteres de ESCAPE

Escape

Descricao barra invertida Som de alerta (bipe). Caracter backspace (apaga um caracter). Alem desse ponto, nao produz uma sada. Introduz uma nova linha, que inicia na coluna chamada. Introduz nova linha. Retorno de carro. Mostra so o que esta a direita dele. Tabulacao horizontal. Tabulacao vertical. Caractere cujo codigo ASCII e nnn (octal). Caractere cujo hexadecimal e nn.

\\ \a \b \c \f \n \r \t \v \0nnn \xnn

Salviano A. Leao 66

Comando fmt

E um formatador de paragrafos simples, podendo adicionar ou remover quebra de linhas e espacos, para que o texto seja mantido dentro do numero maximo de colunas especcas. O resultado e sempre enviado a sada padrao, ou seja, ao terminal. Sua sintaxe e a seguinte:
fmt [ - WIDTH ] [ OPCOES ]... [ ARQUIVO ]...

As opcoes sao: -c, - -crown-margin Preserva a indentacao das duas primeiras linhas. -p, - -prex=STRING So reformata as linhas que iniciam com a palavra STRING, reanexando o prexo as linhas formatadas. -s, - -split-only Quebra linhas longas, mas nao preenche o texto. -t, - -tagged-paragraph Indentacao da primeira linha diferente da segunda. -u - -uniform-spacing Um espaco entre as palavras, e dois apos as sentencas. -w, width=WIDTH Largura maxima das linhas, o valor padrao e 75 colunas.

Salviano A. Leao 67

Seguranca de acesso aos arquivos

chown Comando para alterar o dono; chgrp Comando para alterar o grupo; chmod comando para alterar as permissoes;

Salviano A. Leao 68

Permissoes no linux

No Linux, como em outros sistemas Unix, cada arquivo tem uma permissao. As permissoes sao atributos dos arquivos que especica se ele pode ser lido, executado ou escrito. Estas permissoes denem o que um usuario pode fazer. Para saber se um programa e executavel ou nao, execute um ls -l e veja no lado esquerdo se o arquivo tem X nos seus argumentos, como no exemplo abaixo:
$ ls -al drwxr-xr-x drwxr-xr-x drwx-----drwx-----drwx-----drwx-----drwx-----drwx-----drwx-----drwx-----drwx-----drwx-----drwx------rw-r--r--rw-r--r-lrwxrwxrwx 2 2 3 2 2 2 2 2 2 2 2 2 2 1 1 1 root salviano salviano salviano salviano salviano gdm root salviano salviano gdm salviano salviano salviano salviano salviano root salviano salviano salviano salviano salviano gdm root salviano salviano gdm salviano salviano users backup salviano 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 4,0K 13 13 5 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 2010-06-08 09:53 11:10 08:48 08:31 13:46 13:08 08:31 13:41 13:46 11:06 08:31 08:31 08:31 13:44 13:46 14:07 hsperfdata_root/ hsperfdata_salviano/ kde-salviano/ keyring-kecE07/ ksocket-salviano/ mc-salviano/ orbit-gdm/ orbit-root/ orbit-salviano/ plugtmp/ pulse-PKdhtXMmr18n/ pulse-xmEMNrxCFrAT/ ssh-yHcbLv1559/ test1 test2 testx -> test2

Salviano A. Leao 69

Dono, grupo e permissao

Arquivo hsperfdata root/ hsperfdata salviano/ kde-salviano/ keyring-kecE07/ ksocket-salviano/ mc-salviano/ orbit-gdm/ orbit-root/ orbit-salviano/ plugtmp/ pulse-PKdhtXMmr18n/ pulse-xmEMNrxCFrAT/ ssh-yHcbLv1559/ test1 test2 testx

Dono root salviano salviano salviano salviano salviano gdm root salviano salviano gdm salviano salviano salviano salviano salviano

Grupo root salviano salviano salviano salviano salviano gdm root salviano salviano gdm salviano salviano users backup salviano

Permissoes drwxr-xr-x drwxr-xr-x drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - drwx- - - - - -rw-r- -r- -rw-r- -r- lrw-r- -r- -

Salviano A. Leao 70

Como vemos as permissoes de cada arquivo/diretorio sao representadas por uma serie de letras r, w, x, l ou d! Vamos ver o que representa cada uma delas:

Permiss~es o drwxrwxrwx 0111222333

=> => =>

tipo d 0

dono grupo todos rwx rwx rwx 111 222 333

No caso acima, a primeira coluna (numero 0) indica se o nome listado e um diretorio, um link ou um arquivo. Se for um diretorio ele tera o caractere d, se for um link um caractere l e por ultimo se for um arquivo regular tera o smbolo -. Portanto, de acordo com nossa tabela anterior, o arquivo testx e um link, test1 e test2 sao arquivos e o restante diretorios.

Salviano A. Leao 71

Outros tipos

Tambem ha casos em que no lugar do d, aparecem outras letras que indicam outros tipos de arquivos. A letra l signica que e um link simbolico, as letras c e b ` correspondem a dispositivos (/dev). Veja alguns exemplos abaixo: $ ls -al /dev/ lrwxrwxrwx 1 root root 3 2010-06-08 08:29 scd0 -> sr0 0 brw-rw---1 root disk 8, 0 2010-06-08 08:29 sda 0 brw-rw---1 root disk 8, 1 2010-06-08 08:29 sda1 0 brw-rw---1 root disk 8, 2 2010-06-08 08:29 sda2 0 brw-rw---1 root disk 8, 3 2010-06-08 08:54 sda3 0 brw-rw---1 root disk 8, 4 2010-06-08 08:29 sda4 0 brw-rw---1 root disk 8, 5 2010-06-08 08:29 sda5 0 brw-rw---1 root disk 8, 6 2010-06-08 08:29 sda6 0 brw-rw---1 root disk 8, 7 2010-06-08 08:29 sda7 0 brw-rw---1 root disk 8, 16 2010-06-08 08:29 sdb 0 crw-rw---1 root disk 21, 0 2010-06-08 08:29 sg0 0 crw-rw---1 root cdrom 21, 1 2010-06-08 08:29 sg1 0 crw-rw---1 root disk 21, 2 2010-06-08 08:29 sg2 0 drwxrwxrwt 2 root root 200 2010-06-08 13:40 shm/

Salviano A. Leao 72

Permissoes do dono

No exemplo aseguir, mostra-se um diretorio do sistema:


drwxr-xr-x 2 root root 4096 2010-04-28 13:51 bin |----------> Contm a letra d na primeira coluna, um diretrio e e o

Agora vamos examinar a coluna do dono (a dos numeros 1), que mostra as permissoes que o dono do arquivo possu. Por exemplo considere o arquivo
-rwxr--r-- 1 salviano users 13 ||\--> salviano, dono do arquivo |\---> salviano, dono do arquivo \----> salviano, dono do arquivo 2010-06-08 13:44 test1 pode executar o arquivo, x=executable! pode gravar no arquivo, w=writable! pode ler o arquivo, r=readable!

Agora vamos examinar a coluna do grupo (a dos numeros 2), que mostra as permissoes que o grupo do dono do arquivo possu. Por exemplo considere o arquivo:
-r--rwxr-| |||\-> | ||\--> | |\---> | \----> \-------> 1 salviano backup 13 2010-06-08 13:46 test2 Todo mundo pode ler o arquivo Grupo dono do arquivo (backup) pode executar o arquivo Grupo dono do arquivo (backup) pode gravar no arquivo Grupo dono do arquivo (backup) pode ler o arquivo Dono do arquivo (salviano) pode ler o arquivo

Salviano A. Leao 73

Permissoes de outros

Por sua vez a coluna que representa todos os outros usuarios do sistema (composta pelos numeros 3), refere as permissoes para todos os outros usuarios do sistema, sem ser o dono e os participantes do grupo-do-dono do mesmo. Considere por exemplo:
-r--r--rwx 1 | | ||\--> | | || | | |\---> | | | \--\--\----> salviano backup Todos os usurios a grupo backup) tem Todos os usurios a grupo backup) tem Todos os usurios a 13 2010-06-08 13:46 test2 (exceto salviano e usurios do a permiss~o para executar o arquivo! a (exceto salviano e usurios do a permiss~o para gravar no arquivo! a tem permiss~o para ler o arquivo! a

Ao referir a um diretorio o sinalizador x (executavel) diz se o diretorio esta ou nao acessvel, ja que so se pode EXECUTAR diretorios... Exemplo:
drwxr--r-- 1 ||||| \---> ||||| ||||| ||||\------> |||| |||\-------> ||\--------> |\---------> \----------> root root 13 2010-06-08 13:46 Lixao Todos os podem ler o contedo do diretrio, mas n~o u o a podem usar o comando cd para entrar nele, pois n~o a h o sinalizador x para a quarta coluna. a O grupo root pode ler o contedo do diretrio, u o mas n~o pode usar cd para entrar no diretrio. a o O root pode usar cd para entrar no diretrio. o O root pode gravar arquivos nesse diretrio. o O root pode ler o interior desse diretrio. o Indica que o nome listado um diretrio. e o

Salviano A. Leao 74

Comando chmod

O comando chmod pode ser usado para mudar os sinalizadores rwx dos arquivos e/ou diretorios, a sintaxe basica do comando e:
chmod [ ugoa ]{ -+}[ rwx ] n o m e _ d o _ a r q u i v o _ o u _ d ir e to r io

Exemplo: Para mudar a permissao do arquivo (u=user) para o dono poder ler e gravar (rw) no arquivo1.txt, digite:
$ chmod u + rw arquivo1 . txt

Para desfazer o comando a troca de permissoes anteriores, digite:


$ chmod u - rw arquivo1 . txt

Os sinais + e denem se as permisoes serao ativadas ou desativadas. Por exemplo,


$ chmod a+r arquivo2.txt -----> Todos (a=all) podem ler o arquivo2.txt $ chmod o+w arquivo3.txt -----> Outros usurios (o=others) sem ser o dono e o a grupo dono do arquivo, podem gravar no arquivo3.txt $ chmod g+x MeuScript -----> Grupo-dono do arquivo (g=group) pode executar o arquivo MeuScript
Salviano A. Leao 75

Exemplo do comando chmod

O comando chmod pode tambem ser usado com numeros, em vez dos ags. Este metodo e chamado de octal, veja o exemplo abaixo:
$ chmod -c 664 arquivo . txt

Representacao octal Numero Combinacao Signicado Nenhuma permissao Permissao para executar Permissao para gravar Permissao para gravar e executar Permissao para ler Permissao para ler e executar Permissao para ler e gravar Permissao para ler, gravar e executar

0 1 2 3 4 5 6 7

1+2 4+1 4+2 4+2+1

Salviano A. Leao 76

Exemplo

$ chmod -c 664 arquivo . txt

O comando acima muda as permissoes do arquivo.txt, dando permissoes de leitura e escrita ao seu dono (o numero 6 na primeira coluna), de leitura e escrita aos usuario que pertencem ao mesmo grupo-dono (o numero 6 na segunda coluna) e de leitura a todos os outros usuarios do sistema (o numero 4 na ultima coluna). O comando chown e simples e pode ser usado para mudar o dono e o grupo-dono de um arquivo/diretorio. Ele e usado da seguinte forma:
$ $ $ $ chown chown chown chown -c usuario . grupo a r q u i v o _ o u _ d i re to ri o usuario : grupo a r q u i v o _ o u _ d i re to ri o salviano . users test2 - cR salviano . salviano / home / salviano

Salviano A. Leao 77

Manipulando data e hora

date Mostra ou altera a data e hora do sistema; Formato %a %A %b %B %c %y %Y %m %d %j %H %M %S %s %r %R %% %t %n cal Mostra um calendario Descricao Nome do dia da semana abreviado (Dom..Sab) Nome do dia da semana (Domingo..Sabado) Nome do mes abreviado (Jan..Dez) Nome do mes (Janeiro..Dezembro) Data completa (Sat Nov 04 12:02:33 EST 1989) Ano (dois dgitos) Ano (quatro dgitos) Mes (01..12) Dia (01..31) Dia do ano (001..366) Horas (00..23) Minutos (00..59) Segundos (00..60) Segundos desde 1o de Janeiro de 1970 Expressa o dia em multiplos de 12 hora (exemplo, 11:11:04 PM) Dia com 24 horas, o mesmo que %H:%M Um % literal Um TAB Uma quebra de linha

Salviano A. Leao 78

Fazendo backups

tar Cria um arquivo, que e formado pela sequencia dos outros, em la. Ele nao usa nenhum algooritmo de compactacao. compress Compactador uncompress Descompactador do compress. zcat Comprime ou expande arquivos comprimidos. gzip Comprime gunzip Expande arquivos comprimidos co gzip. bzip2 Comprime ou expande arquivos comprimidos.

Salviano A. Leao 79

Comando tar

E utilizado para agrupar e desagrupar arquivos e diretorios em um anico arquivo ou dispositivo fsico, como disquetes e tas. Estes dispositivos variam de sistema para sistema. A sua sintaxe e
tar { - c | - x | - t } [ - v ] [ - f { dispositivo | arqv1 }] { arqv2 | diretorio }

onde dispositivo e o arquivo de dispositivo do sistema, arqv1 e o nome do arquivo do agrupamento, arqv2 e o nome do arquivo a ser agrupado e diretorio e o nome do diretorio a ser agrupado.

Salviano A. Leao 80

Comando tar: opcoes

-A Une ao nal de um arquivo tar um outro arquivo tar; -c Cria um novo arquivo; -d Encontra as diferencas existentes entres os arquivos compactados e os do sistema; - -delete Apaga um arquivo do compactado; -f Indica o nome do arquivo nal (que sera o arquivo compactado); -t Lista o conteudo do arquivo; -r Adiciona arquivos ao ja existente; -u Adiciona somente arquivos com data mais recente do que a do arquivo que estiver no arquivo compactado; -x Descompacta o arquivo; -v Mostra os arquivos que estao sendo processados; -j Filtra o arquivo a ser processado com bzip2/bunzip2; -z Filtra o arquivo a ser processado com gzip/gunzip.
Salviano A. Leao 81

Exemplos do Comando tar

Para agrupar dois ou mais arquivos em um unico arquivo:


$ tar - cvf programas . tar prog . c prog2 . c

Para agrupar o diretorio de trabalho e seus sub-diretorios em um unico arquivo:


$ tar - cvf tudo . tar *

Para agrupar dois arquivos tar, unindo ao primeiro arquivo o segundo


$ tar - Af primeiro . tar segundo . tar

Para desagrupar todos os arquivos de um arquivo criado pelo comando:


$ tar - xvf programas . tar

Para desagrupar um arquivo especco de um arquivo criado pelo comando:


$ tar - xvf programas . tar prog2 . c

Salviano A. Leao 82

exemplo do tar

Para desagrupar varios arquivos de um arquivo criado pelo comando:


$ tar - xvf tudo . tar prog . c bin /* doc / prog . txt

Para listar os arquivos agrupados em um arquivo criado pelo comando:


$ tar - tvf programas . tar

Para vericar se um arquivo esta agrupado no arquivo criado pelo comando:


$ tar - tvf programa . tar prog2 . c

Para agrupar arquivos no dispositivo padrao:


$ tar - cv *

Para desagrupar todos os arquivos do dispositivo padrao:


$ tar - xv

Para listar os arquivos do dispositivo padrao:


$ tar - tv
Salviano A. Leao 83

Usando o tar para fazer backups

O comando tar pode ser usado para copiar arquivos mantendo-se as permissoes originais e os donos, tanto localmente quanto atraves da rede. Para realizar esta copia localmente:
$ tar cvf - [ origem ] | ( cd [ destino ]; tar xvf - )

Para realizar a copia remotamente:


$ tar cvf - [ origem ] | rsh [ sistema remoto ] ( cd [ destino ]; tar

Para duplicar um diretorio


$ ( cd [ origem ]; tar cf - * ) | tar xvfB -

Copia rapida de arquivos


$ ( cd ../ origem /; tar cf - . ) | tar xvf -

Salviano A. Leao 84

Incluindo a data no backup

A seguir mostramos alguns exemplos de como incluir a data atual no nome do arquivo tar. Neste exemplo, sera criado um tar do diretorio ~/Dados, com o nome de Backup dados data.tar.gz:
$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y)".tar.gz ~/Dados Backup_dados_08.Jun.2010.tar.gz $ tar -zcvf Backup_dados_"$(date +%d%m%y)".tar.gz ~/Dados Backup_dados_080610.tar.gz

Vamos incluir tambem a hora e minutos, nao utilize :como separador porque e um simbolo nao valido em nome de arquivos, exemplos:
$ tar -zcvf Backup_dados_"$(date +%d.%b.%Y-%H-%M)".tar.gz ~/Dados Backup_dados_08.Jun.2010-23-41.tar.gz

Salviano A. Leao 85

Sincronizacao de Conteudo com rsync

Um metodo rapido e versatil de fazer copias locais e remotas. a sua sintaxe e:


Local : rsync [ OPCOES ...] FONTE ... [ DESTINO ]

Para transferir de via rede a sintaxe e a seguinte:


Envia : Recebe : rsync [ OPCOES ...] FONTE ... [ USER ] @ [ HOST ]:[ DESTINO ] rsync [ OPCOES ...] [ USER ] @ [ HOST ]: FONTE [ DESTINO ]

Vejamos alguns exemplos:


$ rsync - avz -e ssh polaron . ufg . br :/ home / salviano .

O comando acima ira copiar, no diretorio corrente, todo o diretorio chamado /home/salviano. Ja o comando
rsync - avz -e ssh polaron . ufg . br :/ home / salviano / .

ira copiar apenas o conteudo do diretorio /home/salviano O comando usa o ssh com a porta 22.
rsync - apvrz -- progress -- links -- rsh = / usr / bin / ssh - p22 polaron . ufg . br :/ home / salviano / .

Salviano A. Leao 86

rsync: signicado de algumas diretivas

-a - archive, basicamente indica que voce quer que a copia seja recursiva e que tudo seja preservado (links simbolicos, por exemplo); -v - verbose, escreva tudo que estiver fazendo; -z - compactar os arquivos transferidos; -e - especca o shell remoto a ser usado, no nosso caso, ssh, o que garante que os dados serao transmitidos usando criptograa; -p Preserva as permissoes. Ele copia apenas o que mudou na arvore de diretorios. De um arquivo modicado ele ira transferir apenas o blocos novos ou alterados.

Antes de transferir os dados, faz uma comparacao do arquivo na origem e no destino. Os arquivos sao quebrados em segmentos e os seus checksums sao comparados. Os pedacos cujos checksums forem diferentes sao transmitidos.
O rsync pode ser usado para espelhar uma maquina.

Salviano A. Leao 87

Processos no Linux

O que apresentaremos a seguir foi adaptado da seguinte pagina http://www.infowester.com/linprocessos.php . Nos sistemas operacionais, um processo e a forma de representar um programa em execucao. E o processo que utiliza os recursos do computador - processador, memoria, etc - para a realizacao das tarefas para as quais a maquina e destinada. O sistema operacional lida com uma innidade de processos e, por isso, e necessario ter meios que permitam controla-los. Para isso, os processos contam com um conjunto de caractersticas, dentre as quais: Proprietario do processo;

Estado do processo (em espera, em execucao, etc); Prioridade de execucao;


Recursos de memoria.

Salviano A. Leao 88

Quanto aos prcessos temos

Cada processo possu um dono e um PID (Process Identier), um numero de identicacao que o sistema da a cada processo. Para cada novo processo, um novo numero deve ser atribudo, ou seja, nao se pode ter um unico PID para dois ou mais processos ao mesmo tempo.
Os sistemas baseados em Unix precisam que um processo ja existente se duplique para que a copia possa ser atribuda a uma tarefa nova. Quando isso ocorre, o processo copiadorecebe o nome de processo pai, enquanto que o novo e denominado processo lho. E nesse ponto que o PPID (Parent Process Identier) passa a ser usado: o PPID de um processo nada mais e do que o PID de seu processo pai.

Salviano A. Leao 89

Os UID e GID

Cada processo precisa ter um proprietario, pois so assim o sistema sabera, atraves das permissoes fornecidas pelo proprietario, quem pode e quem nao pode executar o processo em questao. Para lidar com os donos, o sistema usa os numeros UID e GID. O Linux gerencia os usuarios e os grupos atraves de numeros conhecidos como UID (User Identier) e GID (Group Identier). Como e possvel perceber, UID sao numeros de usuarios e GID sao numeros de grupos. Os nomes dos usuarios e dos grupos servem apenas para facilitar o uso humano do computador. Cada usuario precisa pertencer a um ou mais grupos. Como cada processo (e cada arquivo) pertence a um usuario, logo, esse processo pertence ao grupo de seu proprietario. Assim sendo, cada processo esta associado a um UID e a um GID.

Os numeros UID e GID variam de 0 a 65536. Dependendo do sistema, o valor limite pode ser maior. No caso do usuario root, esses valores sao sempre 0 (zero). Assim, para fazer com que um usuario tenha os mesmos privilegios que o root, e necessario que seu GID seja 0.

Salviano A. Leao 90

Sinais de processos

Os sinais sao meios usados para que os processos possam se comunicar e para que o sistema possa interferir em seu funcionamento. Por exemplo, se o usuario executar o comando kill para interromper um processo, isso sera feito por meio de um sinal.

Quando um processo recebe um determinado sinal e conta com instrucoes sobre o que fazer com ele, tal acao e colocada em pratica. Se nao houver instrucoes pre-programadas, o proprio Linux pode executar a acao de acordo com suas rotinas.

Salviano A. Leao 91

Alguns sinais comuns

STOP esse sinal tem a funcao de interromper a execucao de um processo e so reativa-lo apos o recebimento do sinal CONT; CONT esse sinal tem a funcao de instruir a execucao de um processo apos este ter sido interrompido; SEGV esse sinal informa erros de enderecos de memoria; TERM esse sinal tem a funcao de terminar completamente o processo, ou seja, este deixa de existir apos a nalizacao; ILL esse sinal informa erros de instrucao ilegal, por exemplo, quando ocorre divisao por zero; KILL esse sinal tem a funcao de matarum processo e e usado em momentos de criticidade. Os comando kill, kilall e pkill sao comandos que o usuario pode usar para enviar um sinal qualquer sinal para o sistema, porem, se ele for usado de maneira isolada, ou seja, sem o parametro de um sinal, o kill por padrao executa o sinal TERM.

Salviano A. Leao 92

Comando kill

Ele envia um sinal para um processo do sistema. A sua sintaxe e


$ kill - SINAL PID

Como exemplo, vamos supor que voce deseja interromper temporariamente a execucao 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 numero -1 no lugar do PID. Por exemplo:
$ kill - STOP -1

Salviano A. Leao 93

Comando kill listando sinais

O comando
$ kill -l 1) SIGHUP 6) SIGABRT 11) SIGSEGV 16) SIGSTKFLT 21) SIGTTIN 26) SIGVTALRM 31) SIGSYS 38) SIGRTMIN+4 43) SIGRTMIN+9 48) SIGRTMIN+14 53) SIGRTMAX-11 58) SIGRTMAX-6 63) SIGRTMAX-1 2) 7) 12) 17) 22) 27) 34) 39) 44) 49) 54) 59) 64) SIGINT SIGBUS SIGUSR2 SIGCHLD SIGTTOU SIGPROF SIGRTMIN SIGRTMIN+5 SIGRTMIN+10 SIGRTMIN+15 SIGRTMAX-10 SIGRTMAX-5 SIGRTMAX 3) 8) 13) 18) 23) 28) 35) 40) 45) 50) 55) 60) SIGQUIT SIGFPE SIGPIPE SIGCONT SIGURG SIGWINCH SIGRTMIN+1 SIGRTMIN+6 SIGRTMIN+11 SIGRTMAX-14 SIGRTMAX-9 SIGRTMAX-4 4) 9) 14) 19) 24) 29) 36) 41) 46) 51) 56) 61) SIGILL SIGKILL SIGALRM SIGSTOP SIGXCPU SIGIO SIGRTMIN+2 SIGRTMIN+7 SIGRTMIN+12 SIGRTMAX-13 SIGRTMAX-8 SIGRTMAX-3 5) 10) 15) 20) 25) 30) 37) 42) 47) 52) 57) 62) SIGTRAP SIGUSR1 SIGTERM SIGTSTP SIGXFSZ SIGPWR SIGRTMIN+3 SIGRTMIN+8 SIGRTMIN+13 SIGRTMAX-12 SIGRTMAX-7 SIGRTMAX-2

Cada sinal possu um numero associado a ele, assim se desejamos matar o processo 4220, fazemos
$ kill -9 4220

Agora, imagine que voce nao saiba qual o PID de um processo, neste caso, pode-se usar o comando killall, desde que voce saiba o nome do processo. A sintaxe e:
killall - SINAL nome - do - processo

ou ainda, podemos usar o pkill


pkill - SINAL nome - do - processo

Por exemplo:
killall - STOP vi
Salviano A. Leao 94

Estado dos processos

Quando um processo e criado, isso nao signica que ele sera imediatamente executado. Alem disso, determinados processos podem ser temporariamente paralisados para que o processador possa executar um processo prioritario. Isso quer dizer que os processos, em certos momentos, podem estar em situacoes de execucao diferentes. O Linux trabalha, essencialmente, com quatro tipos de situacao, isto e, estados: Executavel o processo pode ser executado imediatamente; Dormente o processo precisa aguardar algo ocorrer para ser executado. So apos esse algo ocorrere que ele passa para o estado executavel; Zumbi o processo e considerado morto, mas, por alguma razao, ainda existe; Parado o processo esta congelado, ou seja, nao pode ser executado.

Salviano A. Leao 95

Vericando processos com o ps

Esse comando informa quais os processos em execucao atualmente, quais os UIDs e PIDs correspondentes, entre outros. As opcoes mais importantes desse comando sao os seguintes: -a Mostra todos os processos existentes; -e Exibe as variaveis de ambiente relacionadas aos processos; -f Exibe a arvore de execucao dos processos; -l Exibe mais campos no resultado; -m Mostra a quantidade de memoria ocupada por cada processo; -u Exibe o nome do usuario que iniciou determinado processo e a hora em que isso ocorreu; -x Exibe os processos que nao estao associados a terminais; -w Se o resultado de processo nao couber em uma linha, essa opcao faz com que o restante seja exibido na linha seguinte.

Salviano A. Leao 96

Exemplo do ps

Por exemplo:
$ ps aux USER PID %CPU %MEM root 1 0.0 0.0 root 2 0.0 0.0 root 3 0.0 0.0 root 4 0.2 0.0 root 5 0.0 0.0 root 6 0.0 0.0 root 7 0.0 0.0 root 8 0.0 0.0 root 9 0.0 0.0 root 10 0.0 0.0 root 11 0.0 0.0 root 12 0.0 0.0 root 13 0.0 0.0 $ ps alx F UID PID 4 0 1 1 0 2 1 0 3 1 0 4 5 0 5 1 0 6 1 0 7 5 0 8 1 0 9 1 0 10 5 0 11 1 0 12 1 0 13 VSZ 23692 0 0 0 0 0 0 0 0 0 0 0 0 RSS 1960 0 0 0 0 0 0 0 0 0 0 0 0 TTY ? ? ? ? ? ? ? ? ? ? ? ? ? STAT Ss S S S S S S S S S S S S START 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 08:13 TIME 0:00 0:00 0:00 0:26 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 COMMAND /sbin/init [kthreadd] [migration/0] [ksoftirqd/0] [watchdog/0] [migration/1] [ksoftirqd/1] [watchdog/1] [migration/2] [ksoftirqd/2] [watchdog/2] [migration/3] [ksoftirqd/3]

PPID 0 0 2 2 2 2 2 2 2 2 2 2 2

PRI NI 20 0 20 0 -100 20 0 -100 -100 20 0 -100 -100 20 0 -100 -100 20 0

VSZ 23692 0 0 0 0 0 0 0 0 0 0 0 0

RSS 1960 0 0 0 0 0 0 0 0 0 0 0 0

WCHAN poll_s kthrea migrat ksofti watchd migrat ksofti watchd migrat ksofti watchd migrat ksofti

STAT Ss S S S S S S S S S S S S

TTY ? ? ? ? ? ? ? ? ? ? ? ? ?

TIME 0:00 0:00 0:00 0:27 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00

COMMAND /sbin/init [kthreadd] [migration/0] [ksoftirqd/0] [watchdog/0] [migration/1] [ksoftirqd/1] [watchdog/1] [migration/2] [ksoftirqd/2] [watchdog/2] [migration/3] [ksoftirqd/3]

Salviano A. Leao 97

Descricao dos campos de sada do ps

USER nome do usuario dono do processo; UID Numero de identicacao do usuario dono do processo; PID Numero de identicacao do processo; PPID Numero de identicacao do processo pai; %CPU Porcentagem do processamento usado; %MEM Porcentagem da memoria usada; VSZ Indica o tamanho virtual do processo; RSS Sigla de Resident Set Size, indica a quantidade de memoria usada (em KB); TTY Indica o identicador do terminal do processo; START Hora em que o processo foi iniciado; TIME Tempo de processamento ja consumido pelo processo; COMMAND Nome do comando que executa aquele processo; PRI Valor da prioridade do processo;
Salviano A. Leao 98

NI Valor preciso da prioridade (geralmente igual aos valores de PRI); WCHAN Mostra a funcao do kernel onde o processo se encontra em modo suspenso; STAT Indica o estado atual do processo, sendo representado por uma letra: R executavel; 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.

Salviano A. Leao 99

Vericando processos com o top

O comando ps trabalha como se tirasse uma fotograa da situacao dos processos naquele momento. O comando top, por sua vez, coleta as informacoes, mas as atualiza regularmente. Geralmente essa atualizacao ocorre a cada 10 segundos. A sintaxe do comando top e a seguinte:
top - opcao

Entre as opcoes, tem-se as que se seguem: -d n atualiza o top apos n segundos. -c Exibe a linha de comando ao inves do nome do processo; -i Faz o top ignorar processos em estado zumbi; -s Executa o top em modo seguro. E possvel manipular alguns recursos do comando top atraves das teclas do teclado. Por exemplo, para atualizar imediatamente o resultado exibido, basta pressionar a tecla de espaco. Se pressionar a tecla q, o top e nalizado. Pressione a tecla h enquanto estiver utilizando o top para ver a lista completa de opcoes e teclas de atalho.

Salviano A. Leao 100

Controle de processos

Para se ter ainda mais controle sobre os processos executados no Linux, pode-se utilizar os seguintes comandos: jobs mostra os processos que estao parados ou executando em segundo plano (background). Quando um processo esta nessa condicao, signica sua execucao e feita pelo kernel sem que esteja vinculada a um terminal, ou seja, ele e executado enquanto o usuario usa outros comandos e aplicativos. A sua sintaxe e: -l lista os processos atraves do PID; -r lista apenas os processos em execucao; -s lista apenas os processos parados. No incio da linha ele mostra um numero entre colchetes, o qual indica a ordem do processo usada pelo jobs.

Salviano A. Leao 101

Primeiro plano e segundo plano

fg e bg ele enviam um processo respectivamente para o primeiro plano (foreground) e segundo plano (background). 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 + numero

ou ainda
$ bg % numero

O numero mencionado corresponde ao valor de ordem informado no incio da linha quando o comando jobs e usado. Quanto ao comando fg, a sintaxe e a mesma:
$ fg + numero

Salviano A. Leao 102

Comando fuser

O comando fuser mostra qual processo faz uso de um determinado arquivo ou diretorio. Sua sintaxe e:
fuser - opcao caminho ( do arquivo ou diretorio )

Entre as opcoes, tem-se: -k naliza o processo que utiliza o arquivo/diretorio em questao; -i deve ser usada em conjunto com a opcao k e serve para perguntar se a nalizacao do processo deve ser feita; -u mostra o proprietario do processo; -v o resultado e mostrado em um padrao de exibicao semelhante ao comando ps.

Salviano A. Leao 103

Comando pstree

Esse comando mostra processos relacionados em formato de arvore. Sua sintaxe e:


pstree - opcao PID

Entre as opcoes, tem-se: -u mostra o proprietario do processo; -p exibe o PID apos o nome do processo; -c mostra a relacao de processos ativos; -G usa determinados caracteres para exibir o resultado em um formato graco. Um detalhe importante: se ao digitar o comando pstree o PID nao for informado, todos os processos serao listados.

Salviano A. Leao 104

Comandos de controle de execucao

nohup Esse comando possibilita ao processo car ativo mesmo quando o usuario faz logout. E da natureza dos sistemas baseados em Unix interromper processos caso seu proprietario nao esteja mais ativo, por isso, o nohup pode ser muito util. Sua sintaxe e:
nohup comando

time Determina a quantidade de tempo consumida durante a execucao de um determinado comando mais outras informacoes. Por exemplo,
$ time ls total 3,0M 4,0K Aula_prosper.tex 8,0K bash.tex 20K Comandos_Basicos.tex 20K Comandos_Basicos.tex.backup 4,0K IntroBash/ 4,0K linux-pauloaguiar/ real user sys 0m0.003s 0m0.000s 0m0.010s

24K lista-de-comandos.tex 8,0K Lista_dos_comando_basicos.tex 4,0K lista_tabelas 4,0K lista-verbatim01.tex 4,0K Makefile 36K Notas_01.tex

Salviano A. Leao 105

Executando tarefas agendadas

at e batch agenda tarefas a serem executadas pelo sistema. atq lista as tarefas agendadas com o comando at. atrm remove tarefas agendadas. cron O cron pode ser interpretado como um servico do Linux que e carregado durante o processo de boot do sistema. Trata-se de uma ferramenta que permite programar a execucao de comandos e processos de maneira repetitiva ou apenas uma unica vez. crontab editor de tarefas do cron.

Salviano A. Leao 106

Comandos especiais

paste junta linhas de um arquivo, de forma que a linha reultante consistira das correntes linhas de cada arquivo, separadas por um delimitador especicado, caso contrario sera o TAB. Alguns de seus arqumentos sao -d, delimiters=LIST Use os caracteres da lista em vez do TAB. -s, serial paste one le at a time instead of in parallel cut remove sections from each line of les Print selected parts of lines from each FILE to standard output. Mandatory arguments to long options are mandatory for short options too. -b, bytes=LIST select only these bytes -c, characters=LIST select only these characters -d, delimiter=DELIM use DELIM instead of TAB for eld delimiter -f, elds=LIST select only these elds; also print any line that contains no delimiter character, unless the -s option is specied -n (ignored) complement complement the set of selected bytes, characters or elds -s, only-delimited do not print lines not containing delimiters
Salviano A. Leao 107

Comandos para navegacao

curl wget lynx elinks

Salviano A. Leao 108

O Shell

Shell ou interpretador Programas e comandos Ncleo ou Kernel Hardware

Salviano A. Leao 109

Shell Script Basico

Sera que funciona? Um script mnimo em Bash, com apenas duas linhas, pode ser visto abaixo
#!/ bin / bash echo " Hello , World ! "

A primeira linha indica que o shell Bash sera usado para interpretar o script e, embora nao seja obrigatoria, sua inclusao e considerada uma boa pratica. Tanto, que se atribuiu a denominacao carinhosa de sha-boomaos seus dois primeiros caracteres, denotando algo que se pode traduzir para o portugues como o incio de um passe de magica. A segunda linha contem a unica acao que sera realmente executada, e que resultara na exibicao do texto Hello, World!no terminal.

Salviano A. Leao 110

Pipes

Pipes representam um conceito da famlia Unix de sistemas operacionais atraves do qual se possibilita que a sada de um programa seja usada como a entrada de outro.
#!/ bin / bash ls -l | sed -e " s /[ aeio ]/ u / g "

O trecho de script acima faz uso de um pipe. Ele pode ser entendido da seguinte maneira: o comando ls -l e executado e sua sada, ao inves de exibida no terminal, e enviada para o programa sed que manipula o texto da forma que lhe e conveniente.

Salviano A. Leao 111

Variaveis

Variaveis em Bash podem ser usadas da mesma maneira que se costuma usa-las na maioria das linguagens de programacao, com duas distincoes. A primeira delas refere-se ao fato de que em Bash, nao e necessario declarar variaveis. A simples atribuicao de um valor para um nome resulta na alocacao de uma variavel com aquele nome. Segundo, as variaveis nao sao tipadas. O que signica que uma mesma variavel pode conter, em momentos distintos, valores de tipos diferentes. Assim, o script abaixo e perfeitamente valido. Note a ausencia obrigatoria de espacos entre o nome da variavel e o operador de atribuicao.
#!/ bin / bash var = " Hello , World ! " echo $var var =10 echo $var

Salviano A. Leao 112

Você também pode gostar