Comando Find Linux

find -> ajuda a localizar arquivos
find . -name (o que quer buscar) Ex:
find . -name ls -> vai buscar arquivos com nome ls

find . -type d -name ls -. vai buscar todas as pastas com nome ls devido ao parametro -type data
find . -maxdepth 3 -type d -name mc -> vai buscar todas as pastas com nome mc no maximo em 3 niveis de pastas
find . -mindepth 2 -type d -name mc -> vai buscar no minimo 2 niveis de pasta

find . -mtime -1 -> o parametro mtime busca por alteração de arquivo no caso -1 vai buscar todos alterados no ultimo dia
b-> criado a menos de dois dias -> find /boot -ctime -2
paramentro atime -> acessado a menos de dois dias -> find /boot atime -2
paramentro cmin procura os ultimos criados ultimo minuto -> ex: find /tmp -cmin -1
parametro amin procura o ultimo acessado ultimo minito -> ex: find /tmp amin -1
paramentro gid -> pesquisa pelo grupo ex: find /usr -gid 1000
paramentro uid -> pesquisa pelo usauario ex: find /usr -uid 1000
paramentro user -> pesquisa pelo usuario ex: find /usr -user rafael
paramentro group -> pesquisa pelo grupo ex; find /usr -group rafael
paramentro size -> pesquisa pelo tamanho ex: find /usr -size 1000

COMPACTANDO ARQUIVOS POR LINHA DE COMANDO LINUX

No linux utilizamos o comando tar para realizar o procedimento de compactar os arquivos, lembrando que o tar ele é apenas um compactador ou seja não irá comprimir os arquivos (ou seja deixar eles com tamanho menor), porém para comprimir o comando tar pode utilizar dois algoritmos de compreensão por trás que são o gzip ou bunzip/bunzip2

Compactando = Para compactar arquivos basta utilizar o comando tar 

Ex:

tar -cvf nome.tar pasta/

No comando de exemplo utilizamos o comando tar logo em seguida os parâmetros 

tar -> comando
-c -> compactar

-v -> verbose ou seja visualizar tudo que esta sendo compactado

-f -> para apontar o arquivo/pasta

 Para poder visualizar o conteúdo que se encontra dentro do arquivo compactado sem que o mesmo seja descompactado basta utilizar o comando 

Ex:.

tar -tf nome.tar

tar -> comando

-t -> parâmetro para listar 

-f -> para poder apontar a algum arquivo 

Caso queira extrair os dados do arquivo compactado basta utilizar o comando:
Ex:

tar -xf nome.tar

tar -> comando

-x -> extrair 

-f ->para poder apontar o comando para algum arquivo

Podemos também compactar e comprimir os arquivos, para isso utilizando ou o gzip ou o bunzip/bzip2

Comando utilizando o gzip: 

tar -czvf nome.tar.gz pasta/

tar -> comando
-c -> compactar

-z -> para comprimir utilizando o gzip

-f -> para poder apontar para alguma file

Comando utilizando o bzip2/bunzip: 

tar -cjvf nome.bz2 pasta/

tar -> comando

-c -> compactar

-j -> comando para comprimir utilizando o bzip2

-v -> verbose ou seja visualizar tudo que é comprimido/compactado

-f -> para poder apontar para alguma file

Lembrando que podemos utilizar o comando para visualizar os arquivos 

Ex:. 

tar -tfj (adicionar o j para visualizar do arquivo bz2)

tar -tfz (adicionar o j para visualizar o arquivo gzip)

Para descompactar também é bem simples

Ex:. bz2

tar -xvjf nome.bz2

Ex:. gzip

tar -xvzf nome.tar.gz

Podemos também utilizar dois  outros comandos, o zip e o xz, no qual são bem simples

EX:. do comando zip

zip -r nome.zip pasta 

zip -> comando 

-r -> parâmetro para que seja comprimido tudo de forma recursiva dentro do diretório informado

