Servidores Linux

Mario Domenech Goulart

mario.goulart@gmail.com

Sobre o curso

Administradores de sistemas

Servidores

Aspectos

Pré-história

CTSS

Multics

Unix

Unix -- características

Linux

O projeto GNU

GNU/Linux -- Distribuições

Organização de sistemas Linux

Organização de sistemas Linux

Kernel e drivers

Processos

Usuários e grupos

Usuários

Grupos

Arquivos

Organização de arquivos

Estrutura de diretórios

Sistemas de arquivos

Inicialização de um sistema linux

Shell -- introdução

Comandos

Comando pwd

Exemplo

$ pwd

Comando which

Exemplo

$ which which

Comando echo

Exemplo

$ echo Boa noite

Comando ls

ls -- exemplos

$ ls
$ ls -a
$ ls -la
$ ls /
$ ls /etc
$ ls -l /etc

ls -- exemplos (continuação)

$ ls -d /etc
$ ls -ld /etc
$ ls -l /boot
$ ls -lh /boot
$ ls -l --sort=size /boot

Comando date

Exemplo

$ date

Comando type

Exemplos

$ type type
$ type which
$ type ls
$ type date

Comando cat

Exemplos

$ cat /etc/motd
$ cat /etc/motd /etc/motd

Comando cd

Exemplos

$ cd /etc
$ cd /
$ cd
$ cd -

Shell -- variáveis de ambiente

Entrada/saídas padrão

Shell -- redirecionamento de entrada e saída

Exemplos

$ echo 1 > arquivo.txt
$ echo 2 > arquivo.txt
$ echo 3 >> arquivo.txt
$ cat > arquivo.txt
$ cat < arquivo.txt > outro.txt

Shell -- redirecionamento de entrada e saída

$ ls /etc 2>erro >ok
$ ls /blablabla 2>erro >ok
$ ls /etc > tudo 2>&1
$ ls /etc >> tudo 2>&1

Shell -- Pipes

Exemplos

$ ls | more
$ echo oba | wc -m
$ echo -n oba | wc -m
$ cat /etc/motd | head -n3
$ cat /etc/motd | tail -n2

Gerenciamento de tarefas (jobs)

Exemplos

$ sleep 5 &
$ sleep 10
C-z
$ bg
$ fg

Gerenciamento de processos -- listagem

Exemplos

$ ps
$ ps ax
$ ps aux
$ ps faux

Gerenciamento de processos -- sinais

Exemplos

$ sleep 10h &
ps
kill <pid do sleep>

Gerenciamento de processos -- código de saída

Gerenciamento de processos -- execução incondicional e condicional

Daemons

Monitoramento de processos -- top

Gerenciamento de processos -- exercícios

Execute o comando mostrado abaixo e:

  1. suspenda-o
  2. coloque-o em background
  3. coloque-o em foreground
  4. suspenda-o novamente
  5. coloque-o em background novamente
  6. finalize-o
$ yes > /dev/null

Bibliotecas de carga dinâmica (DLLs) -- ldd

Gerenciamento de arquivos -- globbing

Gerenciamento de arquivos

Gerenciamento de arquivos -- globbing, exemplos

Exemplos

$ touch arq.txt arq1.txt arq2.txt arq3.txt arq3.cpp
$ ls arq*
$ ls arq?.txt
$ ls arq[12].txt
$ ls arq3.{txt,cpp}
$ ls arq?.{txt,cpp}

Gerenciamento de arquivos -- permissões

Tipo Dono (r) Dono (w) Dono (x) Grupo (r) Grupo (w) Grupo (x) Outros (r) Outros (w) Outros (x)

Gerenciamento de arquivos -- chmod

Exemplos

$ chmod 644 arquivo
$ chmod 755 diretorio

Gerenciamento de arquivos -- chown

Exemplo

$ chmod mario:users /home/mario/arq.txt

Gerenciamento de arquivos -- stat

Exemplo

$ stat index.scm
  File: "index.scm"
  Size: 29992           Blocks: 64         IO Block: 4096   arquivo comum
Device: 806h/2054d      Inode: 435698      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   mario)   Gid: ( 1000/   mario)
Access: 2012-03-19 17:58:42.000000000 -0300
Modify: 2012-03-19 18:00:10.000000000 -0300
Change: 2012-03-19 18:00:10.000000000 -0300

Gerenciamento de arquivos -- exercícios

Crie os arquivos a seguir e atribua a eles as seguintes permissões:

Gerenciamento de arquivos -- exercícios (continuação)

