Gerenciamento, suporte e comandos mais utilizados em ambientes Linux e Solaris Instrutor.: Frank S. Fernandes Bastos ([email protected]) Foco.: Adiquirir conhecimento preparatório para Concurso referente itens do conteúdo Linux e Solaris Público.: Estudantes de concurso específico Local.: Sala de aula Número Slides.: 166 (incluindo este) OBJETIVOS Transpor as barreiras no aprendizado para adquirir conhecimento suficiente para preparação e prova de concurso específico, Módulo Sistemas Operacionais Linux e Solaris. Breve Histórico Entre os vários sistemas operacionais existentes, o Unix é um exemplo vivo de maturidade e eficiência. Um de seus maiores pontos fortes é a confiabilidade e por isso, durante mais de trinta anos tem sido utilizado universalmente nas mais diversas aplicações e plataformas de hardware. Ao longo dos anos, várias versões do unix surgiram, tanto comerciais como Solaris, IRIX, HP-UX, AIX, e livres, como FreeBSD e Linux. Sendo o último objeto alvo deste treinamento. Cronologia Década de 1960 e início de 1970. Marcado pela era dos grandes computadores, caros e de difícil acesso à pessoas comuns. Com a crescente demanda por pesquisa era imprescindivel desenvolver um sistema operacional multi-usuário e multi-tarefa, que pudesse ser convertido para diferentes plataformas de hardware. Neste momento fora criado a primeira distribuição UNIX. Principais características agregadas.: Facilidade e praticidade na manipulação de objetos avançados de rede, facil administração de cotas de disco, FTP, e-mail, WWW, DNS, e o principal, baixo custo de implantação. Cronologia Dentre os principais criadores, destacam-se o grupo da universidade católica da Califórnia, em Berkeley, que em 1975 licenciou a versão 6 da AT&T que após aprimoramentos relançou-se como UNIX BSD Em 1980, o surgimento das versões baseadas em workstations onde as primeiras versões comeciais foram liberadas (SunOS, Solaris) e outros. Até meados da década de 80, o unix ainda não possuia uma interface gráfica própria, neste momento, associados ao instituto MIT (Massachusets Institute of Technology) fora desenvolvido o padrão X windows System utilizado como base até os dias de hoje. Cronologia Algumas datas importantes.: 1969, Ken Thompson cria o Unix 1971, É lançada a versão 1 do unix escrita em Assembly 1973, primeiro compilador C para Unix (Ritchie e Thompson) 1974, AT&T autoriza a distribuição do código-fonte Unix para universidades 1975, Lançada a versão 6 do unix 1978, Lançada a versão 7 do unix, agora com cobrança de licença Cronologia Algumas datas importantes.: 1979, AT&T lança o Unix System III 1983, AT&T lança o Unix System V e a Universidade da Califórnia lança o BSD Unix 4.2 (Sun utiliza o kernel como base para o SUNOS) 1984, Servidor X Window começa a ser desenvolvido no MIT (Massachusets Institute of Technology) 1986, Primeira implementação comercial do XWindows, utilizava VAX 1987, AT&T Lança o Unix System V release 3. É lançado o BSD 4.3. Neste momento a SUN e a AT&T concordam em fundir o BSD UNIX e Unix System V Cronologia Algumas datas importantes.: 1988, Criação do X Consortium, organização aberta que garante a evolução do X. Lançado o X11R3. 1990, AT&T lança o Unix System V Release 4, e a fusão com SUN coloca no mercado o MINIX através da internet. 1992, Lançamento do Solaris e do Linux 0.99pl5. 1992/1993, Lançada a primeira distribuição linux em CD-ROM (Yggdrasil) 1994, Lançada a versão livre do Xwindow, o XFree86, Microsoft lança o NT 3.5, dois anos depois, a versão NT 4.0 Cronologia Clone absoluto do Unix, criado como alternativa barata e funcional para quem não está disposto a pagar o alto preço de um sistema unix comercial ou não tem um computador suficientemente rápido. Em 1983, Richard Stallman fundou a Free Software Foundation, cujo projeto, GNU, tinha por finalidade criar um clone melhorado e livre do sistema operacional UNIX. O Linux Linus Benedict Torvalds, aluno da Universidade de Helsinque, Finlândia, no final de 1980. Percebeu que o Intel 80386 era o único microprocessador disponível na época capaz de executar um clone do unix. Sua opção por este processador garantiu a ele, posteriormente, o grande número de voluntários que tornou o desenvolvimento do linux viável até hoje. Cronologia do Linux 1969, Criação do Unix na AT&T. 1974, Distribuição do Unix para universidades. 1983, Richard Stallman cria a Free Software Foundation 1984, X window é criado no MIT. 1988, Criação do MINIX 1990, Linus Torvalds assiste à sua primeira aula de linguagem C. 1991, Linus Torvalds inicia o desenvolvimento do Linux. 1992, Versão 0.01 é discutida na internet. Lançada a versão 0.95 do Linux Cronologia do Linux 1993, A Yggdragil libera a produção da distribuição Linux 1994, Xfree86 e 0.99pl15 do linux são lançados. RED-HAT, Slackware e outras distribuições surgem em CD-ROM. 1995, primeira versão modularizada do linux 1996, Caldera lança a versão 1.0 com netscape incluso 1998, Conectiva Lança primeira distribuilção brasileira do linux baseada no RedHat. Licenciamento A licença GPL (GNU Public Licence) garante que o linux não seja um software de domínio público, mas licenciado á ele. Como vários grupos pelo mundo tem trabalhado conjuntamente para o desenvolvimento contínuo do LINUX, fez-se necessário a normatização e implantação do controle padrão de licenças. O linux segue o modelo de desenvolvimento aberto e, por isso mesmo, a cada nova versão liberada ao público, é considerado um “produto de qualidade”. CopyRight e Numeração de versões Versões r.x.y, onde x é um número par São versões estáveis e, enquanto o y é incrementado, apenas as correções de bugs são efetuadas. Assim, da versão 2.0.2 para o 2.0.3 houveram apenas correções de bugs e nenhuma característica nova. Versões r.x.y, onde x é um número impar São versões beta, destinadas apenas a desenvolvedores, podem ser instáveis e falhar, estão sujeitas a alterações por tempo indeterminado. Distribuições Diversas empresas e organizações de voluntários decidiram juntar os programas do Linux em “pacotes” próprios aos quais elas fornecem suporte. Esses “pacotes” são chamados de distribuições e, entre as mais famosas e utilizadas, destacam-se.: Red Hat, Mandrake, Conectiva (brasileira), Debian, SlackWare, SuSE e Caldera. LSB (Linux Standard Base), é um conjunto de padrões cujo objetivo é compatibilizar e padronizar as diversas distribuições Linux, permitindo assim que qualquer software escrito para linux seja executado em qualquer distribuição desenvolvida de acordo com o LSB. www.linuxbase.org; O que o Linux e o Solaris oferecem? O Linux oferece diversas vantagens para quem o utiliza. Entre elas, destacam-se: • Sistema multi-tarefa e multi-usuário de 32 ou 64 Bits • Sistema Gráfico XWindow • Suporte a linguagens (java, c, c++, pascal e outros) • Memória virtual gerenciável. • Código-fonte do kernel • Centenas de programas em GPL, incluindo compiladores • Estabilidade, segurança e Crescimento crescente. Termos utilizados Kernel Núcleo do sistema operacional, a parte mais próxima do nível físico (hardware). Composto de chamadas ao sistema, de acesso aos dispositivos de entrada e saída e de gerência de recursos. Shell Nome genérico de uma classe de programas que funcionam coo interpretador de comandos e linguagem de programação script (interpretado) no Unix. Mais populares.: bash, csh, ksh e zsh Script Script nada mais é que um arquivo que contém comandos shell, em uma situação normal podem ser executados pelo prompt. Gerenciamento de memória O linux é um sistema operacional com memória virtual paginada, isto quer dizer que podemos ter programas em execução cujo tamanho seja maior que a memória física disponível para executá-los. Com isso, o sistema passa a preocupar-se em manter em memória RAM apenas os programas que estão realmente em uso ou que possuem prioridade. Gerenciamento Gráfico Assim como vários outros sistemas operacionais, o linux também possui um bom ambiente gráfico. O ambiente gráfico do linux basea-se em um conceito chamado gerenciador de janelas, este, por sua vez, consiste em um software, rodando sob o X Windows System, que é responsável pelas funções de ajuste de tamanho de uma janela, minimização, maximização, etc. Dentre os gerenciadores de janelas mais utilizados, estão.: KDE, GNOME, XFCE, Enlightenment, Window Maker, AfterStep, Fvwm, e outros... Cabe lembrar que o uso de mouse é indispensável em ambientes gráficos no linux. Gerenciamento de arquivos Todas as informações utilizadas pelo linux e unix são baseadas em filesystem e arquivos. Estes podem conter textos, informações de programação, scripts, e qualquer outro tipo de informação.: Algumas informações.: No MS-DOS, os dispositivos de armazenamento são representados por unidades A:, B:, C: por exemplo. No linux, eles são representados por diretórios e filesystens cuja hierarquia é definida no momento de montagem. Existe diferenciação obrigatória entre letras maiúsculas e minúsculas (case sensitive) e não há bloqueio para inserção de espaços em nomes de arquivos e diretórios. Sistema de arquivos Os caracteres ( ! @ # $ % ^ & * ( ) { } [ ] ‘ “ ? | ; < > ` + - = \ / .. ) não podem ser utilizados em nomes de arquivos Não há extensões compulsórias como .COM e .EXE para programas e outras extensões conhecidas nos sistemas operacionais microsoft. Sistema de arquivos Tipos de arquivos do linux e solaris • Arquivos comuns, Texto, Dados, Scripts, binários e outros... • Diretórios, são arquivos de índice que contém os nomes de arquivos que serão armazenados ou organizados como um grupo • Links, Um arquivo que faz referência a outro arquivo ou diretório. • Device Files, arquivos utilizados para representar dispositivos de hardware. Ex.: /dev/hdc, /dev/lp1 • Sockets, São arquivos utilizados para comunicação entre processos. • Pipes, Arquivos também utilizados para comunicação entre processos e residem também no diretório /dev Mapeamento de arquivos para disco Existem vários sistemas de arquivos UNIX (Minix, ext, ext2, ext3, JFS, XFS, ReiserFS, UFS, FFS, entre outros). O Ext2 (sistema de arquivos estendido 2) é o sistema de arquivos padrão utilizado pelo Linux. No entanto, o Linux é capaz de utilizar vários sistemas de arquivos além do ext2, Minix (primeiras versões do linux), ext (estendido original), ext3 (ext2 melhorado com recuperação rápida de dados em caso de desligamento anormal), MS-DOS, VFAT, NTFS eo ISO9660 (para CDROM) Mapeamento de arquivos Quando o Disco Rígido é formatado com um sistema de arquivos padrão UNIX/LiNUX é criado nele uma estrutura de dados chamado iNODE. O bloco 0 é o bloco que contém o sistema operacional. O bloco 1, é o superbloco que contém informações sobre o sistema de arquivos, como o número de iNODES, número de iNODES livres, Número de blocos do disco, etc.. A eventual destruição do superbloco provoca a falha de leitura dos arquivos do sistema. Depois dos superblocos estão os iNODES, elementos essenciais ao sistema de arquivos do linux. Mapeamento de arquivos para disco Quando o usuário cria um arquivo, um iNODE é alocado para ele. Estes são numerados de 1 até algum número máximo definido na formatação de acordo com o tamanho do disco. Cada iNODE tem 64 Bytes e contém informações sobre um arquivo.: UID (Identif. De usuário dono do arquivo) e GID (identif. De grupo) Tipo do arquivo (comum, diretório, etc, ou 0 se o iNODE não estiver sendo utilizado Permissões, Data e Hora de criação, acesso e última utilização, número de links, tamanho e localização dos blocos iNODE não contém o nome do arquivo, essa informação está armazenada em um arquivo de diretório. iNODES e Mapeamento do disco Um arquivo de diretório contém várias entradas. Cada entrada contém o nome de um arquivo e o seu iNODE. Para abrir um arquivo em um diretório, o sistema operacional simplesmente lê o diretório, comparando o nome do arquivo a ser encontrado com cada uma das entradas, até que o nome seja encontrado. Se o arquivo estiver no diretório, o S.O. obterá seu iNODE e esta identificação será colocada em uma área que se chama tabela de iNODES, estrutura esta pertencente ao Kernel. Quando esse iNODE é lido, é obtida a localização dos blocos onde está armazenado o arquivo desejado e logo após este é lido. Divisão de blocos Bloco de boot Superbloco Tabela de iNODES Blocos de dados Estrutura básica do sistema de arquivos / - Diretório Raiz /boot - Kernel do sistema /proc - Sistemas de arquivos virtual de informações do kernel e proc. /dev - Arquivos de dispositivos de hardware /tmp - Arquivos temporários /etc - Arquivos de configuração do sistema /lib - Bibliotecas compartilhadas essenciais e módulos do kernel /mnt - Ponto de montagem temporária de sistemas de arquivos /opt - Pacotes de software opcionais Estrutura básica do sistema de arquivos /root - Diretório do superusuário root /home - Diretórios dos usuários /bin - Comandos essenciais do sistema. /sbin - Comandos essenciais de administração do sistema. /usr - Hierarquia secundária. /var - Dados variáveis Complemento de aula Navegação entre diretórios 1. Uso da estrutura / para referenciar a hierarquia de diretórios 2. Uso do . (ponto) e .. (dois pontos) para representação de posição Complemento de aula Permissões e Segurança de Arquivos 1. Totalmente baseado em Leitura, escrita e execução 2. Orientado ao Dono, Grupos e Outros 3. Pode-se atribuir pelos métodos numérico e literal Complemento de aula Entrada e Saída Padrão Todo shell em um sistema operacional precisa comunicar-se com o usuário por meio de dispositivos de entrada e saída. Da mesma forma, os programas normalmente se utilizam de serviços do sistema operacional para a comunicação com o usuário. No Linux, todo programa (incluindo o shell) possuir pelo menos três dispositivos associados: • Entrada-padrão de dados (stdin) • Dispositivo pelo qual os programas obtêm dados de entrada para executar suas tarefas. Na maior parte teclado do terminal. Entretanto atrávés do shell podemos associar parametros ou arquivos por direcionamento. Entrada e Saída Padrão • Saída-padrão de dados (stdout) • Dispositivo pelo qual os programas normalmente enviam seus resultados. Em geral, monitor de vídeo do terminal é o padrão. Comandos de redirecionamento do shell podem associar arquivos como saída. • Saída-padrão de erros (stderr) • Dispositivo para o qual mensagens e dados decorrentes de erros são enviados. Idem ao anterior podem ser desviados para arquivos ou vistos no monitor do terminal. Entrada e Saída Padrão Descritor Nome Abreviação Dispositivo 0 Entrada-Padrão Stdin Teclado 1 Saída-Padrão Stdout Vídeo 2 Saída-Padrão de erros Stderr Vídeo Complemento de aula Redirecionamentos O redirecionamento é um recurso bastante interessante e útil que permite aos dados de saída serem armazenados em arquivos ou impressos, bem como dados de entrada que sejam obtidos de um arquivo em vez do teclado. Pipping é um recurso que permite conectar a saída de um comando na entrada de outro, sem limitação do número de conexões entre comandos, mas desde que cada um deles leia e escreva na saídapadrão. Redirecionamentos Redirecionador ou pipe Função Comando > arquivo Redireciona a saída padrão Comando < arquivo Redireciona a entrada padrão Comando >> arquivo Concatena a saída padrão Comando << arquivo Concatena a entrada padrão Comando 2> arquivo Redireciona a saída de erro padrão Comando 2>> arquivo Concatena a saída de erro padrão Comando1 | comando2 Pipe de comandos Redirecionamentos Exemplos.: $ cat > arquivo1.txt Teste de inclusao de dados <ENTER> <CTRL> + < D > $ more arquivo1.txt Shell Introdução Shell é o nome genérico de uma classe de programas que funcionam como interpretador de comandos e linguagem de programação script (interpretada) no Unix ou Linux. Os shells mais populares são bash, csh, tcsh, ksh e zsh. O shell padrão do linux é o bash objeto alvo deste treinamento. Este shell é executado em um ambiente (environment) controlado por variáveis de ambiente, que são definições e valores que o shell e outros programas utilizam para configuração no momento em que é realizado o login. Arquivos de configuração Arquivo /etc/passwd e /etc/shadow Ambos os arquivos estão diretamente ligados às políticas de segurança dos ambientes unix e linux. passwd – Arquivo conteúdo de dados relacionados com usuários e associação a seus grupos. shadow - Armazenamento de senhas criptografadas. Arquivos de configuração Arquivo /etc/shells Contém os shells e programas que podem ser escolhidos pelo comando chsh. # cat /etc/shells /bin/bash /bin/bash2 /bin/sh /bin/ash .... Arquivos de configuração Arquivo /etc/profile Define as variáveis de ambiente para todos os usuários. É executado automaticamente no login. Complemento de aula Shell script Quoting A função do quoting é evitar a substituição de variáveis ou remover o significado dos caracteres especiais e palavras reservadas do shell, permitindo que estes sejam utilizados literalmente. Os caracteres ‘ (aspas simples), “ (aspas duplas) e \ (barra invertida) são usados para quoting. Shell script Quoting CONTINUAÇÃO É importante saber.: Qualquer string entre aspas simples é considerada literalmente, mas a substituição de parametros não é permitida. Qualquer string entre aspas duplas é considerada literalmente, mas a substituição de parametros é permitida. Qualquer caractere seguinte a \ é considerado literalmente. Shell script Quoting CONTINUAÇÃO Exemplos.: $ echo “você tem ‘ls | wc –l’ arquivos em ‘pwd’ “ $ echo ‘isto e um teste \”simples\”? ‘ $ export x=100 $ echo “o valor de \$x é $x” Shell script Formas de comandos (Execução) Forma Definição/Exemplos ;\ Executa comandos múltiplos em linhas separadas # comando1 ;\ Comando2 Comando & Executa em segundo plano Comando1;comando2 Executa múltiplos comandos em sequencia $cd;ls (comando1;comando2) Subshell; trata os comandos como um grupo $(date;who) > arquivo1.txt Comando1 | comando2 Pipe; utiliza a saída do comando 1 como entrada para o comando 2 Shell script Formas de comandos (Execução) Forma Definição/Exemplos Comando1 ‘comando2’ Substituição de comandos; utiliza a saída do comando2 como argumento para o comando1 $ vi ‘grep –l ifdef *.c’ Comando1 $(comando2) Substituição de comandos Comando1 && comando2 Executa o comando2 se o comando1 for bem sucedido. Comando1 || comando2 Executa o comando2 se o comando1 falhar {comando1;comando2} Executa os comandos no shell corrente. Complemento de aula Shell script Operadores Os operadores lógicos e aritméticos utilizados pelo shell bash são informados a seguir, em ordem decrescente de precedência.: Shell script Operadores Operador Descrição !,~ Negação lógica, complemento de 1 (utilizado em operações com bits) * /,% Multiplicação, divisão, módulo +,- Adição, subtração << , >> Deslocamento de bit à esquerda, deslocamento de bit à direita <= , >= Menor que ou igual, maior que ou igual <,> Menor que, maior que == , != Igualdade, desigualdade & AND ^ Exclusive OR | OR && AND lógico || OR lógico Shell script Variáveis Especiais Operador Descrição $# Número de parâmetros passados $- Opções fornecidas ao shell $? Valor de retorno do último comando do script $$ Número do processo do shell script em execução $! Número do último processo executado em background $n Argumento na linha de comando, onde n varia de 1 até 9, da esquerda para a direita $0 O nome do programa ou shell em execução $* Todos os parâmetros separados por espaços em branco. $@ O mesmo que o anterior Complemento de aula Shell script Substituição de parâmetros Operador Descrição $parâmetro Substitui parâmetro pelo conteúdo da variável. ${parâmetro} O mesmo que o anterior ${#parâmetro} Mostra o número de caracteres do parâmetro ${parâmetro=} O parâmetro torna-se nulo ${parâmetro-padrão} Se nenhum valor foi atribuído ao parâmetro, então utilizará padrão ${parâmetro=padrão} Se nenhum valor foi atribuído ao parâmetro, então utilizará padrão e novo valor. ${parâmetro+valor_novo} Se algum valor foi atribuído ao parâmetro, então utilizará valor_novo. ${parâmetro?mensagem} Se nenhum valor foi atribuído ao parâmetro, então exibe mensagem. Shell script Substituição de comandos O resultado da execução do comando é colocado no lugar do parâmetro. Pode ser demonstrada de duas formas.: $ (comando) ou ´comando´ . Exemplos.: $ echo o caminho para more é which more $ echo o caminho para more é `which more` $ echo o caminho para find é $(which find) Shell script Expansão de chaves É a combinação de todos os elementos entre as chaves, separados por vírgulas. Veja que em {,s}, o primeiro parâmetro é nulo, mas a vírgula é necessária. Exemplos.: $ echo {a,o}{,s} Shell script Expansão aritmética O bash permite a realização de aritmética com números inteiros Exemplos.: $ echo $((4*7)) Complemento de aula Shell script Entrada interativa Read <linha> Lê uma linha da entrada-padrão Exemplos.: $ echo –n “Digite seu nome.:” Read NOME SOBRENOME Echo “Prazer $NOME !” Processo INIT O que é? O processo init é o primeiro programa executado pelo kernel de qualquer sistema operacional Linux/Unix na sua inicialização. Durante o boot, após ler o MBR do disco e saber como deverá ser o processo de inicialização do sistema, o próximo passo do linux é montar o / (barra ou raiz) e inicializar seu primeiro processo, o INIT, este por sua vez é o único processo do linux que não pode ser abortado pelo usuário. Este é o processo pai de seu sistema operacional. Níveis de inicialização SysV init Os níveis de execução definem como o sistema operacional inicializará. Nível Funcionalid. acordo com Red Hat, Solaris, Suse 0 halt 1 Monousuário 2 Multiusuário, sem NFS 3 Multiusuário, com NFS 4 Reservado 5 X11 6 Reboot Processo de INIT Localização Os scripts de inicialização do linux estão localizados no diretório /etc/rc.d (ou, dependendo da distribuição, em etc como o Debian por exemplo). Neste diretório são encontrados os scripts de inicialização.: Rc.sysinit, Rc Rc.serial Rc.local E diretórios.: init.d, rc0.d, rc1.d, rc2.d .... Rc6.d Níveis de inicialização Localização O init.d contém vários scripts de inicialização. Já os diretórios rc0.d e os demais possuem links simbólicos para os scripts contidos em init.d. Cada script do diretório /etc/rc.d/init.d é concebido de forma a receber como argumento parametros de start, stop, restart e status. Sequência de inicialização Sequência de inicialização SysV init 1. O arquivo /etc/inittab é lido e assim, definido o nível em que o sistema iniciará 2. Init executa o script /etc/rc.d/rc.sysinit 3. O processo init executa o script /etc/rc.d/rc que recebe o nível de execução como parâmetro. 4. O script /etc/rc.d/rc executa os scripts de um dos diretórios /etc/rc.d/rc?.d de acordo com o nível escolhido. 5. Init executa o script /etc/rc.d/rc.local 6. Init executa o processo mingetty para configurar os terminais. Editando scripts de inicialização Entendendo os links contidos em /etc/rc.d/rc?.d O padrão descrito abaixo é padrão na maioria das distribuições linux. • Se um link for iniciado com uma letra K (kill), quer dizer que o serviço será interrompido naquele nível de execução. • Se um link é iniciado com a letra S (start), quer dizer que o serviço será iniciado naquele nível. • São executados primeiro os links com as letras K e depois com S, a ordem depende dos números posteriores as letras, se iguais, são executados em ordem alfabética. Complemento de aula Comandos básicos halt / shutdown / poweroff Desliga o computador Exemplo.: $ halt Comandos básicos reboot Reinicializa o computador Exemplo.: $ reboot Comandos básicos Init [Sinal] Envia sinais para o terminal, será abordado melhor mais a diante no treinamento. Sinal é um valor inteiro; 6 – fecha todos os programas e reinicia em modo normal. Exemplo.: $ init 6 Configurando serviços chkconfig <opção> <serviço> Gerencia os scripts de inicialização dos serviços e seus links simbólicos localizados nos vários diretórios de inicialização. # chkconfig 2345 60 50 lpd O script será executado nos níveis 2,3,4 e 5 e com prioridade de start 60 e de stop 50. --add Adiciona um serviço --del Remove um serviço --levels <n> <s> <off | on> Especifica os níveis de execução onde (n) é o nível e (s) o serviço. Editando scripts de inicialização Drives e arquivos de dispositivo Aos drives e partições do linux são dados nomes diferentes aos seus correspondentes em outros sistemas operacionais. Estes arquivos de dispositivos são encontrados no diretório /dev e são utilizados para a comunicação com os dispositivos em seu sistema (discos, mouse, etc.) Editando scripts de inicialização Exemplos de dispositivos de disco Dispositivo Descrição /dev/hda IDE Primária Master /dev/hda1 Partição 1 da IDE Primária Master /dev/hda2 Partição 2 da IDE Primária Master /dev/hdb IDE Primária Slave /dev/hdb1 Partição 1 da IDE Primária Slave /dev/hdb2 Partição 2 da IDE Primária Slave /dev/hdc IDE Secundária Master /dev/hdc1 Partição 1 da IDE Secundária Master /dev/hdc2 Partição 2 da IDE Secundária Master /dev/hdd IDE Secundária Slave /dev/hdd1 Partição 1 da IDE Secundária Slave /dev/hdd2 Partição 2 da IDE Secundária Slave ... ... Montando volumes automaticamente Montando automaticamente o sistema de arquivos /etc/fstab O arquivo /etc/fstab contém as entradas dos dispositivos e/ou partições que contém sistemas de arquivos existentes no linux. É possível adicionar mais dispositivos e/ou partições editando cuidadosamente esse arquivo. Montando volumes automaticamente Montando automaticamente o sistema de arquivos /etc/fstab 1ª coluna Dispositivo 2ª coluna Ponto de montagem 3ª coluna Tipo do sistema de arquivos (ext2, ext3, vfat, ...) 4ª coluna Opções de montagem Defaults – montagem padrão do dispositivo exec,noexec – Permite/Não execução de programas Auto,noauto – Monta/Não automaticamente user,nouser – Permite/não usuários comuns acessar rw, ro – Monta para leitura/gravação ou leitura somente Montando volumes automaticamente Montando automaticamente o sistema de arquivos /etc/fstab 5ª coluna Dump do dispositivo 0 Não faz o dump 1 Faz o dump 6ª coluna Verificação de reparo 0 Não faz 1 Faz verificação e reparo do dispositivo. Complemento de aula Arquivos de configuração Arquivo /etc/HOSTNAME Armazena o nome do computador. Exemplo.: cat /etc/HOSTNAME Linux.site Arquivos de configuração Arquivo /etc/hosts Contém uma lista de endereços IP e nomes de computadores da rede local. Exemplo.: cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.1 testelinux.linux.org.br servidor Arquivos de configuração Arquivo /etc/resolv.conf Nesse arquivo é configurado o cliente de DNS, que contém o nome do domínio do servidor DNS e o seu endereço IP. Exemplo.: cat /etc/resolv.conf Search linux.org.br Nameserver 192.168.1.2 Arquivos de configuração Arquivo /etc/sysconfig/network/* Neste diretório são encontrados os script´s que possuem informações sobre as interfaces de rede. O padrão de nomenclatura dos arquivos são.: ifcfg-<INTERFACE> Seu conteúdo pode variar mas geralmente são usados os campos.: DEVICE=eth0 IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes Complemento de aula Tipos de comandos Comandos internos São comandos que estão dentro de um shell interpretador de comandos. Quando o shell é carregado em memória, seus comendos ficam residentes nela. A principal vantagem destes comandos é a velocidade, pois, não precisamos acessar o disco para procurar e executar os mesmos, exemplos.: cd, alias, kill e logout Tipos de comandos Comandos externos São comandos que estão localizados em diretórios específicos no disco rígido, como /bin e /sbin. O linux precisa consultar o disco rígido sempre que um desses comandos é solicitado. A maioria dos comandos deste sistema operacional são externos. Exemplos.: ls, cp, rm, mv, mkdir e rmdir. Convenções • Quando o prompt que preceder o comando for o simbolo $, o comando poderá ser executado por qualquer usuário; • #, Somente pelo root • [TEXTO] sintaxe opcional • <TEXTO> sintaxe obrigatória • <nome_tecla>, tecla a ser precionada • <nome_tecla> + <nome_tecla2>, precionar simultaneamente. Comandos básicos Login Cancela a sessão atual e inicia uma nova sessão de usuário Exemplo.: $ login Comandos básicos Logout ou <CTRL> + <D> Termina a sessão do usuário Exemplo.: $ logout Comandos básicos Exit Encerra o shell de comandos corrente. Exemplo.: $ exit Comandos básicos – Ajuda online Man [opções] [seção] <comando>, para sair digite a tecla <Q> Consulta os manuais on-line do sistema operacional Opção Descrição -a Exibe todas as páginas do manual -h Exibe uma mensagem de ajuda -w Exibe a localização de páginas do manual a exibir Exemplo.: $ man ls Comandos básicos – Ajuda online info Exibe informações de um comando do sistema Opção Descrição -d <nomedir> Adiciona um diretório à lista de diretórios a ser procurada para arquivos. -f <arqinfo> Especifica o diretório a ser utilizado pelo comando info -h Exibe uma mensagem de ajuda. Exemplo.: $ info ls Comandos básicos – Ajuda online Whatis <palavra-chave> Consulta manuais on-line do sistema a apartir de um banco de dados. O usuário deve atualizar este banco de dados periodicamente com o comando makewhatis (root), para ajuda, digite makewhatis -? Exemplo.: $ whatis find, para sair tecle <Q> Comandos básicos – Ajuda online Apropos <palavra-chave> Exibe informações sobre um assunto específico apartir de um banco de dados. Esse comando utiliza o mesmo banco de dados do comando whatis. Exemplo.: $ apropos directory, para sair tecle <Q> Comandos básicos – Navegação cd [diretório] Muda, entra, no diretório de trabalho escolhido Exemplo.: $ cd /etc Comandos básicos – Navegação pwd Exibe o diretório corrente Exemplo.: $ pwd Comandos básicos – Navegação Tree [opções][diretório] Exibe a árvore de diretórios. Por padrão exibe arquivos e diretórios. Opções Descrição -d Exibe somente diretórios -l Segue links simbólicos Exemplo.: $ tree /var/lib Comandos básicos – Navegação Ls ou dir [opções][diretório] – Atenção.: DIR (exclusivo linux) Exibe o conteúdo dos diretórios Opções Descrição -a Exibe arquivos ocultos -l Exibe a listagem utilizando o formato longo de nomes -i Inclui na exibição o número do iNODE -t Ordena por data de alteração -r Reverte a ordenação (ordem inversa) -R Recursivo Comandos básicos – Navegação Find [caminho] [opções] <nome_arquivo> Procura arquivos no disco rígido. Opções Descrição -name Localiza arquivos cujos nomes sejam iguais ao especif. -follow Processa diretórios incluídos por meio de links -maxdepth <n> Restringe buscas a n níveis de diretórios. -ctime <n> Combina arquivos modificados exatamente n dias atrás -mtime <n> Combina arquivos não modificados n dias atrás -atime <n> Arquivos não utilizados n dias atrás Comandos básicos – Navegação Grep (UNIX), fgrep, egrep (LINUX) [opções] <padrão> <arquivos> Procura em um ou mais arquivos por linhas que contenham o padrão. Opções Descrição -F Utiliza expressões sem metacaracteres -E Padrão é uma expressão regular -e <expr> Procura pela expressão regular expr. -n Exibe o número da linha que contém padrão. -c Exibe apenas o número de linhas (quantidade) -f <arquivo> Lê o padrão a partir do arquivo Comandos básicos Strings [opções] <arquivo> Procura texto em arquivos binários. Opções Descrição -a Procura strings em todo o arquivo e não somente nos segmentos de texto e dados dos arquivos. -f Imprime o nome do arquivo antes de cada string Exemplo.: $strings /usr/games/sdoom | grep DOOM Comandos básicos Whereis [opções] <comando> Localiza o arquivo binário. O código-fonte e a página do manual para um comando. Opções Descrição -b Localiza apenas arquivos binários -s Apenas código-fonte -m Apenas páginas de manual Exemplo.: $whereis rpm Comandos básicos – Navegação Which <comando> Procura por um comando em diretórios e na variável de ambiente PATH. Exemplo.: $which clear Comandos básicos – Navegação Touch [opções]<arquivo> Atualiza a última data de acesso ao arquivo. Caso o arquivo não exista, será criado vazio por padrão. Opções Descrição -c Não cria o arquivo caso ele não exista. -m Atualiza somente a hora da modificação. -a Atualiza somente a data de acesso. Exemplo.: $touch arquivo1.doc Comandos de Manipulação de arquivos Rm [opções]<arquivos> Remove arquivos. Opções Descrição -f Não exibe mensagens de confirmação para eliminar -i Pede confirmação antes de eliminar. -r Apaga recursivamente -v Exibe o nome de cada arquivo antes de eliminá-lo. Exemplo.: $rm arquivo1.doc Comandos de Manipulação de diretórios mkdir [opções]<nome_diretório> Cria diretórios. Opções Descrição -p Cria os diretórios pai se ainda não existirem. -m <modo> Cria um diretório com o modo de acesso modo. Vide chmod --verbose Mostra o nome de cada diretório criado. Exemplo.: $mkdir dir1 Comandos de Manipulação de diretórios rmdir [opções]<nome_diretório> Remove diretórios. Opções Descrição -p Remove os diretórios intermediários se vazios. --verbose Mostra o nome de cada diretório removido. Exemplo.: $rmdir dir1 Comandos de Manipulação de diretórios mv [opções] <fonte> <destino> Move ou renomeia arquivos e diretórios. Opções Descrição -b Faz backup de arquivos que estão sendo movidos ou renomeados -f Remove arquivos existentes, sem confirmação -i Pede confirmação antes de mover um arquivo. -v Exibe o nome do arquivo antes de movê-lo. Exemplo.: $mv arq1 arq2 Comandos de Manipulação de diretórios cp [opções] <caminho_origem> <caminho_destino> Copia um ou mais arquivos. Opções Descrição -a Preserva todos os atributos de arquivo. -b Faz backup antes de copiar -d Copia um link, mas não o arquivo apontado por este. -i Pede confirmação antes de sobrescrever arquivos. -l Cria links diretos em vez de copiar arquivos -p preserva propriedade, permis.e time stamp. Comandos de Manipulação de arquivos Ln [opções] <caminho> <nome_link> Cria links para arquivos e/ou diretórios. Opções Descrição -s Cria link simbólico -d Cria link direto para diretório. -f Força a criação do link -b Faz backup de cada arquivo de destino existente. -i Pede confirmação antes de remover arquivo. Exemplo.: $ln –s /exercicios/temp link Comandos de terminal clear Limpa a tela do terminal virtual corrente. Exemplo.: $ clear Comandos de terminal Echo [opções] <mensagem> Envia mensagem para o terminal. Opções Descrição -n Não imprime mudança de linha após a mensagem -e Habilita a interpretação de caracteres de escape na mensagem. Exemplo.: $ echo ´alo pessoal´ Comandos de terminal Mesg [opções] Controla o recebimento de mensagens pelo terminal. Sem argumentos, mostra o estado atual. Opções Descrição Y Ativa o recebimento de mensagens N Desativa o recebimento de mensagens Exemplo.: $ mesg y Comandos de sistema Uname [opções] Exibe informações sobre o sistema operacional e o hardware Opções Descrição -a Exibe todas as opções -m Exibe o nome da plataforma -n Exibe o nome da máquina -s Exibe o nome do sistema operacional -v Exibe a data de lançamento do sistema operacional -r Exibe a versão do sistema operacional Comandos de paginação Cat [opções] <arquivo> Utilizado para visualizar o conteúdo dos arquivos. Opções Descrição -A Exibe todos os caracteres especiais -b Numera apenas as linhas não vazias. -n Numera todas as linhas na saída -v Exibe caracteres não passíveis de impressão (controle) -e Exibe final de linha (como $) -t Exibe caracteres de tabulação como ^I Comandos de paginação More [opções] arquivo Exibe arquivos de texto. Opções Descrição +n Exibe o arquivo começando na linha específica -s Reduz múltiplas linhas em branco a uma única Exemplo.: $ more /etc/mtools.conf Comandos de filtragem Head [opções] <arquivo> Exibe na saída-padrão uma quantidade de linhas de texto a partir do início do arquivo. Opções Descrição -n Exibe as n primeiras linhas do arquivo -b n Exibe os n primeiros blocos do arquivo -c n Exibe os n primeiros caracteres (bytes) do arquivo Exemplo.: $head -5 /etc/mtools.conf Comandos de filtragem Tail [opções] <arquivo> Exibe na saída-padrão uma quantidade de linhas de texto a partir do final do arquivo. Opções Descrição -n Exibe as n últimas linhas do arquivo -b <n> Exibe os n últimos blocos do arquivo -c <n> Exibe os n últimos caracteres (bytes) do arquivo -f Deixa em espera pelas últimas linhas. Exemplo.: $tail –f erros.log Comandos de filtragem Wc [opções] <arquivo> Conta palavras da entrada-padrão ou de um arquivo e apresenta o resultado na saída-padrão. Opções Descrição -l Conta as linhas -w Conta as palavras -c Conta os caracteres Exemplo.: $wc –l /etc/mtools.conf Comandos de filtragem Tr [opções] [str1 [str2]] Substitui caracteres da entrada-padrão presentes em str1 por seus correspondentes em str2. Opções Descrição -c Efetua a troca de todos s caracteres que não estejam especificados em str1 -d Elimina ocorrências de caracteres de str1 na entrada -s Elimina repetições de caracteres de str2 na saída Exemplo.: $ ls | tr ‘a-z’ ‘A-Z’ Comandos de filtragem Sort [opções] <arquivo> Ordena os dados recebidos da entrada-padrão ou de um arquivo, escrevendo-os na saída-padrão. Opções Descrição -m Intercala dois arquivos já ordenados, escrevendo a intercalação na saída padrão -r Inverte a ordem da classificação, de ascendente para descendente. -t <separador> Utiliza separador como caractere de separação de campos Exemplo.: $ sort teste.txt Comandos de filtragem Cut [opções] <arquivo> Seleciona trechos de cada linha de texto recebido da entrada-padrão ou de um arquivo, apresentando o resultado na saída-padrão. Opções Descrição -b <bytes> Seleciona bytes -c <caracteres> Seleciona caracteres -f <campos> Seleciona listas de campos, onde estas podem ser números separados por vírgulas ou faixas de números como n1-n2, ou ainda combinações de ambos. -d <c> Especifica o deliminatador c Exemplo.: $ cut –f 1,5 –d: /etc/passwd Comandos de filtragem Paste [opções] <arquivo> Exibe lado a lado o conteúdo de arquivos. Opções Descrição -s Exibe as linhas de um arquivo em série em vez de uma linha abaixo da outra -d <c> Especifica o delimitador de campos como sendo o caractere c Exemplo.: $ paste –d, arquivo1.txt arquivo2.txt Comandos de filtragem Tee [opções] <arquivo> Exibe a saída de um programa e a escreve em um arquivo simultaneamente. Opções Descrição -a Concatena o arquivo em vez de sobrescreve-lo -i Ignora interrupções. Exemplo.: $ ftp ftp.suse.com | tee ftp.out Comandos de filtragem Diff [opções] <arquivo1> <arquivo2> Exibe na tela as diferenças entre dois arquivos-texto (ou todos os arquivos com mesmo nome em dois diretórios). Opções Descrição -a Considera todos os arquivos do tipo texto -b Ignora sequencias de espaços e caracteres de tabulação -d Tenta localizar um conjunto menor de modificações -f Gera saída similar à da opção –e, mas de interpretação mais facil -i Não distingue maisculas e minusculas Comandos de compactação e fracionamento Tar [opções] <arquivos_ou_diretórios> [arquivo_tar] Armazena ou extrai vários arquivos e diretórios dentro de um único arquivo ou dispositivo. Opções Descrição -c Cria um novo arquivo .tar e adiciona a ele os arquivos especificados -x Retira os arquivos agrupados no arquivo .tar -f Indica que o destino é um arquivo em disco e não uma fita magnética -t Lista o conteúdo do arquivo .tar -v Exibe o nome de cada arquivo proces. Comandos de compactação e fracionamento Split [opções] <arquivo [prefixo]> Divide um arquivo em partes. Para reunir as partes, utilize o comando cat. Opções Descrição -b n[k|m] Especifica o número de bytes de cada parte. Os modificadores k (kilobytes) e m (megabytes) podem ser utilizados. [prefixo] Especifica o prefixo a ser usado no nome de cada parte do arquivo original (default=x) Exemplo.: $ split –b1400k teste.txt part Comandos de compactação e fracionamento Compress [opções] <arquivos> Compacta um ou mais arquivos utilizando a compactação Lempel-Ziv. Opções Descrição -c Grava o arquivo compactado na saída-padrão e retém o arquivo original -d Descompacta o arquivo. -r Compacta recursivamente arquivos em todos os subdiretórios -v Exibe uma mensagem conforme cada arquivo é compactado. -V Exibe a versão do comando. Comandos de compactação e fracionamento UnCompress [opções] <arquivos> Descompacta um ou mais arquivos compactados com compress. Opções Descrição -c Grava o resultado na saída-padrão e retém o original -r Descompacta recursivamente -v Exibe uma mensagem conforme cada arquivo é descompactado. -V Exibe a versão do comando. Exemplo.: $ uncompress documentos.tar.Z Comandos de compactação e fracionamento Gzip [opções] <arquivos> Compacta um ou mais arquivos. Opções Descrição -c Grava o arquivo compactado e retém o original -d Descompacta arquivo -f Sobrescreve existentes -h Exibe mensagem de ajuda -l Lista o conteúdo de um arquivo compactado. -t Testa a intregridade do arquivo compactado. Comandos de compactação e fracionamento gunzip [opções] <arquivos> Descompacta arquivos compactados pelos comandos gzip e compress. Utiliza as mesmas opções de gzip. Exemplo.: $ gunzip documentos.tar.gz Dicas Manipulação de arquivos com espaços em nomes Em alguns momentos, caracteres especiais ou espaços em nomes de arquivos atrapalham rotinas ou acessos aos mesmos. Para tal, observa-se a inclusão de aspas nos acessos aos mesmos como no exemplo abaixo. Exemplo.: $ mkdir “Meus Documentos” $ cd “linux teste” Pacotes Gerenciadores de pacotes (package managers) As várias distribuições do linux possuem formas diferentes de instalação de pacotes, as distribuições RedHat, Debian e Slackware possuem gerenciadores de pacotes (package managers) para a instalação de programas. A enfase na maioria das vezes se dá em cima do RPM (Red Hat Package Manager) que utiliza estes pacotes .rpm e é o gerenciador de pacotes mais utilizado nas distribuições linux. Pacotes Rpm [opções] <nome_pacote> Gerenciador de pacotes da Red Hat Opções Descrição -i Instalação simples -v Exibe detalhes da instalação -h Mostra o caractere # como progresso da instalação -U Atualização de programa de uma versão anterior para uma atual. --nodeps Não procura dependências (útil para instalar vários pacotes relacionados, a ordem de instalação dos pacotes não importará). Pacotes Dpkg [opções] <nome_pacote> Gerenciador de pacotes do Debian (.deb) Opções Descrição -i Instalação simples -r Desinstala o pacote (exceto arq. De configuração) -P Desinstala o pacote (Todos os arquivos) -l Exibe os pacotes que estão instalados. -S Exibe o pacote do qual o arquivo faz parte. -L Exibe os arquivos que fazem parte de um pacote instalado Pacotes Installpkg [opções] <nome_pacote> Principalmente o slackware faz uso do programa pkgtool para instalar e desinstalar pacotes do sistema. Além dele, existem outros como o installpkg (instalador de pacotes binários do slackware). -warn Somente gera um relatório do que aconteceria se um pacote fosse instalado. -m Faz um pacote do diretório corrente e seus subdiretórios como um pacote com o nome especificado. -r Instala o conteúdo do diretório corrente e seus subdiretórios como um pacote com nome especificado. Exemplos.: $ installpkg tree-1.3-1cl.i386.tgz Pacotes removepkg [opções] <nome_pacote> Removedor de pacotes Opções Descrição -warn Somente gera um relatório do que aconteceria se um pacote fosse desinstalado. -keep Salva os arquivos temporários criados. Exemplos.: $ removepkg tree-1.3-1cl.i386.tgz Pacotes Instalação customizada Esta é a forma mais difícil e menos usual de instalar um pacote, pois, esses arquivos são o programa fonte propriamente dito de forma compactada. A primeira ativida consiste na descompactação do pacote.: $ tar –xvzf <nome_arquivo> Após descompactado, entre no diretório e execute o script de configuração, compilação e instalação. $ ./configure $ make $ make install Pacotes Pkgadd [nome pacote] Instalador de pacotes padrão do solaris Pkgadd solaris-ed-kb22123.pkg Pacotes Apt-get [opções] <comando> [pacote] Utilitário para manipulação de pacotes. Opção Descrição -d Faz download de pacotes, mas não os instala -f Repara um sistema com dependencias quebradas -h Exibe uma mensagem de ajuda -v Exibe a versão do comando Pacotes Apt-get [opções] <comando> [pacote] CONTINUAÇÃO Utilitário para manipulação de pacotes. Comando Descrição Update Atualiza banco de dados do apt-get com arquivos Install <pct> Instala um novo pacote Source <pct> Faz o download do pacote rpm fonte para o diretório Remove <pct> Remove um pacote Upgrade Procura por pacotes desatualizados e atualiza Dist-upgrade Semelhante à upgrade, instala novos se necessário Clean Remove arquivos de /var/cache/apt/archives Comandos de edição O Editor vi O vi é um editor de textos que possui dois modos de interação com o usuário: o modo de comando e o modo edição. Quando iniciado, o vi trabalha em modo comando. O modo edição pode ser acessado teclando-se um dos comandos de tecla como <I> (inserção) e o modo comando teclando-se <esc> e o comando pertinente. Exemplo.: $ vi $ vi arquivo.txt Comandos de edição Vi <arquivo> CONTINUAÇÃO Editor de textos Comando Ação <:>+<q> Sai do vi sem salvar < : > + < q! > Sai do vi forçadamente sem salvar < : > + < qw > Sai do vi salvando o arquivo corrente <:>+<w> Salva o arquivo corrente < : > + < w arq> Salva o arquivo corrente com o nome arq < : > + < e arq> Abre o arquivo arq < : > + < r arq> Insere o arquivo arq no ponto. Variáveis Variáveis de ambiente • Variáveis de ambiente locais • Disponíveis somente para o shell corrente, não sendo acessadas pelos subprocessos. • Variáveis de ambiente globais • Disponíveis tanto para o shell corrente como para os subprocessos que venham fazer uso delas. Variáveis, atribuição Export <variável_ambiente> [=valor] Torna global o valor de uma variável de ambiente. Exemplo.: $ EDITOR=/usr/bin/pico $ export EDITOR Ou $ export EDITOR=/usr/bin/pico Variáveis, atribuição set Verifica lista de variáveis e valores das variáveis carregadas. Exemplo.: $ set Variáveis, atribuição Unset <variável_de_ambiente> Exclui o valor de uma variável de ambiente. Exemplo.: $ unset EDITOR Variáveis, atribuição printenv Exibe a lista de variáveis de ambiente. As variáveis de ambiente são tradicionalmente escritas em letras maiúsculas, embora isto não seja obrigatório Exemplo.: $ printenv Variáveis, Valores PATH Indica os lugares onde o bash deverá procurar programas executáveis. Quando for necessário executar programas que estejam fora do PATH deve-se incluir na frente do nome do executável “. /<programa>” Exemplo.: $ echo $PATH Variáveis, Valores SHELL Exibe o shell em uso corrente. Para alterar o shell corrente, use o comando chsh. Exemplo.: $ echo $SHELL Shell Chsh [opções] [usuário] Alterar o shell default que é iniciado no login. Opção Descrição -l Lista os shells disponíveis -s <shell> Especifica o nome do shell executável a ser utilizado (o shell pode ser qualquer programa listado no arquivo /etc/shells, como /bin/bash e /bin/csh Exemplo.: $ chsh -l Variáveis, Valores DISPLAY Indica qual é o terminal gráfico corrente. Só funciona quando executado sob o X window. Exemplo.: $ echo $DISPLAY Variáveis, Valores PS1 e PS2 São os prompts (níveis 1 e 2) que serão mostrados pelo bash, para lhe requisitar uma linha de comando. Código Descrição \! Exibe o número de histórico do comando corrente. \# O número desse comando. \$ Use $ como prompt para todos os usuários, exceto o usuário root, que tem # como seu prompt. \w Diretório de trabalho corrente. \[ Inicia a sequencia de caracteres não passíveis de impressão Variáveis, Valores PS1 e PS2 CONTINUAÇÃO São os prompts (níveis 1 e 2) que serão mostrados pelo bash, para lhe requisitar uma linha de comando. Código Descrição \u Exibe o nome do usuário Exemplos.: $ PS1=“Data: \d Tempo.: \t->” Histórico de comandos History [opções] Exibe o histórico de comandos. Opção Descrição -r Utiliza o arquivo .bash_history como histórico, em vez da lista de histórico de trabalho. -w Reescreve o arquivo .bash_history. Exemplo.: $ history Comandos (sinônimos) Alias [sinonimo=“comando”] Exibe e define sinônimos de comandos Unix e Linux. Os sinônimos permitem criar novos “comandos” que correspondem a qualquer linha de comando válida do shell Exemplo.: $ alias zera=“clear” Comandos (sinônimos) unalias [sinonimo] Desfaz um sinônimo existente. Exemplo.: $ unalias zera Shell script Shell Scripts Podemos escrever programas de shell criando arquivos script contendo séries de comandos de shell. A primeira linha do arquivo script deve começar com #!<caminho_shell>, que indica ao kernel que o arquivo script é executável. Para o shell bash, a primeira linha será da seguinte forma.: #!/bin/bash Outra importante atividade é determinar as permissões para o script.: # chmod u+x <shell_script> Shell script Editor de fluxo SED (Stream Editor) Efetua operações de procura, substituição, inserção e apagamento em arquivos de texto, sendo muito utilizado em programação shell. [<endereco1>, [<endereço2>]] <função> [argumento] Exemplos.: # sed ‘s/bash/csh/g’ /etc/passwd Substitui a palavra bash por csh no arquivo /etc/passwd # sed ‘3,5d’ arquivo1 Apaga as linhas 3, 4 e 5 do arquivo 1 Shell script Linguagem awk É uma linguagem interpretada e poderosa. Em programação shell é muito utilizada para separar campos. É mais flexível que o comando cut. Exemplo.: # cat /etc/passwd | awk –F : ‘{print $1}’ Imprime a primeira coluna do arquivo /etc/passwd # echo 192.168.0.1 | awk –F . ‘{print $4 “.” $3 “.” $2 “.” $1}’ Imprime o endereço IP ao contrário Shell script Let <expressão> Realiza aritmética com números inteiros. Exemplos.: $ echo –n “Digite dois números.:” Read A B Let C=0 Let C=A+B Echo $(( C )) Shell script – Estruturas condicionais if Execução de blocos de comandos condicionais. If <expressão> then [[ comandos ]] Elif <expressão> then [[ comandos ]] Else [[ comandos que serão executados se nenhum acima for verdadeiro ]] fi Shell script – Estruturas condicionais if Exemplo.: #!/bin/bash Echo –n “digite sua idade:” Read i If [ $i < 20 ] then echo voce é novo (a) Else echo voce é velho (a) fi Shell script – Estruturas condicionais case Testa o valor com os parâmetros descritos em cada condição, caso nenhum seja atendido executará o contido no parâmetro *. Case <valor> in param1) comando;; param2) comando;; *) comando;; esac Criação de menus Select CONTINUAÇÂO Criação de menus #!/bin/bash Select NOME in frank.txt teste.txt outro.txt Do vi $NOME Done Exit Shell script – Loop for Executa um loop enquanto condição não atingir o topo. For <variável> in <valores> Do <comandos> done Shell script – Loop Condicional While Executa loop enquanto condição verdadeira. #!/bin/bash While [ $# -gt 0 ] Do echo $1 shift Done Partições Fdisk [opções] [dispositivo] Cria partições no disco rígido. Opção Descrição -l Exibe as partições e sai. -s Exibe o tamanho da partição, não para MS-DOS. Se utilizado o menu do fdisk, devemos especificar o dispositivo.: Exemplo.: fdisk /dev/sda1 Editando scripts de inicialização Mkfs [opções] <dispositivo> Cria um sistema de arquivos em um dispositivo de armazenamento (formata logicamente o dispositivo) Opções Descrição -v Exibe as operações que o comando mkfs executa. -c Verifica a existência de blocos ruins -t <tipo> Determina o tipo, pode ser ext2, ext3, reiserfs ou msdos Exemplo.: mkfs –t ext2 /dev/hdb1 Formatando um disquete Formatando um disquete – fdformat [opções] <disp> <tipo> Efetua formatação de baixo nível em um disco flexivel sem criar um sistema de arquivos. Opções Descrição -n Não faz verificação após formatação tipo H1200 = Drive 5 ¼ 1.2Mb H1440 = Drive 3 ½ 1.44 Mb Exemplo.: fdformat /dev/fd0H1440 Verificando espaço em disco Verificando espaço em disco – df [opções] [dispositivo] Verificar espaço em disco. Opções Descrição -i Mostra os valores em inodes -k Mostra os valores em kilobytes Exemplos.: df /dev/sda1 Verificando espaço ocupado Du [opções] [arquivo ou diretório] Informa o espaço ocupado pelos arquivos ou diretórios. Opções Descrição -a Exibe os dados dos diretórios e arquivos -b Exibe os dados em bytes -m Exibe os dados em megabytes -s Exibe apenas o espaço total ocupado Exemplo.: du /usr Recuperação de FileSystem Fsck [opções] <dispositivo> Verifica e repara um sistema de arquivos de um dispositivo de armazenamento. Opções Descrição -A Verifica todos os sistemas de arquivos da fstab -C Mostra barra de progresso (so para ext2/ext3) -N Mostra apenas o que seria feito -a Repara automaticamente todos os sistemas de arquivo -r repara interativamente o sistema de arquivos -t <tipo_sist> Especifica o tipo de sistema Criando discos de boot Mkbootdisk [opções] <versão_kernel> (REDHAT) Cria um disquete de inicialização com o LILO. Obrigatoriamente devese estar utilizando o LILO para tal. Mkbootdisk -- verbose –device /dev/fd0 2.4.18-3 Identificação de hardware Reconhecimento de hardware No linux e solaris, todo reconhecimento de hardware é feito por softwares especialistas que fazem a interação com sistema operacional para obter as informações necessárias. Identificação de hardware Pnpdump [opções] > [arquivo] Procura dispositivos plug & play ISA no computador. Opção Descrição -d Exibe o conteúdo de todos os registradores das placas -c Configura as placas plug & play ISA removendo conflito Exemplo.: pnpdump –c > /etc/isapnp.conf Identificação de hardware isapnp <arquivo> Configura placas plug & play a partir do arquivo gerado pelo comando pnpdump. É chamado pelo arquivo /etc/rc.d/rc.sysinit quando o linux é inicializado. Exemplo.: isapnp /etc/isapnp.conf Identificação de hardware Lspci [opções] Exibe informações sobre os dispositivos PCI conectados ao computador. Opções Descrição -v Exibe informações detalhadas sobre os dispositivos PCI conectados ao computador. Exemplo.: lspci -v Contato Frank S. F. Bastos E-MAIL.: [email protected] MSN.: [email protected] Skype.: frankbastos