Para descompactar é simples basta utilizar o comando.

Ex: 

unzip arquivo.zip

O comando xz vai realizar a compreensão de algum arquivo que esteja apenas compactado

Ex:. do comando xz

xz nome.tar

Sendo assim ele vai criar um arquivo chamado nome.tar.xz

Para descompactar basta utilizar o comando unxz

unxz nome.tar

Podemos também realizar a utilização dos comandos gzip e bz2 para comprimir arquivos já compactados, por exemplo. 

Ex: 

Comprimindo arquivo gzip

gzip nome.tar

Descomprimindo 

gungzip nome.tar.gz

Comprimento arquivo bunzip2

bzip2 nome.tar

Descomprimindo 

bunzip2 nome.tar.bz2

GERENCIAMENTO DE PACOTES .RPM

Ambientes de pacote em distribuição baseada em RedHat (Ex:. CentOS)

O diretório no qual fica os repositorios do pacote é /etc/yum.repos.d/

RMP -> 

rpm -qa ->  vai listar todos os pacotes instalados no equipamento

rpm -qa |grep -i pacote/programa -> vai fazer uma busca dentros dos pacotes instalados e ver se o nano está na lista

rpm -ihv nome_programa.rpm -> caso todas as bibliotecas estiverem no sistema o programa será instalado normalmente. Nota:. os parametros -ihv são:
-i -> para instalar
-h -> para mostrar a barra de porcentagem da instalação
-v -> para você visualizar tudo que esta sendo instalado

rpm -qi pacote/programa-> vai mostrar diversas informações sobre o pacote/programa instalado 

rpm -qR pacote/programa -> vai mostrar todas as dependências do pacote

rpm -e pacote/programa -> vai remover o pacote/programa mas sem remover suas bibliotecas

YUM ->

yum remove nano -> remove o pacote instalado mas não remove  suas bibliotecas bem semelhante ao apt remove

yum update -> atualiza o cache dos arquivos de repo e também atualiza o sistema. 

yum upgrade -> atualiza apenas o sistema

yum search firefox pacote/programa -> vai procurar pelo pacote/programa desejado

yum check-install pacote/programa -> vai verificar se foi instalado corretamente

yum check-update pacote/programa -> vai verificar se existe uma atualização específica para o pacote informado

yum deplist pacote/programa -> vai verificar as dependências do pacote

yum remove pacote/programa -> remover o pacote/programa

yum clean packages -> remove todos os pacotes não utilizado os pacotes órfãos 

yum clean all -> remove todos os pacotes não utilizado os pacotes órfãos 

GERENCIAMENTO DE PACOTES .DEB

Ambientes Debian (lubuntu, xubuntu, ubuntu dentre outros). 

Duas formas de instalar pacotes:

Instalando através do repositório oficial, com versões homologadas já testadas, por meio deste é possível realizar a instalação utilizando apt. Nas distribuições baseadas em debian, tem o diretório /etc/apt (lembrando que sempre dentro do diretório /etc são os arquivos de configuração), um arquivo importante é o sources.list no qual acessando ele temos todos os repositórios já configurados. 

Lembrando que após alterar o arquivo sources.list (caso necessário), a alteração não entra em vigor de imediato sendo necessário você utilizar o comando apt update  sendo assim esse comando vai ler o arquivo /etc/apt/sources.list e então as alterações vão entrar em vigor.

apt search [programa] -> Procura sobre um determinado programa no repositorio

apt remove programa  -y (Ex:. apt remove nginx -y) -> Remove apenas o programa em si 

apt remove –purge programa  -y (Ex:. apt remove –purge nginx -y) -> Remove o programa e suas configurações caso tenha configurado algo externo

Ao utilizar o apt para instalar um programa (como o nginx) ele instala automaticamente todas as dependências junto(todas as bibliotecas necessárias ), porém ao dar o comando apt remove programa ele não remove as dependências sendo assim temos que utilizar outro comando