Gerenciamento de arquivos -- find

Exemplos

$ find /etc -name "mot*"
$ find /etc -iname "mot*"
$ find /etc -type d
$ find /etc -maxdepth 1 -type d | wc -l
$ find /etc -maxdepth 2 -type d | wc -l
$ find /home -user $USER -maxdepth 1

xargs

Exemplo

$ find /etc -maxdepth 1 -type d | xargs du

Gerenciamento de arquivos -- compactação

Gerenciamento de arquivos -- exercício

Execute o programa cria-arquivos e apague os arquivos criados por ele, um de cada vez

$ ./cria-arquivo

Instalação básica de um sistema Debian

Debian -- pacotes

Ferramentas -- sort

Exemplo

$ sort /etc/passwd

Ferramentas -- multiplexadores de terminais

Ferramentas -- screen

Expressões regulares -- introdução

Expressões regulares -- básico

Ferramentas -- grep

Exemplos

$ grep 'model name' /proc/cpuinfo  | head -n1
$ ps aux | grep ^root

Exercícios -- grep

Usando grep:

Ferramentas -- sed

Exercícios -- sed

Usando sed:

Gerenciamento do sistema serviços

Em sistemas Debian

Gerenciamento do sistema -- usuários e grupos

Gerenciamento do sistema -- limites

Gerenciamento do sistema -- partições e sistemas de arquivos

Exercício de manipulação de sistema de arquivos

Criação e montagem de um sistema de arquivos em arquivo

# dd if=/dev/zer of=sistema-de-arquivos bs=1k count=10000
# mkfs.ext3 sistema-de-arquivos
# mkdir ponto-de-montagem
# mount -o loop sistema-de-arquivos ponto-de-montagem
# umount ponto-de-montagem

Agendamento de tarefas -- cron

Sintaxe

<minuto> <hora> <dia do mês> <mês> <dia da semana> <comando>

Agendamento de tarefas -- exemplos

30 13 * * * <comando>
Executa <comando> uma vez por dia, todos os dias, às 13:30h
0 12 * * 3 <comando>
Executa <comando> uma vez por semana, na quarta-feira, todos os meses, às 12h
0,15,30,45 * * * * <comando>
Executa <comando> de quinze em quinze minutos

Monitoramento do sistema -- uptime

Monitoramento do sistema -- ocupação de sistemas de arquivos

Monitoramento do sistema -- memória

Exemplo

$ free
             total       used       free     shared    buffers     cached
Mem:       3057824    2583928     473896          0     420600    1170208
-/+ buffers/cache:     993120    2064704
Swap:       514040       3992     510048

Monitoramento do sistema -- arquivos de log

Kernel e módulos

Kernel -- combinações de teclas em caso de problema

Sistema de arquivos /proc

Informações sobre o hardware -- dmidecode

Emacs

http://xkcd.com/378/

Emacs -- histórico

Emacs -- características

Emacs -- combinações de teclas

Combinações

Emacs -- buffers e janelas

Comandos

Emacs -- modos

Emacs possui diversos modos de edição/operação. Estes modos são dividos em duas categorias:

Emacs -- movimentação

Emacs -- edição

Emacs -- minibuffer e comandos interativos

Emacs -- pesquisa

Emacs -- substituição

Emacs -- miscelânea

Programação com shell -- shell scripting

Shell scripting -- caracteres especiais

Shell scripting -- variáveis especiais

Shell scripting -- condicionais

if <teste>
then
    <alternativa 1>
else
    <laternativa 2>
fi

Shell scripting -- testes

if grep "mario:" /etc/passwd > /dev/null; then
    echo "O usuario mario existe"
else
    echo "O usuario mario NAO existe"
fi

Shell scripting -- testes

if [ "`grep processor /proc/cpuinfo | wc -l`" -eq 1 ]; then
    echo "Sistema com um processador"
else
    echo "Sistema com mais de um processador"
fi

Shell scripting -- operadores de teste binários aritméticos

Shell scripting -- operadores de teste binários para strings

Shell-scripting -- operadores de teste de arquivos

Shell scripting -- iteração com for

for <variavel> in <sequencia>
do
    <comandos>
done

Shell scripting -- iteração com for

for i in `seq 1 10`; do
    echo $i
done

Serviços e servidores -- SSH

Serviços & servidores -- HTTP

Serviços e servidores -- SMTP

Serviços e servidores -- Backup

Serviços e servidores -- DNS

Considerações sobre a administração de servidores