Sapo sessions linux power tools
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Sapo sessions linux power tools

  • 961 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
961
On Slideshare
961
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SAPO Sessions Linux Power Tools Armando Reis - DTP3
  • 2. Linux Power Tools
    • 'Power tools' são ferramentas, comandos ou utilitários, que nos permitem maior eficácia/rapidez/automatismo na execução de tarefas.
    • Significam diferentes coisas para diferentes pessoas.
  • 3. s hell – A primeira 'power tool'
    • A shell é a primeira interface com o sistema;
    • Seja qual for a vossa shell preferida aprendam a tirar partido dela.
    • Goodies: command completion, command line editing...
    • builtins – Existem vários comandos embutidos na própria shell.
  • 4. shell builtins (bash)
    • bash defines the following built-in commands:
    • :, ., [, alias, bg, bind, break, builtin, case, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, fc, fg, getopts, hash, help, history, if, jobs, kill, let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, type, typeset, ulimit, umask, unalias, unset, until, wait, while.
    • Alguns ficheiros para visitar...
    • .bash_profile
    • .bashrc
    • .bash_aliases
    • .bash_history
  • 5. man – man is your friend
    • O comando ' man ' permite aceder às páginas do manual.
    • Contém a descrição de cada comando, com a sua função, parâmetros e qualificadores.
    • $ man man <- a 'manpage' do próprio comando man.
    • $ apropos
    • $ info
  • 6. alias
    • alias [-p] [name[=value] ... ]
    • Permite definir nomes que serão interpretados pela shell e substituídos pelo valor;
    • $ alias SSH=”eval 'ssh-agent -s'; ssh-add”
    • $ alias ll=”ls -l”
  • 7. Text processing tools
    • awk ; sed ; tr ...
    • Originalmente desenvolvidos no âmbito do UNIX , foram mais tarde re-escritas pelo projecto GNU .
    • Existem na distribuição base de qualquer linux comum.
  • 8. Text processing – awk I
    • Pattern scanning and text processing language
    • O awk processa um ' ficheiro ' de input.
    • Avalia o input ' record ' a 'record' procurando 'padrões'
    • Se o ' padrão ' existir executa os ' comandos ' associados.
    • Cada record pode ter vários ' fields ' - $1...$n
    • Variáveis especiais: $0 ; NR; RS; NF; FS; OFS ...
    • Padrões pré-definidos: <nada>; BEGIN; END;
  • 9. Text processing – awk II
    • Formas mais comuns
    • $ awk 'pattern {program}' file
    • $ cat file | awk 'pattern {program}'
    • $ awk -f program-file input-file
    • O ficheiro program-file conterá os padrões e expressões que constituem o nosso 'programa'.
  • 10. Text processing – awk III
    • Padrões.
    • Podem ser strings, regexps...
    • /string/ - Valida a string “string”.
    • /[0-9]+/ - Valida se existem dígitos.
    • Podem referenciar campos /$1/
    • Podem usar && e ||
      • ( $1 == “foo” ) && ( $2 == “bar” ) { print }
  • 11. Text processing – awk IV
    • Programa.
    • São as instruções a serem executadas.
    • São muitas instruções e operadores entre os quais:
    • print; print0;
    • = +=...
    • == < > <=
    • (e muita coisa familiar para quem usa C)
    • Suporta ARRAYS...
  • 12. Text processing – awk V
    • Exemplo simples:
    • $ cat /etc/resolv.conf
    • search old.bk.sapo.pt co.sapo.pt sapo.pt
    • nameserver 212.55.154.194
    • nameserver 212.55.154.174
    • $ cat /etc/resolv.conf | awk '/nameserver/ {print $2}'
    • 212.55.154.194
    • 212.55.154.174
  • 13. Text processing – awk VI
    • Exemplo mais elaborado:
    • BEGIN {
        • FS=” ”
        • RS=””
        • ORS=””
    • }
    • { x=1
      • while (x < NF ) {
        • print $x “; ”
        • x++
      • }
      • print $NF “ ”
    • }
  • 14. Text processing – awk VII
    • Exemplo mais elaborado:
    • BEGIN {
        • FS=” ”
        • RS=””
        • ORS=””
    • }
    • { x=1
      • while (x < NF ) {
        • print $x “; ”
        • x++
      • }
      • print $NF “ ”
    • }
    • $ cat textfile
    • texto linha 1
    • 2
    • Três
    • linha 5
    • e acaba na 6
    • $ awf -f programa textfile
    • texto linha 1; 2; Três
    • linha 5; e acaba na 6
  • 15. Text processing – sed I
    • Stream editor.
    • Actua sobre o seu input, permitindo efectuar tarefas de edição.
    • Sintaxe semelhante à do vi .
    • Editor de linha.
    • Aceita expressões regulares.
  • 16. Text processing – sed II
    • Formas mais comuns:
    • $ sed -e 'comandos' ficheiro
    • $ cat ficheiro | sed -e 'comandos'
    • $ sed -f ficheiro-comandos ficheiro
    • Os comandos são executados em sequência.
  • 17. Text processing – sed III
    • Comandos...
    • s – Substitute
    • s/XX/YY/ - Substitui primeiro XX por YY
    • s/XX/YY/g - Substitui todos os XX por YY
    • d - Delete
    • d - Apaga a linha
    • 1d - Apaga a linha 1
    • 1,5d - Apaga as linhas 1 a 5
  • 18. Text processing – sed IV
    • Aceita regexps
    • Retirar comentários?
    • $ sed -e '/^#/d' ficheiro | more
    • Ver apenas a função main de um programa em C ?
    • $ sed -n -e '/main[[:space:]]*(/,/^}/p' source.c | more
      • (2 regexps: /main[[:space:]]*(/ e /^}/ )
  • 19. Text processing – sed V
    • Inline editing.
    • $ sed -i -e 's/Hello/Goodbye/g' ficheiro
    • Muda todas as strings 'Hello' para 'Goodbye' no ficheiro.
    • Sem um parâmetro no '-i' não faz backup!
    • $ sed -i.bak -e 's/Hello/Goodbye/g' ficheiro
  • 20. Text processing – tr I
    • Translate or delete characters.
    • $ tr [options] [set1 [set2] ]
    • Lê o input e substitui caracteres com base em dois sets, escreve no output.
    • Um dos poucos comandos que apenas recebe input via STDIN.
  • 21. Text processing – tr II
    • Exemplos:
    • $ echo 'text' | tr “[:lower:]” “[:upper:]”
    • $ echo 'text' | tr “a-z” “A-Z”
    • Flags:
    • -c Complement set1
    • -d Delete
    • -s Squeeze (Converte caracteres repetidos num só)
    • -t Truncate (Trunca o set1 para ficar com o mesmo tamanho que o set2. Obriga a especificar os dois sets)
  • 22. Text processing – tr III
    • $ tr -s ' ' ' ' < input-file > outputfil e
      • (agrega os espaços no ficheiro)
    • $ echo $PATH | tr ':' ' '
    • /home/areis/bin
    • /usr/local/bin
    • /usr/local/sbin
    • /usr/bin
    • /usr/sbin
  • 23. Text processing – grep I
    • Pesquisa por padrões no seu input.
    • $ grep [options] patterns [files...]
    • $ grep -f pattern-file [files...]
    • Pesquisa por texto simples ou por expressões regulares, processando linha a linha o input.
  • 24. Text processing – grep II
    • Algumas opções mais comuns:
    • -i Case Insensitive
    • -e Interpretar o padrão como uma regexp
    • -v Inverter o match
    • -c Contar o número de matches
    • -l Mostrar apenas o nome dos ficheiros onde houve match
    • -n Mostrar o número da linha que fez match
    • -R Pesquisar recursivamente nos vários ficheiros
  • 25. Text processing – grep III
    • Contexto:
    • -A n Mostra as n linhas depois (after) do match
    • -B n Mostra as n linhas antes (before) do match
    • -C n Mostra n linhas antes e depois do match
    • --color Destaca o padrão com texto colorido
  • 26. Text processing – grep IV
    • Regexps vs Extended Regexps.
    • ( -e vs -E )
    • Inicialmente as expressões regulares do grep e do egrep eram muito básicas. Não suportavam vários dos metacaracteres como '?', '+','{' etc...
    • O GNU grep já as suporta, no entanto há que decidir entre retro-compatibilidade ( -e ) e a implementação correcta das regexps ( -E ).
    • Portability Warning!
  • 27. seq
    • Print a sequence of numbers
    • $ seq 1 5
    • $ seq 1 2 10
    • $ seq -sSEP 1 5
    • $ seq -f”%03.f” 1.6 0.5 4
  • 28. seq
    • $ seq 1 5
    • 1
    • 2
    • 3
    • 4
    • 5
    • $ seq 1 2 10
    • 1
    • 3
    • 5
    • 7
    • 9
    $ seq -s: 1 5 1:2:3:4:5 $ seq -f”%0.3f” 1.6 0.5 4 1.600 2.100 2.600 3.100 3.600
  • 29. seq
    • $ for a in `seq -f”%02.f” 1 3`
    • > do
    • > scp file$a web${a}.domain
    • > done
    • $ for a in “01 02 03”
    • > do
    • > scp file$a web${a}.domain
    • > done
  • 30. find and xargs I
    • Procura recursiva de ficheiros.
    • $ find início [ filtro] [comandos]
    • $ find / -type f -size +10000c -ls
    • $ find / -mount -type -f -size 100M -ls
    • $ find /path -type f -newer file
    • $ find / -type f -iname “*.log” -mtime +15 -ls
    • $ find / -type f -name “*log” -mtime +15 -exec gzip {} ;
  • 31. find and xargs II
    • $ for a in `seq 1 100000` do touch /path/ola.$a; done
    • $ rm /path/ola*
    • /bin/rm: Argument list too long <--- ???
    • $ find /path -type f -exec rm {} ;
    • Quantos ficheiros apaga?
    • Como confirmar que vai apagar o que queremos?
  • 32. find and xargs III
    • $ for a in `seq 1 100000` do touch /path/ola.$a; done
    • $ rm /path/ola*
    • /bin/rm: Argument list too long <--- ???
    • xargs constrói e executa comandos.
    • Controla o tamanho da lista de argumentos
    • $ find /path -type f -print | xargs rm
    • $ find /path -type f -print0 | xargs -0 rm
  • 33. find and xargs IV
    • Mover um grande número de ficheiros?
    • $ find . -maxdepth 1 -type f -name “*.log” -print0
    • > | xargs -0 -I XXX mv XXX /dead-archive
    • -maxdepth - Número de directorias a processar.
    • -I XXX - 'Replace-string' – Identifica os parâmetros
            • para o comando que se vai construir.
    • (XXX a seguir ao 'mv' é onde se irão colocar os ficheiros a mover)
  • 34. screen I
    • Multiplex between multiple processes.
    • screen permite ter várias sessões dentro do mesmo terminal. Efectua um 'decoupling' do terminal das sessões por ele iniciadas.
    • Permite “desligar” e “retomar mais tarde”.
    • CTRL A – Sequência de comando do screen.
  • 35. screen II
    • Execução do screen na shell
    • $ screen comando [args] - executa o comando
    • $ screen -opções comando [args] - idem
    • $ screen -ls - Lista as sessões existentes
    • $ screen -r [sessão] - Resume de uma sessão
  • 36. screen III
    • Dentro do screen
    • CTRL A – C : Lança uma nova sessão
    • CTRL A – W : Lista as sessões criadas
    • CTRL A – N : Next
    • CTRL A – P : Previous
    • CTRL A – D : Detach
  • 37. screen IV
    • $ hostname
    • HOST1
    • $ screen ssh user@sistema1
    • ....
    • user@sistema1:~$ hostname
    • sistema1
    • user@sistema1:~$
    • CTRL A - D <- Detach
    • [detached]
    • $ hostname
    • HOST1
    • $ screen -ls
      • 8551.pts-2.HOST1 ...
    • $ screen -r
    • user@sistema1:~$
  • 38. strace I
    • Trace system calls.
    • É uma ferramenta de debug interessante.
    • Mostra as várias chamadas ao sistema que um programa executa.
    • Pode ser aplicado a um programa em execução.
    • Profiling rudimentar.
  • 39. strace II
    • $ strace -p PID - Para um processo já a correr.
    • $ strace program args – Para um novo processo.
    • $ strace pwd 2>&1 | wc -l
    • 115
    • $ strace uptime 2>&1 | wc -l
    • 218
    • $ ltrace pwd 2>&1 | wc -l
    • 16
    • $ ltrace uptime 2>&1 | wc -l
    • 4
  • 40. strace III
    • $ strace pwd
    • execve(&quot;/bin/pwd&quot;, [&quot;pwd&quot;], [/* 41 vars */]) = 0
    • brk(0) = 0xe70000
    • ...
    • open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3
    • ...
    • getcwd(&quot;/home/areis&quot;..., 4096) = 10
    • ...
    • write(1, &quot;/home/areis &quot;..., 10/home/areis
  • 41. strace IV
    • Algumas flags
    • -c Conta stats de chamadas, erros, e tempos.
    • -f Follow child processes.
    • -ff Follow childs in files. (-o filename)
    • -r Relative timestamp
    • -e Expression (-etrace=open,close) (!open) (=signal)
  • 42. strace V
    • $ strace -c ps aux
    • ...
    • % time seconds usecs/call calls errors syscall
    • ------ ----------- ----------- --------- --------- --------
    • 55.56 0.000060 0 495 read
    • 36.11 0.000039 0 505 2 open
    • 8.33 0.000009 0 158 write
    • ...
    • 0.00 0.000000 0 1 geteuid
    • 0.00 0.000000 0 1 arch_prctl
    • ------ ----------- ----------- --------- --------- --------
    • 100.00 0.000108 2327 16 total
  • 43. strace VI
    • $ strace -eopen pwd (Output parcial)
    • open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3
    • open(&quot;/lib/libc.so.6&quot;, O_RDONLY) = 3
    • open(&quot;/dev/urandom&quot;, O_RDONLY) = 3
    • open(&quot;/usr/lib/locale/locale-archive&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
    • open(&quot;/usr/share/locale/locale.alias&quot;, O_RDONLY) = 3
    • open(&quot;/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
    • open(&quot;/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION&quot;, O_RDONLY) = 3
    • open(&quot;/usr/lib/locale/en_US.utf8/LC_CTYPE&quot;, O_RDONLY) = 3
    • /home/areis
  • 44. strace VII
    • $ strace -p 8547
    • attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
    • $ strace -efile hostname
    • execve(&quot;/bin/hostname&quot;, [&quot;hostname&quot;], [/* 41 vars */]) = 0
    • access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (...)
    • access(&quot;/etc/ld.so.preload&quot;, R_OK) = -1 ENOENT (...)
    • open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3
    • access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (...)
    • open(&quot;/lib/libc.so.6&quot;, O_RDONLY) = 3
    • open(&quot;/dev/urandom&quot;, O_RDONLY) = 3
    • aqua
  • 45. Closing time...
    • Mais info? --> man pages, google, friends?
    • Outras power tools :
    • lsof – List open files.
    • netcat - “Swiss-army knife” for TCP/IP.
    • netstat – Print network information
    • tcpdump – Dump network traffic
    • terminator – Multiple terminals in one window.
  • 46. SAPO Sessions Linux Power Tools Armando Reis - DTP3