Escolar Documentos
Profissional Documentos
Cultura Documentos
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
1 - SOBRE SHELLS E JANELAS DE TERMINAL
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Sintaxe do prompt:
[usuário_comun@sistema diretório] $
[usuário_root@sistema diretório] #
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
2 - ESCOLHENDO SEU SHELL
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
tty - TeleTypewriter
Um programa que emula uma console virtual
who - É o comando que lista todos os usuários que estão logados no sistema. Pode
ser utlizado com algumas das suas opções para mais
detalhes.
ex. $ date
Sat Nov 26 08:04:00 EST 2011
Nota:
Normalmente, os comandos tendem a ser digitalizados com mais carateres. Esses
carateres servem para determinar o comportamento do comando em si. Tais
carateres são normalmente as opções e os argumentos.
-l : lista longa
-a : exibir arquivos ocultos
-t : listar por tempo
-h : leitura humana
Nota:
O comando date tem uns tipos de opções especias que começam com o + ao invés
de - .
Por exemplo, podemos formatar a forma na qual a data é exibida.
Para saber como usar estas opções, digite primeiro o seguinte comando:
date --help
date "+%d-%b-%y"
date "+%d-%B-%y"
Note que todo o usuário no sistema Linux é atribuido uma identidade que
contém, informações
tais como, o nome do usuário no sistema, o seu id, os grupos nos quais ele
está inserido e os
seus ids nestes grupos.
$ id
uid=501(chris) gid=501(chris) groups=105(sales), 7(lp)
O usuário chris tem o id número 501, o seu grupo primário é o chris onde ele
tem o id 501, ele
pertence também a alguns grupos secundários tais como sales onde ele tem o id
105 e o grupo lp onde
ele tem o id número 7.
$ who -uH
chris é o usuário logado. Ele está logado no tty1 que é o primeiro console
virtual no monitor conectado
ao computador e sua sessão de login começou às 20:57 no dia 13 de janeiro. O
tempo IDLE mostra quanto
tempo o shell ficou aberto sem qualquer comando ser digitado ou seja, tempo
de inatividade onde o ponto,
indica que ele está ativo no momento. PID exibe o ID do processo do shell de
login do usuário. COMMENT
iria mostrar o nome do computador caso o usuário tivesse logado apartir de um
computador remoto.
* Localizando comandos
Por exemplo, é sabido que o comando date está localizado no diretório bin,
logo:
$ /bin/date
Os caminhos dos comandos podem ser muito longos e para evitar ter que se
memorizar longos caminhos para
a execução de comandos, é recomendável armazenar os comandos em um diretório
conhecido e adicionálos para
a variável de ambiente PATH do shell do usuário.
Esta variável contém os caminhos dos diretórios que armazenam os comandos e
os organiza de forma sequencial.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/sbin:
/home/cn/bin:/sbin
Nota:
Nem todos os comandos estão localizados em diretórios na variável PATH.
Alguns comandos estão
predefinidos no shell.
$ type comando/executável ou
$ which comando/executável
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
4 - LEMBRANDO COMANDOS COM O HISTÓRICO DE COMANDOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Umas das vantagens é que pode se dar o caso em que os comandos executados são
longos ou que queremos fazer
algumas alterações na forma na qual eles serão executados.
Ex. $ !17
Ex. $ !!
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
5 - CONECTANDO E EXPANDINDO COMANDOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Expressão Regular
Ex. ls Testo?
Ex. ls Tes*
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
6 - USANDO VARIÁVEIS DE SHELL
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
O shell armazena informações em variáveis que podem ser úteis para a sessão de
shell do usuário.
Exemplo de variáveis:
set
Variáveis de Ambiente são espaços na memória que armazenam informações que servem
para
customizar as sessões de shell dos usuários.
env
declare
alias
* Encerrando o shell
exit ou ctrl + D
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
7 - CRIANDO SEU AMBIENTE DE SHELL
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
etc/profile
etc/bashrc
bash_profile
bashrc
bash_logout
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
8 - OBTENDO INFORMAÇÕES SOBRE COMANDOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
$ echo $PATH
Nota:
A maior parte dos comandos acessíveis se encontram no diretório /bin.
help | less
help comando
man comando
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
/bin
Contém comandos de usuários Linux tais como, ls, sort, date, chmod, etc.
/boot
Contém o kernel inicializável do Linux e os arquivos de configuração do
carregador de inicialização.
/dev
Contém arquivos que representam os pontod de acesso a dispositivos em seus
sistemas. Alguns dispositivos são:
terminal (tty*)
disquetes (fd*)
discos rígidos(hd* ou sd*)
RAM (ram*)
CD-ROM(cd*)
/etc
Contém os arquivos de configuração administrativa.
/home
Contém diretórios atribuídos a cada usuário regular com uma conta de login. O
usuário root é
uma exceção, usando o /root como seu diretório inicial.
/media
Fornece uma localização padrão para dispositivos de automantagem (mídia
removível). Se o produto
possuir um nome de volume, esse nome é normalmente usado como ponto de
montagem.
Ex.
Se um USB tem o nome de volume myusb, ele seria montado em /media/myusb.
/lib
Contém bibliotecas compartilhadas requeridas por aplicativos em /bin e /sbin
para inicializar o sistema.
/mnt
Um ponto de montagem comum para muitos dispositivos. Muito usado para montar
sistemas de arquivos locais
ou remotos que não são montados de forma permanente.
/misc
Um diretório usado às vezes para montar sistemas de arquivos mediante
solicitação.
/opt
Estrutura de diretórios disponíveis para armazenar software suplementar.
/proc
Contém informações sobre os recursos do sistema.
/root
Representa o diretório do usuário root
/sbin
Contém comandos administrativos e processos de daemon.
/usr
Contém a documentação do usuário, jogos, arquivos gráficos (X11), bibliotecas
(lib) uma variedade de outros comandos
e arquivos que não são necessários durante o processo de inicialização.
/var
Contém diretórios de dados utilizados por vários aplicativos.
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
USANDO COMANDOS BÁSICOS DO SISTEMA DE ARQUIVOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
$ pwd : print working directory, nos diz onde estamos no sistema de arquivos.
Nota:
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
USANDO METACARACTERES E OPERADORES
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
ls g*t : lista os arquivos que começam com a letra g, têm qualquer número de
caracteres ao meio e terminam com o caractere t.
ls ????e :
ls g???e* :
ls [abw]* :
ls [agw]*[ne]
{} pode ser usado para expandir um conjunto de caracteres nos nomes dos
arquivos.
touch memo{1,2,3,4,5}
touch {a..f}{1..5}
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
LISTANDO ARQUIVOS E DIRETÓRIOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
-l : esta opção lista os arquivos em uma lista longa que involve mais
detalhes do arquivo.
- : arquivo
d : diretório
l : link
-h : lista os arquivos de uma forma compreendida facilmente pelos humanos.
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
ENTENDENDO PERMISSÕES E POSSE DE ARQUIVO
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Os nove bits atribuídos para cada permissão de arquivo definem o acesso que você e
outros têm sobre um arquivo. Bits de permissão para um arquivo regular
aparecem como -rwxrwxrwx. Esses bits são usados para defenir quem pode ler, gravar
ou executar o arquivo.
Esses valores padrão são determinados pelo valor de umask. Para ver o seu
valor
de umask:
$ umask
Apenas o proprietário
O proprietário e o grupo
chown proprietário:grupo
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
* MOVENDO, COPIANDO, E EXCLUINDO ARQUIVOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Esses comandos podem ser usados tanto sobre diretórios como sobre arquivos, ou
recursivamente para agir sobre muitos arquivos e diretórios de uma só vex.
mv abc def
mv abc ~
Note que normalmente o comando mv sobescreve um artigo caso já existe um arquivo
no distino com o mesmo nome. Mas muitos sistemas Linux fornecem um alias ao comando
mv para que ele
use a opção -i (que faz o mv perguntar antes se você quer sobescrever arquivos
existentes.
alias mv
cp abc def
cp abc ~
cp -r path_origem path_destino
cp -ra path_origem path_destino
Serve para manter a data, hora e as permissões do arquivo original caso não,
ele terá novos valores
a quando da cópia.
rm abc
rm * : remove todos os arquivos de um diretório excepto os que começam com
ponto.
rmdir path: remover um diretório vazio.
rm -r path: remover um diretório com seus conteúdos, mas antes pergunta
rm -rf path: remove um diretório e seu conteúdo sem perguntar.
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
EDITANDO ARQUIVOS COM VIM E VI
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Nota:
No Linux, é preciso saber editar arquivos (vi), mas é preciso primeiro encontrar o
arquivo a ser editado (find). Muitas
das vezes, precisamos apenas de alterar certas partes de um arquivo (grep).
* Iniciando com o vi
comando
entrada
Para entrar no modo de entrada, digite um comando de entrada. Para começar,
digite qualquer um dos seguintes comandos.
Quando você terminar de introduzir texto, pressione a tecla Esc (às vezes,
duas vezes) para voltar ao modo de comando.
i - o comando insert : com esse comando, é possível inserir texto que começa
no início da linha atual.
o - o comando open below : esse comando abre uma linha abaixo da linha atual
e coloca você no modo de inserção.
O - o comando open above : esse comando abre uma linha acima da linha atual e
coloca você no modo de inserção.
h : esquerda
l : direita
j : baixo
k : cima
* Colando texto
* Repetindo comandos
Depois de excluir, alterar ou colar texto, você pode repetir essa ação,
digitando um ponto (.). Por exemplo, com o cursor no início
do nome Joe, você digita cw e digita Jim para alterar Joe para Jim.
Você pesquisa a próxima ocorrência de Joe no arquivo, posiciona
o cursor no início desse nome e pressiona um ponto. A palavra muda para
Jim e você pode pesquisar a próxima ocorrência.
* Saindo do vi
Considerações:
* Localizando arquivos
Usa-se o comando locate para encontrarmos arquivos com base nos nomes.
Na maioria dos sistemas Linux, o comando updatedb é executado uma vez
por dia para coletar os nomes de arquivos em todo seu sistema Linux
em uma base de dados. Ao executar o comando locate, você pode pesquisar
a base de dados para encontrar a localização de arquivos armazenados nele.
O comando find procura os arquivos em tempo real, oque o torna mais lento em
relação ao comando locate, mas trás uma atualização mais completa dos
arquivos no sistema. É possível especificar ao find em qual ponto começar a
pesquisa, desta forma, limitar o tempo de busca.
Quase todo tipo de atributo dos arquivos pode ser utilizado como opção de busca.
$ find
# find
Uma das opções mais usadas do find é a opção -ls (longa lista).
# find -ls
Se por exemplo o disco está cheio e você quer saber onde estão os
maiores arquivos, pode se pesquisar o sistema pelo tamanho dos arquivos.
A opção -size permite pesquisar por arquivos que têm exatamente o
tamanho selecionado ou que são menores que ou maiores que o tamanho
selecionado.
Data e hora são armazenados por todos os arquivos quando eles são
criados, acessados, modificados, ou metados são alterados. Os metados
são incluem o proprietário, o grupo, um registro de data/hora, o
tamanho do arquivo, permissões e outras informações armazenadas no inode
do arquivo.É possível pesquisar as alterações nos dados ou nos metados
dos dos arquivos por qualquer um dos seguintes motivos:
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
ENTENDENDO PROCESSOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Um mesmo programa pode ser executado por vários utilizadores no sistema logo,
podemos ter vários processos do mesmo programa. Os processos por sua vez,
são identificados pelo seu ID. Um processo não pode ser utilizado por outro
processo. Mas quando um processo é encerrado, ai sim, outro processo já poderá
utilizar o mesmo ID.
Para além do número de ID, os processos têm outros atributos. Cada processo está
associado a uma conta de usuário e a uma conta de grupo. Essas informações
ajudam a determinar os recursos da máquina a serem atribuídos. Os processos
executados pelo usuário root tem muito mais acesso aos arquivos e recursos do
sistema do que um processo executado por um usuário regular.
Nota:
A capacidade de gerenciar os processos em seu sistema é fundamental para um
administrador de sistema Linux. Existem ocasiões em que "processos desenfreados"
(runaway processes) podem matar o desempenho do seu sistema.
Encontrar e lidar com esses processos, com base em atributos como memória e uso
CPU, etc.
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
LISTANDO PROCESSOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
$ ps
# ps
$ top
# top
$ ps u
Colunas:
USER
Indica o nome do usuário que iniciou o processo.
PID
Indica o ID de cada processo
%CPU
Percentagem de processador que o processo está consumindo
%MEM
Percentagem de memória que o processo está consumindo
STAT - Status
O S significa sleeping enquanto o R significa Running.
START
Exibe a hora em que o processo começou a rodar.
TIME
Exibe o tempo acumulado de uso do sistema.
Nota:
Muitos processos consomem pouco tempo da CPU, como refletido por 0.0 ou 0:0
para processos que ainda não usaram nem um segundo inteiro de tempo da
CPU.
$ ps ux | less
$ ps aux | less
O comando top exibe os processos com base em quanto tempo de CPU eles estão
atualmente consumindo. Mas é possível também ordenar por outras colunas. Depois de
identificar um processo mal comportado, você também pode usar top para
eliminar ou repriorizar esse processo. Mas para se poder eliminar ou
repriorizar processos, o top deve ser executado com o usuário root.
As informações são exibidas de acordo a porcentagem de CPU que cada processo
consome.
Lista de ações que pode se realizar com o top para mostrar informações de
maneiras diferentes e modificar os processos em execução:
1 : para exibir o uso de todas as CPUs caso existam mais de uma CPU.
Nota:
Uma das práticas mais comuns é utilizar o comando top para identificar os
processos que estão a consumir muita memória. ou poder de processamento,
e então agir sobre eles. Um processo que consome muito CPU, pode ser
repriorizado para receber menos prioridade sobre os processadores.
Um processo consumindo muito memória, pode ser eliminado.
Repriorizando um processo:
Pressione r
Coloque o PID
Coloque o valor entre 19 ou 20
Eliminando um processo:
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
GERENCIANDO PROCESSOS EM PRIMEIRO E SEGUNDO PLANOS
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
CAPÍTULO # 7 : ESCREVENDO SCRIPTS DE SHELL SIMPLES
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
ENTENDENDO SCRIPTS DO SHELL
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Para tarefas que precisam ser realizadas regularmente e que exigia muito trabalho
de digitação na linha de comando, um script de shell pode ser a solução,
uma vez que só precisarás pressionar um comando.
Uma das grandes vantagens dos scripts de shell é que eles podem ser abertos
por qualquer editor de texto.
Uma das grandes desvantagens é que se eles forem muito grandes ou complexos,
a sua execução se torna mais lenta em comparação aos programas
compilados.
variable = value
COUNTRY="Angola"
NUMBER_OF_PROVINCES=18
As variáveis podem ser atribuídos com os valores obtidos das saídas (outputs)
dos comandos.
DATA=$(date)