apt autoremove -> Utilizando esse comando ele vai remover do sistema todas as bibliotecas orfãs, ou seja todas aquelas bibliotecas que ficaram “perdidas” após a remoção do programa (como o nginx por exemplo).

apt upgrade -> Vai fazer o upgrade de todos os pacotes que você instalado no seu sistema(firefox, chrome etc..)

apt dist-upgrade -> Comando utilizado para atualizar somente o Kernel

Instalar “localmente”, baixar o pacote .deb e então utilizar o dpkg para realizar a instalação

dpkg -l -> Vai listar todos os pacotes instalados 

dpkg –get-selections -> Vai listar também todos os pacotes instalados porém de uma forma mais simplificada

Para instalar um programa .deb basta utilizar o comando 

dpkg -i programa.deb (Ex:. dpkg -i dropbox_2019.deb), porém ele não procura e instala automaticamente da dependências sendo assim pode ocorrer alguns “erros” na instalação e você tera que instalar as dependências de forma manual uma a uma. Uma outra alternativa é utilizar o comando apt updrate no qual ele ira retornar um erro falando que você tentou instalar um determinado programa e não foi possível devido a algumas dependências não estarem instaladas, e ele sugere um comando para que o problema das dependências sejam resolvidas, ou seja ele ira instalar as dependências necessárias, o comando é apt –fix-broken install que pode ser abreviado para apf -f install  

dpkg –remove  funciona da mesma forma do apt remove

dpkg –purge funciona da mesma forma que o apt –purge

dpkg autoremove funciona da mesma forma do apt autoremove

MÉTODOS DE DESENVOLVIMENTO E LINGUAGEM DE PROGRAMAÇÃO

Bazaar: Código fechado em relação às mudanças, somente os desenvolvedores podem ler/

Linguagens de programação compiladas:

-> C : É a linguagem que o Kernel é escrito

-> GO : É uma linguagem de programação desenvolvido pela Google, muito utilizada pelo adeptos a cultura DevOps para criar plataformas, infra-estrutura em alto escala

-> Haskel: É uma linguagem de programação procedural com foto em software para placa de vídeo hardware

Linguagens de programação interpretadas:

-> Python

-> Java
-> PHP
-> Perl
-> Shell Script 

Ambientes gráficos e aplicações open source -LINUX-

XFCE: Focada em desempenho

LXDE: Focada em desempenho

KDE: Uma mistura de foco no usuário e também em desempenho, talvez seja a mais recomendada nos dias de hoje, pois é um misto de desempenho + foco no usuário 

GNOME: E uma das interface gráficas mais robustas focada totalmente no usuário deixando de lado desempenho.

Unity: Já foi descontinuado utilizado bastante no Ubuntu com foco no usuário

Open Office: É uma switch de texto open source que funciona como o pacote office contendo ferramentas similares ao excel, word, power point

ThunderBird: É um gerenciador de email, funciona da mesma forma que o outlook

Mozila Firefox: É um navegador no qual o codigo é aberto

LibreOffice: É  uma copia do openoffice, pois como o openoffice é open source pegaram o codigo dele e criaram o libreoffice que por sinal é até mais utilizado

GNU Image Manipultion Program: Conhecido como GIMP é um programa open source bem semelhante ao PhotoShop

Blender: É um programa para criar imagens 3d

Amarok: É um player de música, bem completo

Audacious: Player de música bem simples

Banshee: Player de música, um dos mais utilizados

Links: É um browser que funciona no terminal (telinha preta ..rsrs), no qual é possível navegar pelo site.

Apache/Nginx: Servidores Web no linux o mais utilizado é apache e nginx que costumam rodar na porta 80/443

MariaDB/MySql: Servidores de banco de dados no qual roda da porta 3306 por padrão

NFS: É um servidor de arquivos utilizado para compartilhar uma pasta no sistema para que vários usuários possam acessar geralmente ele roda na porta 2049

