Mudanças entre as edições de "Sistemas Operacionais (técnico)"
Linha 362: | Linha 362: | ||
#Ferramentas de Desenho: '''gnomepaint''', '''dia''' e editor gráfico do '''OpenOffice''' - 17 de Novembro; | #Ferramentas de Desenho: '''gnomepaint''', '''dia''' e editor gráfico do '''OpenOffice''' - 17 de Novembro; | ||
#Browsers: '''Firefox''' e alternativas ao '''Firefox''' - 17 de Novembro; | #Browsers: '''Firefox''' e alternativas ao '''Firefox''' - 17 de Novembro; | ||
+ | #Instalando aplicativos no Ubuntu: '''aptitude''' ('''apt-get''') , '''Central de Programas do Ubuntu''', '''Synaptic''' - 24 de Novembro. | ||
#Solução para leitura de pdf: '''acroread''', '''okular''' e '''evince''' - 24 de Novembro; | #Solução para leitura de pdf: '''acroread''', '''okular''' e '''evince''' - 24 de Novembro; | ||
#Soluções de Áudio/Vídeo (Multimídia) Players: '''Totem''', '''Amarok''' e '''Gravador de Som''' - 24 de Novembro; | #Soluções de Áudio/Vídeo (Multimídia) Players: '''Totem''', '''Amarok''' e '''Gravador de Som''' - 24 de Novembro; | ||
#Solução para execução de aplicações windows: '''wine''' - 24 de Novembro; | #Solução para execução de aplicações windows: '''wine''' - 24 de Novembro; | ||
− | |||
==Referências Bibliográficas== | ==Referências Bibliográficas== |
Edição das 18h24min de 3 de novembro de 2010
CÓDIGO DA UNIDADE CURRICULAR -
CARGA HORÁRIA: 2 horas/semana = 40 horas.
PRÉ REQUISITOS: , , ,
UNIDADES CURRICULARES CLIENTES: Redes de Computadores , , ,
Competências
Habilidades
Bases Tecnológicas
Diários de Aula
Aula 9 - Ainda Permissões de acesso a arquivos e diretórios - Uso da umask e exercícios complementares
Objetivos
- Uso da umask;
- Exercícios adicionais.
Uso da umask
A umask é uma palavra binária que permite definir quais são as permissões que serão dadas na criação de um arquivo ou de um diretório. A regra geral para formação destas permissões é:
- Para arquivo: 666 AND (NOT umask);
- Para diretório: 777 AND (NOT umask);
Ou seja, suponha que vamos criar um arquivo. A umask pode ser verificada com o comando:
umask
Normalmente esta máscara é 022. Se você criar um arquivo ele terá as seguintes permissões:
666 AND (NOT 022) = 666 AND 755 = 644
Ou seja, direito de rw para usuário, r para grupo e outros.
Para diretórios seria:
777 AND (NOT 022) = 777 AND 755 = 755
Ou seja, direito de rwx para usuário, rx para grupo e outros.
Se você usar o comando:
umask -S
será possível visualizar estas permissõeses de forma simbólica.
Usando a umask
- Modifique a umask para que todos os arquivos criados para outros tenham direito de leitura e escrita (e execução para diretórios). Basta aplicar o comando umask e a máscara a ser aplicada;
- Crie um arquivo qualquer: touch teste.txt
- Crie um diretório qualquer qualquer: mkdir teste
- Confira os resultados: ls -l
- Volte a umask ao valor inicial
Exercícios adicionais
Usando uma máquina virtual, como na aula anterior, criar 4 usuários: joao, maria, jose e lara. Os usuários joao, maria e lara pertencem a um grupo projX, que também deve ser criado (se ainda não existir).
Algumas restrições de permissão
O usuário joao possui os seguintes diretórios: docs_outros, docs_pessoais e docs_projX. Ele colocou as seguintes restrições de acesso:
- Em docs_pessoais somente joao pode criar e ver arquivos e diretórios, todos os demais grupos e usuários não tem permissão alguma. Em docs_projX, somente joao e os integrantes do grupo projX podem criar arquivos e entrar no diretório;
- Em docs_outros qualquer um pode entrar e listar o diretório mas não pode criar ou renomear arquivos no mesmo;
Testando permissões
- Logue como joao e crie os arquivos alfa.txt e beta.txt no diretório docs_pessoais com direito de acesso a somente leitura para outros. Dê acesso a leitura e escrita para proprietário e grupo.
- Logue como maria e teste os direitos de acesso aos diretórios criados por joao.
- Logue como jose e tente entrar nos diretórios criados por joao. Qual deles permite este acesso?
- Faça lara criar um arquivo em docs_projX;
Aula 10 - Entradas e Saídas Padrão
Objetivos
- Conceituar e trabalhar entradas e saída padrão, saída de erros padrão e pipes;
- Trabalhar os comandos cut, find, wc, grep, head e tail.
Redirecionamento de entrada e saídas
Sempre existem 3 arquivos "abertos" por default para um determinado processo. São eles a entrada padrão (stdin, normalmente associada ao teclado), stdout (normalmente associada a tela) e a saída padrão de erros (stderr, normalmente associada a tela). Estes arquivos podem ser modificados resultando no que se chama de redirecionamento das entradas e saídas do processo.
Cada arquivo aberto, associado a um processo, possui um descritor identificado por um número que se constitui em um índice de uma tabela de arquivos abertos associados ao processo. Segue-se um resumo da forma de realizar redirecionamento.
Redireção de stdout (arquivo lista é sobrescrito):
ls > lista
Redireção de stdout fazendo um append ao arquivo de saída:
ls >> lista
Cria/sobreescreve um arquivo de tamanho zero, similar ao touch
> lixo
Resumo das redireções das saídas:
- 1>filename # Redireciona stdout para o arquivo filename
- 1>>filename # Redireciona e acrescenta a stdout para o arquivo filename
- 2>filename # Redireciona stderr para o arquivo filename
- 2>>filename # Redireciona e faz append da stderr para o arquivo filename
- &>filename # Redireciona ambos stdout and stderr para o arquivo filename
Exercícios
- Listar o diretório corrente, de forma detalhada e em ordem crescente de modificação, redirecionando a saída para um arquivo ListaOrdenada: ls -l > ListaOrdenada
- Acrescentar ao final (append) do arquivo ListaOrdenada, a data atual: date >> ListaOrdenada
- Criar um arquivo chamado teste1, com a frase “Alo Mundo”, usando o comando echo e redirecionamento de saída: echo Alo Mundo > teste1
- Criar um arquivo vazio usando somente > arquivo: > ArquivoVazio
- Aplicar um comando ls ao diretório /eetc (intecionalmente errado) redirecionando a saída para lixo1: ls /eetc > lixo1
- Conferir o conteúdo de lixo1: cat lixo1
- Repetir o comando ls ao diretório /eetc (intecionalmente errado) redirecionando a saída de erro para lixo2: ls /eetc 2> lixo2
- Conferir o conteúdo de lixo2: cat lixo2
- Ordenar o arquivo passwd: sort < /etc/passwd > PasswdOrdenado
Acho que esta é a forma mais rápida de criar um arquivo vazio!
Pipes
A filosofia do unix/linux é resolver pequenos problemas com comandos simples. É possível no entanto resolver problemas mais complexos encadeando saídas em entradas, usando pipes.
- Listar de forma controlada (rolando a tela) o diretório /etc: ls -l /etc | more
- Procurar arquivos com terminação .conf no diretório /etc, usando o comando find e redirecionar a saída de erro para /dev/null (equivalente a uma lixeira mas sem volta!): find /etc -name passwd 2> /dev/null
- Repetir o exercício anterior fazendo um pipe para o comando wc (com flag -l para contar o número de linhas) a fim de verificar o número de ocorrências dos arquivos procurados: find /etc -name passwd | wc -l
- Eliminar a saída de erros do comando anterior: find /etc -name passwd 2> /dev/null | wc -l
- Usar um pipe com cat e wc para determinar quantas linhas existe no arquivo /etc/passwd: cat /etc/passwd | wc -l
- Repetir o exercício anterior para verificar quantos caracteres contem o arquivo: cat /etc/passwd | wc
- Listar o campo 1 do arquivo passwd: cat /etc/passwd | cut -f 1 -d :
- Conferir com o comando man o uso do comando cut: man cut
Outros Exercícios
- O comando grep pode ser usado para verificar ocorrências de palavras em (padrões) em um arquivo. Por exemplo: grep aluno /etc/passwd.
- Componha um comando usando cut, grep e wc para verificar quantos userid possuem a cadeia "un";
- Gere um arquivo contendo somente os campos userid e nome completo de usuários que constam do arquivo passwd;
- Pesquisar o comando head e gerar um arquivo chamado DezLinhas contendo as 10 primeiras linhas do arquivo /etc/passwd;
- Repetir o exercício anterior para as 5 primeiras linhas;
- Pesquisar o comando tail e gerar um arquivo chamado DezUltimas com com as 10 últimas linhas do arquivo /etc/passwd mas ordene estas linhas com o comando sort (use pipes).
Aula 11 - Gerenciamento de Processos
Objetivos
- Consolidar o conceito de processo;
- Usar o comando ps para verificar os processos do sistema;
- Encerrar, suspender e reativar processos suspensos.
Estados de Processos no Linux
Os estados possíveis de um processo no linux são:
- R se executando (running) ou na fila de execução;
- D dormindo na espera por algum evento;
- S dormindo na espera por algum por algum evento ou sinal (interruptible sleep);
- T (stopped) Parado (por um sinal ou sendo depurado);
- Z processo Zombie (foi terminado mas ainda presente no sistema).
Uma forma de outros processos ou do próprio sistema operacional se comunicar com processos é transmitir sinais para o mesmo. Existem vários tipos de sinais. Um dos mais famosos é o SIGKILL que "mata" o processo. O sinal SIGSTOP para um processo e o sinal SIGCONT faz com que um processo parado continue a sua execução.
Para ver todos os processos do sistema pode-se fazer:
ps aux | more
Note a coluna PID. Ela indica o número identificador do processo. Em STAT pode-se observar o estado do processo. Existe uma relação de paternidade entre processos e é possível verificar uma árvore de processos com pstree. O comando top é uma espécide ps em tempo real.
Roteiro
- Logar no sistema, na interface gráfica, como aluno;
- Abrir um console de trabalho: Aplicações -> Acessórios -> Console
- Verificar o terminal que você está: tty
- Executar o comando yes: yes Testando
- Para encerrar o processo que está ocupando o terminal faça: CTRL-c ou (CTRL-c)
- Coloque novamente o processo em execução, mas agora em background: yes Testando > /dev/null &
- Trazer o processo novamente para o terminal (colocar em foreground): fg
- Suspenda o processo com: CTRL-Z ou (CTRL-SHIFT-z)
- Coloque em execução mais algumas instâncias do processo yes: yes Testando > /dev/null & yes Testando > /dev/null &
- Neste momento existem 3 processos yes, sendo que dois em execução e um suspenso. Conferir os processos que você lançou com: ps u
- Abra duas abas de console e para cada uma delas verifique o terminal que se encontra: tty
- Execute em cada uma delas (menos na primeira) um processo yes: yes Testando
- Volte para o primeiro terminal e liste todos os processos que estão atrelados aos terminais, usando a forma longa: ps l
- Faça também com comando topp para verificar os processos em execução: top
- Vamos "matar" um processo yes do terminal 2: kill -KILL <numero_pid>
- Vamos usar o comando kill para suspender e continuar a execução do processo yes no terminal 3. kill -STOP <numero_pid>
- Ver os processos: ps -l
- Coloque o processo em execução novamente: kill -CONT <numero_pid>
O comando tty mostra o nome do terminal que será associado a entrada padrão dos processos que sobre ele se executarem.
Este comando, quando executado, se torna um processo cuja função é imprimir constantemente na saída padrão a cadeia de caracteres passada como parâmetro
Observe que o processo foi "morto". O CTRL-c envia um sinal SIGKILL para o processo.
Suspender o processo é parar o processo mas mantendo-o no sistema com todos os recursos menos a cpu.
Este comando lista todos os processos atrelados aos diversos terminais e que pertencem ao usuário. Note que o próprio bash aparece. Um para cada terminal.
Cada processo tem um identificador: PID. O PID deve ser fornecido no comando kill. Note que o comando kill envia sinais para um processo.
Observe o código STAT. Os processos em execução estão com R (running), os parados com T (stopped). Os processos dormindo com S (sleeping)
Alguns exercícios adicionais
- Execute o firefox a partir da interface gráfica. Descubra o PID do processo firefox e depois "mate-o";
- O processo init é o pai de todos os processos. Qual é o PID deste processo? Tente matar o processo init.
- Faça um ps aux e descubra quais são os três processos que mais consomem CPU.
- Pesquise o uso do comando killall e envie para o professor, via e-mail.
Aula 12 - Gerenciamento de Processos (revisão) e comandos úteis de empacotamento e compressão
Objetivos
- Comandos adicionais de gerenciamento de processos;
- Utilitários para empacotamento (tar) e compressão de arquivos (gzip e bzip2);
Roteiro - Parte 1
- Abrir um terminal e verificar o nome do mesmo: tty
- Executar o comando yes em background: yes Alo > /dev/null &
- Matar o processo pelo nome do executável: killall yes
- Ver processos se executando em tempo real: top
- Abrir outra aba e colocar o processo yes em execução yes
- Voltar a aba original e conferir a saída do top
- Localizar um determinado processo em execução: ps aux | grep bash
- Ver a árvore hierárquica de processos: pstree -p
- Executando múltiplos comandos em uma linha: id;date id && date
Sair do top com q
note a relação de paternidade dos bashes
Arquivamento e Compressão de Arquivos
Existem vários comandos para comprimir/descomprimir arquivos bem como para criar um arquivo único:
- comando tar: usado para empacotar arquivos e diretórios dentro de um único arquivo chamado de tarball. É um comando interessante para realizar backups pois preserva a estrutura de diretórios bem como os atributois de arquivos.
- comandos gzip e bzip2 para a compressão de arquivos;
Roteiro - Parte 2
- Criar um diretório mkdir teste
- Entrar para o diretório: cd teste
- Criar arquivos e diretórios dentro do diretório teste: touch alfa.txt mkdir beta touch beta/delta.txt
- Mudar o atributo do diretório beta: chmod 777 beta
- Conferir o atributo dos arquivos com ls -l
- Arquivar tudo em um só arquivo chamado arquivo.tar: tar -cf arquivo.tar alfa.txt beta
- Remover os arquivos criados: rm alfa.txt rm -r beta
- Conferir a remoção: ls -l
- Restaurar arquivos: tar -xvf arquivo.tar
- Remover arquivo tar e conferir restauração: rm arquivo.tar ls -l
- Verifique os atributos dos arquivos restaurados usando ls -l. Eles foram preservados?
- Refazer o arquivamento dos arquivos e diretórios criados anteriormente mas agora acrescente o flag -p para preservar os atributos dos arquivos. Restaure os arquivos e confira se os atributos foram preservados.
O flag -c cria o arquivo (arquivo.tar) e o flag -f serve para fornece o nome do arquivo
O flag -x extrai arquivos e o flag -v verifica o andamento do procedimento
Arquivar comprimindo
Na seção anterior, o comando tar empacotou arquivos em um arquivo único mas não compactou-os. Para comprimir um arquivo existem vários utilitários que usam algoritmos diferentes. Vamos ver o gzip e o bzip2.
- Copiar o arquivo passwd para o diretório corrente e compactá-lo com gzip: cp /etc/passwd ls -lh #Isto serve para ver tamanho original do arquivo gzip passwd ls -lh
- Descomprimir o arquivo: gunzip passwd.gz
- Comprimir com bzip2: bzip2 passwd ls -lh #Isto serve para comparar o tamanho com o gerado pelo gzip. bunzip2 passwd.bz2 ls -lh
- Arquivar comprimindo: tar -cvjf arquivo.tar.bz2 alfa.txt passwd beta
- Remover arquivos e conferir: rm alfa.txt rm -r beta ls -l
- Descomprimir arquivos: tar -xvjf arquivo.tar.gz
- Repetir a compressão usando o flag -j para comprimir com bzip2;
O arquivo original é removido ficando apenas o comprimido! Note a terminação gz. Se usar o flag -c mantém o arquivo.
O flag -j comprime usando o comando bzip2 e o flag -z usa a compressão com gzip2.
Vendo espaço no sistema de arquivos
- Verificar o tamanho de arquivos: cd # vai para o diretório de entrada du -h # lista arquivos e seus tamanhos du -sh # tamanho total do diretório
- verificar espaços nos sistemas de arquivos: df -h
Trabalhos à apresentar
Cada apresentação tem 30 minutos e tem que ter uma pequena oficina.
O que é. Para que serve. Principais características. Equivalente do Windows. Tutorial de uso.
- Ferramentas de Escritório: OpenOffice processador texto - 10 de Novembro;
- Ferramentas de Escritório: OpenOffice publicações - 10 de Novembro;
- Ferramentas de Escritório: OpenOffice (planilhas) - 10 de Novembro;
- Área de Trabalho do Ubuntu: customização e Compiz - 17 de Novembro;
- Ferramentas de Desenho: gnomepaint, dia e editor gráfico do OpenOffice - 17 de Novembro;
- Browsers: Firefox e alternativas ao Firefox - 17 de Novembro;
- Instalando aplicativos no Ubuntu: aptitude (apt-get) , Central de Programas do Ubuntu, Synaptic - 24 de Novembro.
- Solução para leitura de pdf: acroread, okular e evince - 24 de Novembro;
- Soluções de Áudio/Vídeo (Multimídia) Players: Totem, Amarok e Gravador de Som - 24 de Novembro;
- Solução para execução de aplicações windows: wine - 24 de Novembro;
Referências Bibliográficas
Professores da Unidade Curricular
- 2010-2 - Odilson Tadeu Valle
- 2010-2 - Eraldo Silveira e Silva