######CERTIFY LPIC-1 E COMPTIA LINUX####
103.1
em variaveis de ambientes
#NOME_VARIAVEL=valor
#echo $NOME_VARIAVEL
valor
#bash
echo $NOME_VARIAVEL
(nao aparece nada pq após dar o comando 'bash' a variavel não é reconhecida)
para reconhecer a variavel em outros bash, tem que dar o comando 'export NOME_VARIAVEL'
export LINUX=lubuntu (criando a variavel ja exportada)
#set | less (comando set mostra todas as variaveis iniciadas automaticamente pelo sistema)
#env | less (comando env mostra as variaveis globais que foram exportadas) (less recebe a saida do comando env e mostra de forma paginada pra nao ficar uma tripa na tela de informacao)
env TESTE=Windows ./Exercicios/Script_Variavel.sh (o env transforma a variavel TESTE em Windows somente nessa execucao )
unset TESTE (remove a variavel)
Variaveis diferentes que tem no set:
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/root/.bash_history (Arquivo do histórico de comandos)
HISTFILESIZE=2000 (Quantidade de linhas/comandos armazenados no arquivo de histórico)
HISTSIZE=1000
echo $$ (mostra o PID do shell que ta rodando)
echo $? (informa o resultado do ultimo processo executado, no caso 0 é sucesso)
0
####COMANDOS EM SEQUENCIA##########
cd home/paulo/ ; cd Exercicios/ ; TESTE=Linux ; export TESTE; ./Script_Variavel.sh (entra no home do paulo ; entra no Exercicios ; faz variavel TESTE receber Linux, exporta variavel TESTE, roda scritp variavel)
cd home/paulo/ && cd Exercicios/ && TESTE=Linux && export TESTE && ./Script_Variavel.sh (com o && o comando seguinte so executa se nao der erro)
ls /tmp/ || echo Linux (com o || o comando seguinte so funciona se o primeiro der erro)
o comando !! repete o ultimo comando executado
comando 'history' mostra os comandos executados e seus numeros ao lado, com o comando !18 por exemplo ele executa o comando que contem o numero 18 da lista mostrada
NOME_VARIAVEL=valor
#history -c (apaga o arquivo history) todo o usuário tem um .bash_history. esse arquivo é onde ficam os comandos usados salvos, somente o user root tem acesso a todos os .bash_history de todos usuarios. .bash_history é atualizando sempre que fecho o terminal.
apertando ctrl+r no terminal, vc digita o comando e ele busca o comando no histoy.
####USO_DO_BUSCADORES##########
- Quando o comando é interno ele nao tem manual exemplo: comando type é externo por isso nao tem manual.
~$ man -k "system information" -k e palavra que estamos buscando, serve para buscar em algum manual comandos onde tem a palavra buscada. exemplo $ man -k "update system" retona o uname que mostra informacoes do sistema "system information no caso"
# whatis tar (whatis busca por informacao do comando , nesse exemplo foi buscado o tar)
tar (1) - The GNU version of the tar archiving utility
#whatis ifconfig (saida ficou 'ifconfig (8) - configura uma interface de rede')
comando apropos - faz a busca baseado na palavra tbm.
#uname mostra informacoes de sistema, -a, -n -m, -p, --help, -r (varias opcoes de informacoes do sistema)
#alias (comando alias mostra informacoes de quantos alias tem no sistema. são atalhos para os comandos )
###############103.2###################
#######FILTROS_A_TEXTOS_E_ARQUIVOS####################CAT_HEAD_TAIL_SORT_LESS
#cat -n - alunos.txt -n mostra linhas numeradas, -b linhas em branco nao numera, -s quando tem mais de uma linha em branco, coloca so uma linha em branco, -A mostra caracteres especiais (TAB, ENTER, ESPACO)
#tac - mostra o arquivo ao contrario
#head - mostra as 10 primeiras linhas, -2 mostra as 2 primeiras linhas, -c50 mostra os primeiros 50 bites
#tail - mostra as ultimas linhas com os mesmos parametros do head, com o -f o arquivio abre e ainda fica esperando vc digitar mais linhas no arquivo.
#$ echo Paulo >> alunos.txt (redireciona a informacao Paulo para dentro do arquivo alunos.txt)
#tail -n5 -f alunos.txt -n5 mostra as ultimas 5 linhas -f fica parado aguardando alguma coisa ser digitada ou preenchida , por isso é bom usar em logs pq fica parado esperando os proximos logs ocorrer. exemplo: tail -f /var/log/syslog
#less arquivo.txt mostra o arquivo.txt paginado, podemos navegar dentro do arquivo. se digitar /brazilian ele procura por brazilian no arquivo. ctrl + g ele mostra o status do arquivo, quantdade de bytes, quandos % do arquivo eu to lendo
# cat arquivo.txt | less o less controla a saida do cat, deixando a saida paginada pq o cat nao faz paginamento
# wc alunos.txt Mostra a quantidade de linhas, palavras e caracteres (saida fica '15 26 197 alunos.txt') wc -c mostra quantos caracteres tm no arquivo, wc -w mostra qtas palavras tem , e wc -l quantas linhas. Se deremos wc * ele conta todos os arquivos que estao dentro do diretorio.
# nl alunos.txt é bem parecido com o cat -b não numera as linhas em branco nl= numero de linhas
#sort- sort alunos.txt ordena em ordem alfabetica os dados do arquivo. Se colocar -r ele inverte a ordem, -k(Nº campo) ordena pelo segundo campo sort -k2 ordena pelo segundo campo sort
* No comando sort, o –t define o delimitador, o –k o campo referência para o ordenamento, e o –g ordena como números ao invés de como caracteres
######UNIQ, PASTE, EXPAND, UNEXPAND,OD, JOIN########
#uniq - alunos2.txt o que tem de palavra repetida ele só deixa uma. -c ele conta quantas vezes repete cada palavra, -d ele mostra somente as palavras que repetem. o sort normalmente é usado pq quando tem linhas separadas,
o uniq nao entende quando repetem as palavras por isso primeiro junta tudo com o comando sort e depois aplica o uniq exemplo (sort alunos2.txt | uniq -c)
#expand - converte o TAB por Espaco , exemplo #expand alunos.txt | cat -A ele troca os tabs do alunos.txt e mostra pelo cat -A que foi trocado mesmo
#unexpand - converte o Espaco por TAB mas deve ser usado com -a pq se nao ele nao verifica todos os locais do texto.
#od - o comando od mostra textos em formato octal ( #od -tx alunos.txt) tx mostra em exadecimal
#join - comando junta dois arquivos, se tivermos um arquivo de alunos e outro so de notas dos alunos, com o join juntamos os alunos e suas notas. Usando -j2 indicamos que o indice será o campo 2 dos arquivos. As linhas dos arquivos devem estar na mesma ordem.
#paste - imprime na saida as linhas dos arquivos, juntando os dois arquivos.
#slit - divide um arquivo, exemplo (slit -l20 arquivolongo.txt) , esse comando separa o arquivolongo.txt em varios arquivos com 20 linhas
#slit -l10 arquivolongo.txt novo_arquivo separa em varios arquivos de 10 linhas com o nome novo_arquivo em todos. podemos contar depois todos os arquivos usando o wc -l xa*
#split -b100 arquivolongo.txt novo_arquivo2 (nesse comando o split divide o arquivo em varios novo_arquivo2 de 100 bytes) podemos validar isso olhando pelo wc -c novo_arquivo2, usando -l , exemp. #split -30 arquivolongo.txt novo_teste ele divide o arquivo por arquivos de 30 linhas
tr - transforma um caracter em outro caracter qualquer exemplo: (# cat alunos.txt | tr a-z A-Z) transforma tudo de a ate z minusculo em Maiusculo. O comando tr so pode ser usado recebendo uma saida de outro comando; Nesse exemplo transforma ei minusculo em EI maisuculo (# cat alunos.txt | tr ei EI), tr tbm pode ser usado para deletar ,
#cat alunos.txt | tr -d A (deletar todos os A's), deletar linhas em branco (#cat alunos.txt | tr -d [:blank:])
fmt - diminuir o tamanho das linhas do arquivo. exemplo (fmt -w 50 arquivolongo.txt) nesse exemplo ele diminui para 50 caracteres cada linha
pr - preparar arquivos para impressao, (#pr arquivolongo.txt) Ele cria um cabeçalho no arquivo para imprimir junto. Exemplo para dividir por paginas de 30 linhas para imprimir (#pr -l30 arquivolongo.txt)
cut - recorta partes do texto. Cortar caracter 1,2,5 do arquivo alunos (#cut -c1,2,5 alunos.txt). Cortando do 1 ate o caractere 6 (#cut -c-6 alunos.txt). No exemplo (cut -d" " -f1 alunos.txt) foi informado pelo -d"" que o delimitador de campos é o espaço em branco, e -f1 o campo 1 sera cortado para mostrar no resultado.
sed - procurar um conteudo e substituir e deletar uma parte do arquivo. Exemplo alterar nomes Silva por Souza (# sed s/Silva/Souza/ alunos.txt) o s/ é substituir. Ele substitui a primeira ocorrencia da linha,
se tiver 2x o nome na mesma linha, so troca o primeiro, pra substituir tudo da linha usa-se (# sed s/Silva/Souza/g alunos.txt), o /g depois dos nomes. Apagar linha se tiver a palavra (sed /Claudia/d alunos.txt), nesse comando quando tiver Claudia na linha, ele apaga essa linha.
############103.3#################
#cd - - o traco volta pro diretorio anterior que eu estava
#cd ~ - o ~ vai para o home do usuario
#la -a - mostra os arquivos ocultos (arquivos que comecam com ponto)
#ls -lR - entra dentro do diretorio e mostra os arquivos ( R = recursivo), #ls -l Aula1? - com ? ocorre o mesmo que com *. #ls -l Aula?0 - esse comando mostra todos arquivos aula que acabam com 0
#ls -l Aula[123] - podemos escolher os caracteres que vao aparecer na consulta, (quero so o Aula1 o Aula2 e Aula3). Usamos tbm # ls -l Aula[1-6] com range. # ls -l Aula[1-6]? Nesse caso ele pega de os arquivos que tem Aula1 ao Aula6 mas tbm tenha outro caracter depois.
# ls -l Aula[!123] - com ! ao contrario do de cima, são os que eu nao quero que apareça. #ls -l A{ula,ULA}1 para encontrar arquivos Aula1 e AULA1
#file aluno.txt - verificar tipo de arquivo, informacoes do arquivo. Exemplo : # file Script_* (Script_Exemplo.sh: Bourne-Again shell script, UTF-8 Unicode text executable)
#cp -v alunos* /tmp/ - copia todos os arquivos que comecem com alunos para /tmp, usando o -v mostra as inforacoes da copia. Usando -i pergunta se quer sobrescrever o arquivo. #cp -r arquivo.txt para copiar recursivamente. Usando -p a copia preserva caracteristicas do arquivo, nao altera data, hora, dono grupo.
cp Aula1 Curso1 copia o Aula1 alterando o nome do arquivo
#mv - muito parecido com cp mas nao tem -p , -R e -r
#touch - criar arquivo em branco, usado para atualizar a hora que foi alterado, -a altera data do ultmo acesso, -m hora da modificacao alterada, -t modidicar data e hora que eu quiser.
#rm - remover aquivos, -i me pergunta se quero remover, -v mostra os arquivos remvidos, -r recursivo serve para remover diretorios.
#rmdir - remover diretorios vazios #rmdir -p remove estrutura de diretorios em sequencia(desde que estejam vazios). #mkdir - criar diretorios, para criar estrutura de pastas sem elas existir ainda exemplo #mkdir -p /windows/xp/v32/user, rm --parents tbm cria uma estrutura de pastas
# find - find /etc/ -name interface, procurando pelo nome interface, #find /home/paulo/Exemplos/ -user paulo -name Aula8, nesse caso ele procura pelo arquivo Aula8 e o usuario tem que ser paulo. #find ./ -ctime -1 busca pelos arquivos que forma mudados desde o ultimo dia.
# find /home/paulo/Exercicios/ -size 2k buscar arquivos dentro de exercicios que tenham 2k (Exemplo: # find /var -name “*gz” -mtime -2 = encontrar no /var o nome dos arquivos que terminem com gz e foram mudados nos ultimos 2 dias(48hras))
######CRIAR_ARQUIVO_DE_BACKUP_COMPRIMIR_EXTRAIR_ARQUIVOS######
tar - Para criar um arquivo de backup #tar c criar arquivo backup, x extrair arquivo de bkp, -t listar arquivos q estao compactados, tar -f mostrar, . #tar cpvf backup.tar novo* (c =cria, p= preserva, v= verbose, f= colocar nome no file backup.tar, ele vai agrupar todos os arquivos que comecam com novo* )
#gizp - compactar arquivo , #gzip backup.tar #gunzip para descompacta #gzip -d também descomprime. gzip -k mantem o arquivo origif
#tar cvpf backup.tar novo* cria o backup.tar agrupando os arquivos q comecam com novo*. Para compactar com tar direto usando os compactadores: usando gzip fica #tar zcvpf. Compactar com bzip2 fica #tar jcvpf. Compactar com xz fica #tar Jcvpf. Exemplo: # tar zcvpf backup2.tgz novo*, cria uma arquivo agrupado backup2.tar comprimindo os arquivos em gzip que começam com novo*
## tar jcvpf backup2.tbz novo* com j ele compacta usando o bzip e é .tbz. ##tar Jcvpf backup2.tbz novo*, com J o programa usado pelo tar é o xz. Podemos usar o comando 'file' para verificar o tipo de compactacao do arquivo ex: #file backup.tar.bz2: bzip2 compressed data, block size = 900k
Para descompactar podemos fazer ex:tar zxvf backup2.tgz (z descompacta , x extrai os arquivos agrupados, v verbose, f indicar nome do arquivo)
cpio - Outro agrupador que nem o tar é o cpio #cpio - find ./ -name "novo*" | cpio -o > backup.cpio - Primeiro o find ./ -name "novo*" criar uma lista de arquivos e direcionar pra cpio -o que é onde cria o arquivo, direcionando para backup.cpio
para compactar junto com o agrupamento cpio fazemos: #find ./ -name "novo*" | cpio -o | gzip > backup.cpio.gz . Descompactar com cpio é: # cpio -i < backup.cpio (o direcionamento é o contrário <) Descompactar com gzip no cpio : gunzip -c backup.cpio.gz | cpio -i
dd - Copia conteudo de uma particao inteira e cria uma imagem .img, .iso etc. exemplo: dd if=/dev/sr0 of=imagem.img (esse processo de copia é bite a bite)
103.4_##############REDIRECIONAMENTO_ENTRADA_SAIDA_PIPES#####################4 QUESTOES NA PROVA CERTIFICACAO
> - echo Linux > saidaecho - manda a saida do echo para dentro do arquivo saidaecho, sobrescrevendo os dados de saidaecho, se fosse com >> ele adiciona o dado ao saidaecho. o comando completo é 1> e 1>> , o numero 1 é omitido, ele é na verdade o codigo do stdout
Nesse caso a saida é para o stderror #ls -l /tmp/arquivo-inexistente > saida_ls (ls: não é possível acessar '/tmp/arquivo-inexistente': Arquivo ou diretório não encontrado). Redirecionar erros é conforme o exemplo : #ls -l /tmp/arquivo-inexistente 2> saida_ls, tem que colocar 2> ou 2>>
Exemplo com duas saidas, uma para saida e outra para o erro: # ls -l {Aula,AULA}4 1>> saida_ls.out 2>> saida_ls_error.out (o Aula4 existe entao ele vai para o arquivo saida_ls.out, o arquivo AULA4 nao existe e da erro, por isso vai para o arquivo saida_ls_error.out.)
ls -l {Aula,AULA}4 > saida_ls.out 2>&1 - esse comando ele manda a saida de erro para a saida normal 2>&1 . Redirecionamento de entrada : # tr 'a-z' 'A-Z' < alunos.txt se usa o < . Outra exemplo é o comando #mail -s "Assunto" usuario < alunos.txt (esse comando diz que o conteudo do alunos.txt vai ser uma entrada pro comando mail)
Outra tipo de redirecionador é << onde eu informo o fim, exemplo $ tr a-z A-Z << final, aqui ele faz a mudança dos caracteres a-z para A-Z ate que chegue na palavra fim do arquivo.
tee - o comando tee escreve em um arquivo e mostra o arquivo na tela pronto - #sort alunos2.txt | uniq | tee alunos_rascunho.out
xargs - o xargs aplica outro comando na saida do comando q ja foi dado, normalmente usado com o find, exemplo : #find /home/ -name "AULA1*" | xargs ls -l a saida do comando find (/home/paulo/Exemplos/AULA10) e o xargas aplica o ls -l no '-rw-rw-r-- 1 paulo paulo 0 Mai 18 2017/home/paulo/Exemplos/AULA10'
Um subcomando é `comando` - comando entre crazes - joga a saida do comando para o echo , por exemplo: echo "A versao do kernel é : " `uname -r` (A versao do kernel é : 4.4.0-31-generic)
Outro subcomando é colocar $(comando) exemplo: # echo "o hostname é : " $(hostname)
#####EXERCICIO#########
# find /var/ -name "*config*" -type d | xargs ls -ld | tee diretorios-config.out (o find busca dentro do /var/ arquivos que tenham *config* no nome do tipo diretorio (- type d)) | o xargs pega esse resultado do find e faz um ls -ld listando em forma de lista somente os diretorios sem ser recursivo | o tee criou o arquivo diretorios-config.out e jogou na tela.
###########MONITORAR_ENCERRAR_PROCESSOS#################
ps - mostra os processos rodando no meu terminal. #ps -u mostra mais detalhes desses processos do meu terminal, com informacoes de memoria, usuarios,hora de inicio do processo, quanto de cpu foi usado. #ps -x mostra outros processos q nao tem ligacao com meu terminal tbm, exe, processos da interface grafica, de funcionamento do sistema, #ps -a mostra
#ps u -C VBoxClient - Mostra processos de programas expecificos. #pstree - mostra os processos em formato de arvore. #~# pstree -p - mostra em arvora com o ID do processo. #pgrep bash - mostra o numero do ID do bash. #pgrep -u paulo - mostra apenas o ID do processo bash do user paulo
top - mostra os processos dinamicamente #top -b -d2 -n5 > process-linux.out esse exemplo roda o top -b para gerar relatório e mandar pra arquivos, e -d2 serve para atualizar de 2 em 2 segundos e so atualizará 5 vezes com o -n5.
kill - # kill -l -mostra a lista de comandos que podemos usar no com KILL, ~# ps -axu | grep firefox verificar qual o ID do processo do firefox, #pgrep firefox '15502', descobrindo o processo, # kill 15502 matando o processo do firefox, kill -s SIGKILL 4500 matando processo via nome do comando, kill -9 4500 matando o processo via o codigo do comando.
# killall firefox - mata todos os processos que tennha nome firefox, #pkill firefox o mesmo que o killall, pkill -1 firefox -u paulo matando o firefox do user paulo, #kill -15 firefox solicita matar o processo (é o padrao usando somente o comando kill sem numeros), nao é tao direto como o -9, kill -2 interrompe o processo (ctrl -c), #kill -3 so fecha um processo 'quit'.
uptime - #uptime , quanto tempo o servidor ta ligado, quando tem de consumo medio de processos. horarios. #free - quantidade de memoria e swap. #free -m, #free -
screen - abrir e trabalhar em várias abas. Instalar o screen com apt-get, o comando #screen ele entra em uma tela do screen. ctrl+A + n troca tela (next) ctrl+A+c cria nova aba (create) , ctrl+a+d (detached)
# screen -ls Mostra quantos screens eu tenho ativos no momento, mas q nao estou usando. #sreen top - abre o screen rodando o top ao mesmo tempo .
There are screens on:
17579.pts-0.lubuntu-server (26/02/2019 17:55:31) (Detached)
16374.pts-0.lubuntu-server (25/02/2019 15:10:49) (Detached)
#####103.5###############MONITORAR_ENCERRAR_PROCESSOS_JOBS,BG,FG,NOHUP#################
firefox & iniciando firefox em background, #jobs -l mostra os programas rodando em background (em background eu consigo usar o terminal ainda, mas se eu rodo o comando em foregrond , não consigo rodar mais comando no terminal so se eu der ctrl+z para parar o programa)
para colocar o ultimo processo que rodei em foreground em background, digitar #fg. Para voltar em foreground digito #fg
#jobs
[1] Executando firefox &
[2] Executando galculator &
[3]+ Parado top | grep --color=auto galc*
[4]- Executando galculator &
#bg 3 - chamo o job de ID 3 para background que nesse caso é o top e libera o terminal novamente. #jobs -l mostra os processos rodando com o ID, e damos o comando #kill 'id' matamos o processo
nohup - #nohup firefox & - coloca o firefox em background e caso encerre o terminal(sessao), o programa continua rodando. nohup Evita que o programa q esta em backgroud envie saida para a tela.
Exercicio - top -b -d10 > resultado-top.out & (comando top -b para jogar informacoes para arquivos -d10 de 10 em 10 segundos e joga para o arquivo resultado-top.out em background &)
########103.6_MODIFICAR_PRIORIDADE DE_EXECUCAO_PROCESSOS#########
dentro do comando top o campo NI (nice) informa o quando o processo pode ser priorizado pelo usuario. o nice vai do -20 maior prioridade e ate +19 é a menor prioridade. Somente o root pode aumentar a prioridade do processo, e usuarios comuns podem diminuir a prioridade do processo.
#nice -n 15 firefox & Inicia o firefox em backgound com a prioridade 15 . #sudo su - (loga com o usuario root). #nice -n -15 galculator & . Com o usuario root conseguimos iniciar o galculator com prioridade mais alta de -15. Omitindo o -n ficaria #nice --15 galculator &
renice- depois que o processo ja esta em execucao para mudar a prioridade dele usamos renice, verificamos o PID do processo com #ls -la e depois #renice -n 8 'PID_do_processo' (vai mostrar old priority e new priority) (no renice nao tem -n entao ficara diferente, para colocar um valor negativo, exemplo #renice -7 20509 , coloca a prioridade para -7, e #renice 7 20509, colocar pra 7 a prioridade).
#renice -u paulo -n 5 , modifica todos os processos do usuario paulo para o valor 5, #renice -g LPI1 -n 5 , altera para 5 a prioridade dos processos do grupo LPI1. O padrao de valor de prioridade do nice se nao for informado nada, é 10 . #nice firefox & , fica 10 a prioridade do firefox.
#############103.7_BUSCAS_EM_ARQUIVOS_TEXTO_COM_EXPRESSOES_REGULARES################ - regex = regular expression
grep - #grep -c Linux texto.txt, conta quantas ocorrencias do nome Linux tem no arquivo texto.txt, # grep -i Linux texto.txt , -i busca ignorando o case sensitive, # grep -r Linux t*, busca tudo que tem no diretorio atual q começa com t e tbm busca dentro dos diretorios q estao no diretorio atual (recursivo).
# grep -E Linux, -E expande as expressoes regulares, o mesmo que egrep . fgrep remove expressoes regulares, grep -v Linux texto.txt , busca todas as linhas que nao contem a palavra Linux.
egrep - #egrep b[aei]g texto.txt, busca dentro de texto.txt a ocorrencia de bag, beg big, #egrep b[a-u]g texto.txt busca dentro de texto.txt ocorrencia de bag,beg,big,bog,bug. #egrep "^Linux" busca as linhas que começam com Linux o caracter ^ é inicio de linha. Para o final de linha o sinal é $
#egrep "Linux$" texto.txt busca o que tem linux no final da linha, egrep "^#" texto.txt , mostra somente comentários, #egrep "^$" texto.txt, mostrar linhas em branco . #egrep -v "^$" texto.txt, nao mostra linhas em branco. #egrep "b[a-i]g*" texto.txt, o * interfere no ultimo caractere, caracter anterior nao é exigido, pode aparecer nenhuma ou varias vezes. #egrep "b[a-i]g*e" texto.txt com o * busca quanto repete o g e depois tem um e , #egrep "b[a-i]g." com o . depois do g significa qualquer caracter.
#egrep "b[a-i]g+" texto.txt exige que o caracter anterior ao + apareca uma ou mais vezes #egrep "b[a-i]g?" texto.txt o ? exige que o caracter anterior apareca nenhuma ou 1 vez #egrep "b[a-i]g..." texto.txt busca onde tem bag beg big e mais 3 caracteres qualquer. #egrep "O.Linux" texto.txt Mostra onde tem O'um caracter qualquer'Linux
Resumo: * nenhuma ou varias ocorrencias, + é uma ou mais ocorrencias, ? é nenhuma ou uma ocorrencia, .* exige o caracter anterior e . que é um caracter qualquer. [] faz uma lista , ^ inicio de linha e $ para final de linha
sed - para substituir uma palavra por outra ou deletar uma palavra. #sed '/Linux/d' texto.txt, # sed '/^#/d' texto.txt apaga a linha que começar com #. #sed 's/[Ll]inux/Windows/' texto.txt Linux e linux sao substituidos por Windows. #egrep -i "linux\." texto.txt identifica o . como ponto em formato texto, o mesmo vale para \? e \#. # egrep "[a-zA-Z]:[0-9][0-9][0-9]:" /etc/passwd | cut -d":" -f1
########103.8###EDICAO_ARQUIVOS_USANDO_VI#####################
vi - navegação - / procura de cima pra baixo, ? procura de baixo pra cima, h = volta um caracter, j = vai pra proxima linha , l = vai pro caracter seguinte. Entrar modo de edicao é com i , o = comeca a edicao a partir da linha de baixo, O = edita a partir da linha de cima. a = edita a partir do proximo caracter, A = edita no final da linha. cc = recortar e entrar em modo de edicao, Enter , Esc depois p pra colar.
dd = recorta mas nao entra em modo edicao, depois p = colar. d3d = recorta as 3 proximas linhas, p = pra colar as 3 linhas cortadas. yy = copia :x = sai e salva. ! = ignora qualquer aviso, para forçar qualquer comando. ZZ = sai e salva (sem : antes do ZZ)
######101.1 Arquitetura_de_sistema############
ATA ou IDE - /dev/hda /dev/sda são master, hdb e sdb são slave, hdc e sdc são master e hdd e sdd são slave. SATA - sem master e slave, somente sequencia de sda, sdb, sdc. SCSI - 8 bits e 16 bits
#####################101.2_BOOT_BIOS###############################
bios>MBR>Bootloader>kernel>init . MBR= conjunto de dados no primeiro setor do disco e fica o bootloader(GRUB/LILO). bootloader=gerenciador do boot, carrega o initrd. O initrd = inicia os promeiros processos do linux, redes,dns, graficos etc(systemd,systemV,Upstart), possui runlevels q sao modos de operacao.
dmesg - usado para saber o log do boot da maquina. Infomracoes de grub, hardware, discos carregados, tbm tem log de instalações, problemas de hardware.
boot uefi- uefi>bootloader>kernel>init - nao tem MBR. montado no /boot/efi, utiliza particao FAT, particoes GPT, podendo ter particoes acima de 2GB.
journalctl - tbm mostra informacoes do boot. journalctl --help #journalctl -b - mostra processos, kernel, serviços. #systemctl -k mostra so mensagens do kernel. #journalctl -f fica esperando aparecer na tela as novas informacoes em tempo real.
67.101.3 - tipos de systed - service, socket, device, mount, automount, target(runlevel), snapchat. # cd /lib/systemd/system - local dos arquivos, #ls -l *target mostra os runlevels , são links dos runlevels. Mostra tbm o target default (default.target -> graphical.target) ou seja, o target( o runlevel padrao é com grafico no meu sistema) se rodar o comando #runlevel mostra o target padrao conforme informado antes.
systemctl - programa nativo do systemd (o mesmo que usar o init e o telinit do sysV) como meu sistema é via systemd, o comando init e telinit usam o atalho ' /sbin/init -> /lib/systemd/systemd' do systemd. #systemctl list-units - para listas todas unidades do lib/systemd/system , targets,services, sockets etc..systemclt reboot, systemctl poweroff, desliga a maquina e reseta maquina.
#systemctl set-default multi-user.target - eu defino meu target default como multi-user, #systemclt isolate rescue.target - muda o nivel de execução do sistema para modo de single user. #systemctl status cron.service - para verificar o status do servico cron
###############GRUB_LEGACY_E_GRUB_2###################
Os arquivos do legacy são : /boot/grub/menu.list (arquvo principal) e o arquivo q editamos é /boot/grub/grub.conf/cfg. No GRUB2 o principal é #/boot/grub/grub.cfg e configuramos o /etc/default/grub e /etc/grub.d/. Os discos ficam no grub legacy os discos ficam hda1 = hd0,0 e hda5 = hd0,4 o hdb3=hd1,2. No grub2 fica hda=hd0,1 e hda5=hd0,5. Comandos instalar no grub legacy: #grub-install /dev/sda e tbm o #grub-install'(hda)'. Intalar no grub2 #grbu-install <device> #update-grub#grub-mkconfig -o
O grub default do grub legacy é default=0 e timeout=15 , já no GRUB2 é grub_default=0 e grub_timeout=15 - esse é o tempo q o grub espera antes de bootar sozinho. Parametros de boot o legacy é title "ubuntu" root(hd0,0)kernel, ja noGRUB2 fica menuentry "Ubuntu"{set root=(hd0,1) linux}
######BOOT_MANAGER_INTERACAO_COM_GRUB#######
Apertando F12 entramos no boot manager GRUB, no GRUB tem opcoes de entrar no systemd, upstart, modo de recovery mode para recuperar. Dentro do recovery, temos varias opcoes de recuperacao. Tem a opcao de memory test. Apertando a tecla E entramos para editar o boot antes de bootar. Pra entrar em modo single, digitamos single no final da linha do /boot/vmlinuz-4.4.0... ou tbm digitamos 'init=/bin/bash'
Instalação e configurar o boot manager GRUB, configuracoes e comandos - #cd /boot/ dentro de /boot tem os kernels(vlinuz) antigos e os usados no sistema, a imagem initrd.img tbm o memtest. #cd /boot/grub/grub.cfg . PAra ver o grub usado no sistema é com o comando #update-grub --version. Com o comando #update-grub - ele instala na particao MBR o grub. Editando o arquivo de configuracoes gerais do grub #vim /etc/default/grub (podemos alterar o timeout de inicio do boot, o splash e quiet para aparecer ou nao os comandos no boot)
# cd /etc/grub.d/ - outro arquivo para alterar o grub
###GERENCIAMENTO DE PACOTES####
####LAYOUT_HD_PARTICAO_PONTO_MONTAGEM_FS_MBR############
Paticionar é bom para gerenciar espaços em discos, ter diferentes tipos de filesystem por particao. proteger contra erros, niveis de seguranca diferente, backup facilitado.
Particao MBR é o foco: maximo 4 particoes primarias, sendo que uma primaria pode ser extendida, onde ciramos varias particoes logicas. OU 4 primarias ou 3 primarias e 1 extendida(com as logicas dentro) , nao tem pq ter 2 particoes extendidas pq ja se criam varias particoes dentro de 1 extendida. Logicas comecam com nuemro sda5 em diante. As primarias são só de sda1 a sda4 por exemplo
Particao / e /swap sao as 2 particoes q devem ser criadas.
Codigos de Particao : 83 Linux e 82 é swap a 5 é extendida. PArticoes comuns fora do diretorio /: /home(usuarios), /var(pode entupir), /tmp(pode entupir),/boot (tem os arquivos kernel), /usr - (arquivos aplicacoes), Nao montados fora do diretorio / : /etc(arquivos de configuracao do sistema), /bin(comandos, scripts), /sbin(comandos, scripts), /dev(diretorio dinamicos), /proc(diretorio dinamicos), /sys(diretorio dinamicos)
LVM - gerneciar mais logicamente os espaços em disco.
HD UEFI e ESP - tipo de sistema VFAT. #efibootmgr - gerenciar boot manager, (para ver informacoes e mudar as configs), efibootmgr -v Mostra mais informacoes.
~# cat /proc/swaps verificar qual a particao de swap.
################Dispositivos_arquivos_linux_FHS_104###################
###criando particoes e Sistemas arquivos FS, mkfs , mkswap.####
104.1gdisk - mesmo que o fdisk mas serve pra criar particao em gpt ao inves de mdos(MBR), #mkfs -t ext3 /dev/sdb1 - formata para tipo ext3 na particao sdb1 . #file -s /dev/sdb1 - mostra q sdb1 esta formatado com ext3. #mkfs.ext3 /dev/sdc1 - formatando ext3 na particao sdc1. Depois de usar o fdisk e colocar uma particao como swap, temos que usar #mkswap /dev/sdb5 - formatar essa particao como swap. Depois #swapon /dev/sdb5 - inclui a particao de swap no /proc/swaps, #parted - parecido com fdisk e #gparted parecido com parted.
104.2#df -h - mostrar paritoes , uso, montagem, espaco disponivel, etc. # df -hT - mostra o Tipo de particao tbm por exemplo ext4, # df -ht ext4 - mostra só a particao que procurei, # df -i - mostra os inodes. #du - # du -ah - mostra o q cada arquivo tem de tamanho, # du -ahc - sumariza mostrando no final o total , # du -hs /home/ - mostrar o que o /home/ ocupa . # du -hs /home/paulo/* - o que cada arquivo dentro de /home/paulo/ ocupa , # du -h --max-depth=2 - se aprofunda em 2 diretorios na amostragem.
104.2#fsck - checagem e reparacao de filesystem, #fsck.ext4 /dev/sdb2 - checa como esta o sdb2, # dumpe2fs /dev/sda1 - só mostra informacoes de configuracao da particao. # tune2fs -L "Particao teste" /dev/sda1 - mudando o Label 'Particao teste' na particao sda1 . # dumpe2fs -h /dev/sda1 - podemos ver que agora o nome mudou para 'Particao teste' , # tune2fs -i 1m /dev/sda1 - mudando o tempo de checagem do disco com o comando fsck automaticamente. # tune2fs -j - altera a particao para fazer journal (caso fosse ext2 essa particao, ela se tornaria ext3 devido a inclusao do journal)
s# debugfs /dev/sda1 - dentro do degugfs usar comando 'stats' joga as mesmas infos do dumpe2fs.
######CONTROLE DE MONTAGEM E DESMONTAGEM DE FSs-MOUNT,UMOUNT,etc/fstab###################
#mount e umount - sao temporarias as montagens , #/etc/fstab - é fixa a montagem, #mount - mostra tudo q ta montado no sistema , #mount -a - monta tudo que ta no /etc/fstab , #umount -a - desmonta tudo do /etc/fstab (se nao tiver em uso) ,# mkdir /tmp/teste_mount - criando diretorio #mount /dev/sdb2 /tmp/teste_mount - montando /tmp/teste_mount em /dev/sdb2,
#/etc/fstab - Campos - <file system> <mount point> <type> <options> <dump> <pass>
###########GERENCIAMENTO_QUOTAS###########
#dentro do /etc/fstab/ - adicionamos na mesma linha do UUID que tem o /home as opcoes ' usrquota e grpquota' agora o sistema cria os arquivos base para fazer as cotas após reiniciar ou no comando 'quotacheck -cugm / ', (baixar quota e quotatool), #edquota paulo - editar quota do usuario paulo , dentro do edquota tem os blocks que é 1kb cada blocks , tem o item soft , hard que sao os limites, onde caso o user passar do soft ainda pode usar , mas caso chegue no hard, bloqueia. #repquota - para ver os limites (reporte das quotas) - o campo grace period é o tempo que o user podera ficar dentro do campo soft
#edquota -t - para alterar o grace period, o usuario digitando #quota aparece as informacoes , caso tenha passado do limite imposto, o campo blocks aparece com um * , edquota -g suporte - editar quotas para grupo suporte , quotaoff- desabilita o sistema de quotas , quotaon - habilita o sistema de quotas.
############GERENCIAMENTO_PERMISSOES##########
#chmod g+w Aula3 - adicionando permissão w para o grupo(g) no arquivo Aula3, # chmod a+x Aula3 - adiciona para (a)All permissao de execucao (x) no Aula3. # chmod o-rx Aula3 - removendo permissao de outros(o) de ler. # chmod ug-x Aula3 - user e group removido o executar(x). # chmod o=x Aula3 - so deixa o x no others e remove o rw caso estivesse.
###############MODO_OCTAL_GERENCIA_PERMISSOES###########
r=4 w=2 x=1 , rwx = 7 , rw- = 6 , r--4 , chmod 774 Aula3 - definindo rwx rwx r-- para o Aula3, #chmod 660 Aula3 - definindo rw- rw- --- para Aula3 , # stat Aula3 - mostra as permissoes de forma geral do Aula3 , #chmod -R 644 Diretorio1 - coloca a permissao 644 recursivamente em tudo q ta dentro do diretorio1, Atributos especiais/Bits modo de acesso - se eu executar um scrit o scrit vai executar com as permissoes do meu usuario, e nao as permissoes do arquivo de script
SUID - # ls -l /usr/bin/passwd - (saida -rwsr-xr-x 1 root root 54256 Mar 29 2016 /usr/bin/passwd) - nota-se que tem um s nas permissoes para o user root, esse s é para liberar outros usuarios para editar o passwd com o comando #chmod u+s /etc/passwd - ele adiciona o s para o usuario e assim ele pode escrever em passwd , #SGID - mesma coisa so que para o grupo - #chmod - g+s script.sh - ele adiciona o s no grupo para permitir escrita com qualquer outro usuario q nao o root. #Sticky - dentro de um diretorio só consegue apagar ou renomear um arquivo, a pessoa que criou o arquivo. # ls -ld /tmp/ saida(drwxrwxrwt 8 root root 4096 Jul 25 18:19 /tmp/)
se tem um t na permissao de outros o sticky esta ativo e somente quem criou os arquivos dentro de tmp/ consegue alterar ou apagar. Sendo assim o modo octal fica SUID=4, SGID=2, Sticky=1 , usuario, grupo, outros entao a permissao fica exemplo: 6774 no caso o SUID e SGID junto é 6 e nao tem Sticky . #chmod o+t Aula3 - inserindo o Sticky no Aula3 (somente no o de others vai o Sticky). QUando o T é maiusculo é pq nao tem o x de execucao junto, quando é o t minusculo , é pq tem a permissao x de execucao junto. (o stcky opcupa o mesmo local do x)
Adicionar o SUID usando formato octal - #chmod 4775 Aula3 - entao ficou SUID ativo rwxrwxr-x no Aula3 . Adicionando o SUID e Sticky ficaria #chmod 5775 pq o SUID=4 e Sticky=1 . #umask - sao permissoes criadas de forma automatica quando criamos arquivos e diretorios. Para arquivos ele usa o padrao 666 e substitui o umask padrao (0022 do meu root) . entao fica 6-0 = 6 que é rw-, 6-2=4 que é r-- , e 6-2=4 que é r-- , ficando para arquivos criados rw-r-r- por padrao; Para diretorios é 777 , substituindo o umask 0022 fica 7-0=7 q é rwx , depois 7-2=5 que é r-x depois 7-2=5 que é r-x , ficando rwxr-xr-x nos diretiorios criados .
#chown - fazer alteracao do dono e grupo do arquivo , é o root que fará as alteracoes com o chown. #chown lpi2 Aula2 - muda o user, #chown lpi2:suporte Aula2 ou #chown lpi2.suporte Aula2, #chown :suporte Aula2 - muda so o grupo , #chown .suporte Aula2 - muda so grupo. chown -R lpi2 diretorio2 - muda o usuario de todos os arquivos de dentro do diretorio2, #chgrp suporte Aula3 - muda so o grupo , tbm podemos usar com -R.
######LINKS_HARD_LINK_E_SOFT-ln###########
# ln Script_Exemplo.sh Link-Hard - criando link hard chamado Link-Hard - os dois tem o mesmo inode olhando pelo comando ls-li (link hard sao dois arquivos q apontam pro mesmo lugar por isso o mesmo inode ), se alterar a permissao de um deles, os dois vao mudar. Se adicionar informacao em um, no outro tbm vai add. Nao é possivel criar link hard em particoes diferentes. Link Simbolico - # ln -s Script_Exemplo.sh.bkp Link-simbolico - criando link simbolico (lrwxrwxrwx - fica um l no inicio informando que é um link-simbolico) lin-simbolico é um atalho ,e pode ser criado entre duas particoes.
############LOCALIZACAO_ARQUIVOS################
FHS - filesystem Hierarchy Standard - /usr/bin - comandos nao essenciais. todos usuarios 'head,du,dpkg,nice' , usr/share/man - fontes do man, /bin, programas criticos 'cp, kill, rm' /sbin - programas criticos sysadmin 'fdisk fsck, mkfs' /etc/ - arquivos de config , /
######COMANDOS_ENCONTRAR_ARQUIVOS###########
#find /home -name Aula3 , encontra Aula3 dentro de /home , find /home -user lpi2 , find /home -size +50M - procura arquivo com mais de 50MB , locate - tem arquivo de database interno, proura no db interno, #locate rpm - procura tudo q tem rpm dentro da base de dados dele , para atualizar essa base de dados é com o comando #updatedb pelo arquivo de config /etc/updatedb.conf
#whereis - procura arquivos executaveis, libs, fontes , manuais de dados etc (nao encontra os diretorios de usuarios) - #whereis rpm - encontra so se tiver no compeco a string ou se ela for exatamente o que procuramos (usado para saber onde esta tal comando). #witch - procura somente no diretorio de PATH e para a busca no primeiro que encontra a palavra procurada. #type - mostra o tipo de arquivo se é interno , externo, do shell.
Nenhum comentário:
Postar um comentário