SAMBA: É servidor de compartilhamento de arquivos, porém muito mais robusto nele você pode utilizar Active Directory, também é possível você fazer um cross platform (ou seja maquinas windows ou linux podem acessar o diretório determinado), geralmente roda na porta 139/445

SSH: Para conexões remotas

DNS: É um revolvedor de nomes que vai “traduzir” o ip por um nome Ex: Quando digitamos google.com na verdade por trás desse nome tem um ip 127.0.0.1 DNS (Domain Name System, ou sistema de nomes de domínios) geralmente utilizado na porta 53

Telnet: Verifica para testar serviço, como por exemplo verificar se uma determinada porta esta aberta para conexão

SMTP: É um servidor de email, sempre que você envia um e-mail é o SMTP o responsável por realizar esse procedimento, no servidor Linux existe vários serviços de email como postfix qmail dentre outros 

CUPS: É um servidor de impressão, quando você faz um documento no libreoffice por exemplo e manda imprimir é ele o responsável. Geralmente roda na porta 634

OWNCLOUD:  é um sistema de computador mais conhecido como “serviço de armazenamento e sincronização de arquivos” usado para deixar os arquivos na nuvem
NexCloud: Nextcloud é um conjunto de software cliente-servidor para criar e usar serviços de hospedagem de arquivos. O aplicativo Nextcloud é funcionalmente semelhante ao Dropbox.

File System Hierarchy

O sistema de arquivos do arquivos, do linux é muito bem dividido, a principio pode parecer complicado, mas após compreendido é muito melhor aceito do que dos demais sistemas operacionais como o Windows por exemplo.

Bin:  É uma abreviação de binário (um binário é equivalente a um executável no windows), os binários que geralmente os usuários podem executar ficam dentro do bin.

Ex:  comando ls … cd…. cat

Boot: É um diretório de boot do processo de carregamento desde a bios até que o sistema esteja pronto, 

Dev: Todos os dispositivos do sistema ficam dentro do /dev 

Ex: pendrive, hd, teclado etc..

Etc: Diretório de configuração, ou seja qualquer pacote/programa que for instalado geralmente é criado uma pasta dentro do /etc com o nome do programa. 

Home: Diretório onde fica os usuários, todos os usuários vão ter um diretório dentro do home

Lib / Lib64: Se remete as bibliotecas dos programas instalados seja ele 64 ou outra arquitetura

Media:   Local onde os dispositivos são montados. Ex: um pendrive colocado no computador ele vai ser montado no /media 

mnt: Local reservado para dispositivos que vão ser montados futuramente. Ex: eu tenho um servidor a 2 anos e só agora vou adicionar um HD ai ele é montado no /mnt

opt:  Opt é de optional diretório usado para colocar a instalação de programas externos instalados que não estão no pacote da distribuição.

Proc:    Ele é um “pseudo” sistema de arquivos, nele você pode obter informações de periféricos do sistema por exemplo, cpuinfo que vai ter informações do processador (quantidade de core, modelo, clock e etc ), dentro da pasta proc também fica uma pasta com pid de cada processo, por exemplo caso você abra o firefox ele ira obter um pid e então criar uma pasta com esse pid dentro de proc (Ex: /proc/2315) e dentro dessa pasta mostra tudo que o processo no exemplo dado o firefox, ira mostrar tudo que ele esta utilizando.

Root: É exclusivo do usuário root ele é como se fosse a home do usuário root

Run: Diretório onde se coloca arquivos que estão sendo executando no momento e também são temporários

Tmp:  Bem semelhante ao /run, e sempre que o sistema é reiniciado tudo que se encontra nessa pasta é limpo quando reiniciado o sistema.

Sbin: A pasta sbin são os binarios do sistema, por exemplo o fsck, que só pode ser executado pelo root, por isso ele ficam separado dos outros binarios

Sys: E um diretorio bem semalhante ao proc, você tem informações de hardware, drives, modulos, gerenciamento de hardware, gerenciamento de energia. 

