ADMINISTRAÇÃO DE SISTEMAS UNIX Aula Prática 01 – Sistemas Operacionais Gil Eduardo de Andrade Introdução Os sistemas UNIX/Linux são caracterizados por serem: Interativo – usuário requisita os comandos e obtém os resultados de sua execução através do terminal. Multitarefa – um mesmo usuário pode efetuar vários comandos em paralelo no seu terminal, ficando a cargo do sistema operacional efetuar o controle destas execuções simultâneas. Multiusuário – vários usuários podem utilizar terminais diferentes, é tarefa do sistema operacional controlar as requisições de comandos de cada um deles e distribuir de forma correta os recursos de hardware necessários a cada usuário. Definições Abaixo são apresentados alguns termos comuns no mundo UNIX, utilizados com frequência: Shell – utilizado para definir o interpretador de comandos. É um rograma que recebe os comandos do usuário e ativa o sistema operacional. Existem vários tipos, dentre eles podemos citar: bash, sh, rsh, csh e ksh. Kernel – ou núcleo do sistema UNIX/Linux, efetua o gerenciamento direto dos dispositivos de E/S, gerenciamento de memória e gerenciamento do processador. Comando – é um arquivo (programa executável) armazenado em um determinado diretório do sistema. Ao executar um comando, executa-se um programa assim como todos os outros no sistema. Processo – conceito básico do sistema operacional, utilizado como ferramenta de gerenciamento, quando um comando/programa é executado um novo processo é gerado no sistema. Os processos, de uma forma geral, são comandos/programas em execução. Cada processo é identificado por um número único, chamdo de PID do processo. Usuários Em sistemas UNIX/Linux temos dois tipos de usuários: normal e super-usuário, onde o usuário normal não possui privilégios, ou seja, tem acesso limitado somente a seus dados e arquivos. O super-usuário ou usuário root possui privilégios sobre toda a máquina, tendo acesso a qualquer arquivo que nela se encontra. O sistema de permissões e segurançaa do UNIX/Linux não se aplica ao super-usuário. Existem tambám um conjunto de comandos que só podem ser executados quando o usuário tem privilégios de root. Comandos Sintaxe mais comum: comando [opções] [argumentos] Comando – Comando ou programa a ser executado. Opções – Modificadores do comando (opcional). Argumentos - Define o objeto a ser afetado pelo comando (opcional). A grande parte dos comandos UNIX/Linux contém formato compatível com a sintaxe acima, onde primeiramente tem-se o nome do comando, seguido de opções e argumentos. As opções, quando colocadas, devem sempre preceder os argumentos. Importante salientar que os caracteres que separam os campos da linha de comando são o espaço em branco, além disso o UNIX/Linux é case sensitive, ou seja, distingue os caracteres maiúsculos dos minúsculos. Portanto, para o UNIX/Linux, Ls é diferente de ls. Interpretador de Comandos É chamdado de shell. Tem como função interpretar as instruções enviadas pelo usuário e seus programas ao sistema operacional (o kernel). Entre os diversos interpretadores de comandos existentes o mais usado é o bash (no Linux). O interpretador de comandos do DOS, por exemplo, é o command.com. Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e não-interativa. Interativa → comandos são digitados e passados ao interpretador um a um. Desta maneira, o sistema fica dependente do usuário para executar uma tarefa, ou o próximo comando. Não-interativa → arquivos criados pelo usuário (scripts), conjunto de comandos executados pelo sistema na ordem encontrada no arquivo. Neste modo, o computador executa os comandos do arquivo um por um, é útil quando temos que digitar várias vezes seguidas um mesmo comando. O shell bash possui também uma característica útil: o auto-complete dos nomes através da tecla <TAB>. Exemplos: ech (pressione <TAB>) ls /vm (pressione <TAB>) Comandos Básicos A seguir é apresentados um conjunto de comandos básicos: → Comando Help – Páginas do Manual A utilização da página de manual é simples, digite: # man [opções] [seção] [título] Onde seção indica a seção do manual que será aberta, se omitido, mostra a primeira seção encontrada sobre o comando (em ordem crescente) e título é o nome do comando que se está buscando. Exemplo: # man ls → Comando passwd Utilizado para efetuar a troca de senha, inicialmente o comando pede que seja digitada a senha atual da conta. Em seguida pede que seja digitada a nova senha. Por fim pede que seja digitada novamente a nova senha para verificação. Algumas regras para criação de senhas: → A senha deve ter no mínimo 6 caracteres. → A senha deve ter no mínimo duas letras mai#usculas e/ou duas letras min#usculas e pelo menos um dígito ou caractere especial. → São aceitos somente os caracteres ASCII padrão de códigos 0 a 127. → A senha deve diferenciar do nome da conta. → A nova senha deve diferenciar da senha velha em pelo menos três caracteres. Exemplo: # passwd → Comando expr O expr é utilizado via terminal para efetuar cálculos simples. Ele apresenta restrições, sendo necessária a utilização de uma barra invertida antes de algumas operações ou parênteses (exceto + e -) para que o shell não interprete estes caracteres. Exemplo: # expr 14 + \( 10 \* 4 \) → Caminho de arquivos Sempre que precisamos localizar um arquivo o sistema operacional deve conhecer em que ponto do sistema de arquivos ele se encontra. Isto é feito pela especificação de um caminho antes do nome do arquivo. Este caminho, chamado de path, pode ser indicado de duas maneiras: Absoluto → O caminho absoluto sempre começa com uma barra (“/”). Este caminho dá a localização do arquivo desde o diretório raiz do sistema. Relativo → A procura de um arquivo atravás de um caminho relativo começaa no práprio diretório atual. → Operações básicas com arquivos – ls: listar o conteúdo do diretório corrente (ou de um diretório dado). Exemplo: # ls -l # ls -l /etc – rm: serve para deletar um arquivo do sistema. Ele só fará a remoção de diretórios se for especicada a opção -r. – mv: permite a movimentação de um arquivo ou diretório de um local no sistema para outro. Possui três formas básicas: permite que se mude o nome do arquivo origem para o nome do arquivo destino (mesmo diretório); faz a movimentação de todos os arquivos especificados para o diretório informado como destino e como a primeira, mas em vez de arquivo é utilizado diretórios. – cp: permite a cópia de arquivos e diretórios. Existem três formas básicas do comando: cópia de arquivos para arquivos, cópia de arquivos para diretórios e cópia de diretórios. – cat: apresentar o conteúdo de arquivos. – more: visualizar o conteúdo de arquivos (paginado). – head: mostra na tela as primeiras linhas ou caracteres dos arquivos especicados. – tail: mostra a última parte de um arquivo, contado em blocos, caracteres ou linha. Quando não se coloca opção, o comando assume que se está pedindo em linhas. – wc: O comando wc faz a contagem das linhas, palavras e caracteres de todos os arquivos fornecidos como parâmetros. → Navegação pelos Diretórios – pwd : indica qual o diretório corrente do shell. – cd dir: muda para o diretório dir. – cd ..: muda para o diretório pai imediatamente superior. – cd -: volta para o último diretório visitado. – cd : volta ao diretório HOME. – mkdir dir: criação do diretório dir. – rmdir dir: remoção do diretório dir. Comandos Avançados A seguir é apresentados um conjunto de comandos avançado: → grep: permite procurar strings dentro de arquivos de texto. Exemplos: – – Procurar todas as linhas contendo 'tcsh' em /etc/passwd: # grep tcsh /etc/passwd Procurar todas as linhas que não contenham tcsh em /etc/passwd: # grep -v tcsh /etc/passwd → find: permite encontrar arquivos que satisfaçam certas características. Exemplos: – Procurar todas as entradas *txt dentro do diretório /usr: # find /usr -name '*txt' -print – Procurar todas as entradas *ab* ou *cd* (maiúsculas e minúsculas) presentes em /opt: # find /opt -iname '*ab*' -or -iname '*cd*' – Procurar todas as entradas acessadas a mais de 3 dias em /etc: # find /etc -atime +3 – Procurar todas as entradas modicadas a menos de 2 dias em /etc que tenham mais de 5 Kbytes de tamanho: # find /etc -mtime -2 -and -size +5k – Procurar todos os diretórios dentro de /opt cujo grupo tenha acesso de escrita: # find /opt -type d -perm +g+w → touch: atualizar a data de um arquivo → diff: comparar dois arquivos, mostrando as diferenças entre eles. → Informações de Arquivos Vários comandos permitem obter maiores informações sobre arquivos e sistemas de arquivos. Eis os principais: – stat: detalhes sobre um arquivo ou diretório. # stat /bin/ls – file: identicar o conteúdo de um arquivo, analisando-o. # file /etc/* – du: indica o espaço usado em disco pelos arquivos ou diretórios dados. # du -h /root – df: informação sobre os sistemas de arquivos disponíveis na máquina e sua ocupação. # df -h – tree: apresenta na tela uma estrutura de diretórios, com ou sem os arquivos. # tree -d -L 1 /etc ATIVIDADES SUGERIDAS 1. Qual a função do comando wc? Quais são suas opções e o que representa cada uma delas? 2. Qual a função da opção -u do comando date? 3. Qual é o resultado de ( 30 - 5 ) * 789 ? 4. Qual é o resultado de ( 20 / 4 ) * 15 + 4 ? 5. Se posicione no diretório /tmp. 6. O que acontece se for digitado neste diretório o comando ls -l? Explique. 7. Quais as 2 possíveis formas de se posicionar no diretório /etc a partir do diretório /tmp ? 8. Crie dentro do seu diretótio “home” uma pasta “teste”. 9. Agora dentro da pasta “teste” crie dois arquivos texto (a e b) utilizando o comando “gedit”. 10 Ainda dentro da pasta “teste” crie a pasta “p”. 11. Agora mova os arquivos “a.txt” e “b.txt” para dentro da pasta “p”. 12. Dentro da pasta “p” remova apenas o arquivo “a.txt”. 13. Volte ao diretório “teste” e remova a pasta “p” contendo o arquivo “b.txt” 14 Volte ao seu diretório “home” e remova a pasta “teste”