Usr: Ele é direcionado ao usuário ele é uma espécie de / do usuario

Var: Tem diversos usos diferentes, o seu uso mais comum é o log (geralmente os arquivos de log dos serviços ficam em /var/log), também é muito usado para filas (/var/spool)

Evolução do Linux e suas distribuições

DISTRIBUIÇÕES LINUX

Linux: 

-> Kernel

-> GNU core utils: É um super pacote que dentro dele possui diversos outros pacotes como comando cat, ls, todos esses comandos básicos são “mini” pacotes que estão dentro do pacote GNU core utils 


-> Software Suplementares -> São software como navegador padrão, dentre outros recurso que já vem por padrão dentro da distribuição escolhida.

-> Scripts / Serviços: serviços que vão iniciar ao longo do boot (também pode variar de acordo com a distribuição), por exemplo ao criar uma interface grafica a distribuição tem que “carregar” serviços/scripts na inicialização do boot para que a interface grafica abra normalmente

instaladores: os executáveis 

Debian: E uma distribuição que mais foca na comunidade, não existe empresa por trás da distribuição, pois é algo mantido pela comunidade, uma das distribuições mais estáveis que existe. E utilizado em cliente e também server

-UbuntuApós surgir o Debian, surgiu o um Ubuntu que é baseado totalmente no Debian, é uma das distribuições mais usada no modo cliente, mas também é usada no modo server. 

-MintInspirado no Ubuntu, foi criado o mint voltado totalmente para o modo cliente

RedHat: É a maior empresa de linux do mercado, voltado totalmente para o modo Enterprise, o produto mais vendido é o RedHat Entreprise LInux

-Centos: E praticamente igual ao RedHat, porém não é pago, voltado também para servidor 

-Scientific LInux: Voltado para analise de dados

SlackWare: Quase sendo extinto e só tem um desenvolvedor no qual se nega a liberar o desenvolvimento para outra pessoa. 

-Suse: É o maior concorrente do RedHat, pois o suse é voltado totalmente para o mercado Enterprise 

-OpenSuse: é uma versão não paga do suse

Embarcados: São sistemas que já vem por padrão junto ao hardware e na teoria não é possível ser trocado por outro, como o Android nos smartphones

IoT: Internet of thnks, internet das coisas, ex:. Geladeira integrada a internet, 

****raspberry:O Raspbian é baseado no Debian, especialmente desenvolvido para o Raspberry Pi e é o sistema operacional perfeito para usuários de Raspberry.

Cloud: O cloud é mais uma das maneiras de utilizar a computação em nuvem. Na verdade, é a união de uma certa quantidade de máquinas que funcionam como uma só, em um sistema integrado de processamento e armazenamento de arquivos em nuvem

Tipos de Licenciamento LINUX

Licenciamento 

Open source:
-> Código Fonte

-> Mantido pela OSI (Open Source Initiative)

-> objetivo mais business

Ex:. 

Red Hat, uma distribuição linux que cobra pelo suporte, algumas atualizações e serviços a parte. 

Mozila FireFox, cobra de empresas como Yahoo, GooGle, Microsoft para ter o buscador como padrão, eles utilizam a forma advertisement

Free Software:
-> Liberdade sobre o programa, o usuário pode fazer o que quiser. 

-> Criado pela free soft foundation (FSF), surgiu junto com o GNU o objetivo sempre foi combater o licenciamento de software, defendendo que todo o usuario tem que ter controle total do que ele está utilizando

FOSS = Free and Open-Source Software

FLOSS =Free/Libre and Open-Source Software

TIPOS DE LICENÇA 

Copy Left:

GPL

-GPL v2
-GPL v3

LGPL  

Permissive: 

Free BSD

TIPOS DE SOFTWARE 

Commercial = É um software pago 

Shareware = É um tipo de software que você pode utilizar durante um determinado tempo (Ex:. Utilizar por 90 dias), porém após esse período só é possível utilizar pagando, ou o software é disponibilizado sem expiração porém algumas features só são liberadas caso seja pago. 
FreeWare= É um software gratuito

Docker – Dando nome a container

Por padrão o Docker monta os contaier com nomes aleatorios, porém podemos organizar dando o nome deseja sempre que for iniciar um contaier.
Criar um alias (nome alternativo) para a imagem que esta sendo montada.
Comando:

docker run --name [nome_desejado] [nome_imagem]

Exemplo:

docker run --name servidor_gerenciado ubuntu

Sendo assim o seu container vai ficar com o nome como a saida:

Ubuntu, erro de inicialização (initramfs)

Muitas as vezes nos deparamos com “erro” de inicialização, no qual são badblocks (que pode ocorrer devido a alguns motivos). Temos algumas alternativas a serem utilizadas:

Passo 1: inicialize em um live CD ou USB e selecione tente o ubuntu sem instalar opções 

Passo 2: Pressione ctrl+alt+tou abra o seu terminal

Setp 3: Descubra o seu número de partição usando

sudo fdisk -l|grep Linux|grep -Ev 'swap'

Em seguida, liste todos os superblocos usando o comando:

sudo dumpe2fs /dev/sda7 | grep superblock

Substitua sda7 para o seu número de unidade

Você deve obter uma saída semelhante como esta

Primary superblock at 0, Group descriptors at 1-6
Backup superblock at 32768, Group descriptors at 32769-32774
Backup superblock at 98304, Group descriptors at 98305-98310
Backup superblock at 163840, Group descriptors at 163841-163846
Backup superblock at 229376, Group descriptors at 229377-229382
Backup superblock at 294912, Group descriptors at 294913-294918
Backup superblock at 819200, Group descriptors at 819201-819206
Backup superblock at 884736, Group descriptors at 884737-884742
Backup superblock at 1605632, Group descriptors at 1605633-1605638
Backup superblock at 2654208, Group descriptors at 2654209-2654214
Backup superblock at 4096000, Group descriptors at 4096001-4096006
Backup superblock at 7962624, Group descriptors at 7962625-7962630
Backup superblock at 11239424, Group descriptors at 11239425-11239430
Backup superblock at 20480000, Group descriptors at 20480001-20480006
Backup superblock at 23887872, Group descriptors at 23887873-23887878

Escolha um superbloco alternativo desta lista, neste caso superbloco alternativo # 32768

Agora, para verificar e reparar um sistema de arquivos Linux usando o superbloco alternativo # 32768:

sudo fsck -b 32768 /dev/sda7 -y

-ybandeira é usada para pular toda a correção? perguntas e para respondê-las todas com um sim automaticamente

Você deve obter uma saída semelhante como esta:

fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sda2 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #241 (32254, counted=32253).
Fix? yes
Free blocks count wrong for group #362 (32254, counted=32248).
Fix? yes
Free blocks count wrong for group #368 (32254, counted=27774).
Fix? yes
..........
/dev/sda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda2: 59586/30539776 files (0.6% non-contiguous), 3604682/61059048 blocks

Agora tente montar a partição

sudo mount /dev/sda7 /mnt

Agora, tente navegar no sistema de arquivos com os seguintes comandos

cd /mnt
sudo mkdir test
ls -l

Se você é capaz de executar os comandos acima, você provavelmente resolveu seu problema.

Agora, reinicie seu computador e você poderá inicializar normalmente.

Remover arquivos de nome igual em varias pastas

As vezes, precisamos remover diversos arquivos de nome igual ou semelhante em diversas pastas em determinado diretorio. E para realizar o procedimento o comando é bem simples, basta combinar o find com rm.

find ./* -iname ‘*Nome_do_arquivo*’ -exec rm -rf -v {}  \;

Onde o find vai procurar tudo daquele diretório atual “para baixo”, após procurar basta utilizar  -exec seguido do procedimento desejado que no caso é remoção (rm -rf).