Explicação de “Tudo é um arquivo” e tipos de arquivos no Linux

Explicação de “Tudo é um arquivo” e tipos de arquivos no Linux

Se você é novo no Linux ou o usou há alguns meses, deve ter ouvido ou lê declarações como “No Linux, tudo é um arquivo”.

Tudo é um arquivo e tipos de arquivos no Linux

Leia também: 5 comandos úteis para gerenciar tipos de arquivos Linux

Isso é verdade, embora seja apenas um conceito de generalização, no Unix e seus derivados como o Linux, tudo é considerado como um arquivo. Se algo não for um arquivo, ele deve estar sendo executado como um processo no sistema.

Para entender isso, pegue, por exemplo, a quantidade de espaço em sua raiz (/) O diretório é sempre consumido por diferentes tipos de arquivos Linux. Quando você cria um arquivo ou transfere um arquivo para o seu sistema, ele ocupa algum espaço no disco físico e é considerado em um formato específico (tipo de arquivo).

E também o sistema Linux não diferencia entre arquivos e diretórios, mas os diretórios fazem um trabalho importante, que é armazenar outros arquivos em grupos em uma hierarquia para localização fácil. Todos os seus componentes de hardware são representados como arquivos e o sistema se comunica com eles usando esses arquivos.

A idéia é uma descrição importante de uma ótima propriedade do Linux, onde recursos de entrada/saída, como seus documentos, diretórios (pastas no Mac OS X e Windows), teclado, monitor, dura, mídia removível, impressoras, modems, virtuais Terminais e também de comunicação entre processos e rede são fluxos de bytes definidos pelo espaço do sistema de arquivos.

Uma vantagem notável de tudo ser um arquivo é que o mesmo conjunto de ferramentas, utilitários e APIs Linux pode ser usado nos recursos de entrada/saída acima.

Embora tudo no Linux seja um arquivo, existem certos arquivos especiais que são mais do que apenas um arquivo, por exemplo, soquetes e tubos nomeados.

Quais são os diferentes tipos de arquivos no Linux?

No Linux, existem basicamente três tipos de arquivos:

  1. Arquivos comuns/regulares
  2. Arquivos especiais
  3. Diretórios

Arquivos comuns/regulares

Estes são arquivos que os dados contêm instruções de texto, dados ou programas e são o tipo mais comum de arquivos que você pode esperar encontrar em um sistema Linux e incluem:

  1. Arquivos legíveis
  2. Arquivos binários
  3. Arquivos de imagem
  4. Arquivos compactados e assim por diante.

Arquivos especiais

Arquivos especiais incluem o seguinte:

Bloquear arquivos : Estes são arquivos de dispositivo que fornecem acesso em buffer aos componentes de hardware do sistema. Eles fornecem um método de comunicação com drivers de dispositivo através do sistema de arquivos.

Um aspecto importante sobre bloquear arquivos é que eles podem transferir um grande bloco de dados e informações em um determinado momento.

Listando soquetes de arquivos de bloco em um diretório:

# ls -l /dev | grep "^b" 
Saída de amostra
BRW-RW ---- 1 DISCO DE ROOTE 7, 0 de maio 18 10:26 loop0 BRW-RW ---- 1 DISCO DE ROOTE 7, 1 de maio 18 10:26 Loop1 BRW-RW ---- 1 Disco de raiz 7, 2 de maio de 18 10:26 loop2 BRW-RW ---- 1 DISCO DE ROOTE 7, 3 de maio 18 10:26 loop3 BRW-RW ---- 1 DISCO RAOTE 7, 4 MOTO 18 10:26 LOOP4 BRW-RW-- -1 Disco da raiz 7, 5 de maio 18 10:26 loop5 BRW-RW ---- 1 DISCO DE ROOTE 7, 6 de maio 18 10:26 LOOP6 BRW-RW ---- 1 Disco raiz 7, 7 de maio 18 10: 26 LOOP7 BRW-RW ---- 1 DISCO DE ROOTO 1, 0 de maio 18 10:26 RAM0 BRW-RW ---- 1 DISCO ROOTO 1, 1 de maio 18 10:26 RAM1 BRW-RW ---- 1 Disco raiz 1, 10 de maio 18 10:26 RAM10 BRW-RW ---- 1 DISCO ROOTO 1, 11 de maio 18 10:26 RAM11 BRW-RW ---- 1 DISCO ROOTO 1, 12 de maio 18 10:26 RAM12 BRW-RW ---- 1 Disco raiz 1, 13 de maio 18 10:26 RAM13 BRW-RW ---- 1 DISCO DE ROOTE 1, 14 MAIO 18 10:26 RAM14 BRW-RW ---- 1 DISCO ROOTO 1, 15 de maio 18 10:26 RAM15 BRW-RW ---- 1 DISCO DE ROOTE 1, 2 MAIO 18 10:26 RAM2 BRW-RW ---- 1 DISK Disco raiz 1, 4 de maio 18 10:26 RAM4 BRW-RW ---- 1 Disco raiz 1, 5 de maio 18 10:26 Ram5… 

Arquivos de caracteres : Estes também são arquivos de dispositivo que fornecem acesso serial não afiado a componentes de hardware do sistema. Eles trabalham fornecendo uma maneira de comunicação com dispositivos transferindo dados um caractere de cada vez.

Listando soquetes de arquivos de caracteres em um diretório:

# ls -l /dev | grep "^c" 
Saída de amostra
CRW ------- 1 raiz da raiz 10, 235 18 de maio 15:54 Autofs CRW ------- 1 raiz da raiz 10, 234 18 de maio 15:54 Btrfs-Control CRW ------- 1 Raiz 5, 1 de maio 18 10:26 Console CRW ------- 1 raiz da raiz 10, 60 maio 18 10:26 CPU_DMA_LATENCY CRW ------- 1 raiz da raiz 10, 203 18 de maio 15: 54 CUSE CRW ------- 1 raiz da raiz 10, 61 18 de maio 10:26 ECRYPTFS CRW-RW ---- 1 Vídeo da raiz 29, 0 de maio 18 10:26 FB0 CRW-RW- 1 raiz da raiz 1, 7 de maio 18 10:26 Full CRW-RW-RW- 1 Raiz da raiz 10, 229 de maio 18 10:26 FUSE CRW ------- 1 raiz da raiz 251, 0 de maio 18 10:27 Hidraw0 CRW-- ----- 1 raiz raiz 10, 228 18 de maio 10:26 HPET CRW-R-R-- 1 raiz 1, 11 de maio 18 10:26 kmsg CRW-RW ----+ 1 raiz 10, 232 18 de maio 10:26 KVM CRW ------- 1 raiz da raiz 10, 237 de maio 18 10:26 LOOP-CONTROL CRW ------- 1 raiz da raiz 10, 227 18 de maio 10:26 McElog CRW ------- 1 raiz raiz 249, 0 18 de maio 10:27 Media0 CRW ------- 1 raiz raiz 250, 0 de maio 18 10:26 MEI0 CRW-R ----- 1 raiz kmem 1, 1 de maio de 18 10:26 MEM CRW ------- 1 Raiz da raiz 10, 57 18 de maio 10:26 Memory_BandWidth CRW ------- 1 raiz da raiz 10, 59 18 de maio 10:26 Network_latecy CRW ------- 1 raiz da raiz 10, 58 18 de maio 10:26 Network_throughput CRW-RW-RW- 1 raiz 1, 3 de maio 18 10:26 NULL CRW-R ----- 1 raiz kmem 1, 4 de maio 18 10:26 Porto CRW ------- 1 raiz raiz 108, 0 de maio de 18 10:26 PPP CRW ------- 1 raiz da raiz 10, 1 de maio de 18 10:26 Psaux CRW-RW-RW- 1 raiz tty 5 , 2 de maio de 18 17:40 PTMX CRW-RW-RW- 1 raiz 1, 8 de maio 18 10:26 Random 

Arquivos de link simbólicos : Um link simbólico é uma referência a outro arquivo no sistema. Portanto, arquivos de link simbólicos são arquivos que apontam para outros arquivos e podem ser diretórios ou arquivos regulares.

Listando soquetes simbólicos de links em um diretório:

# ls -l / dev / | grep "^l" 
Saída de amostra
LRWXRWXRWX 1 raiz 3 de maio 18 de maio 10:26 CDROM -> SR0 LRWXRWXRWX 1 raiz da raiz 11 de maio 18 15:54 núcleo ->/proc/kcore lrwxrwxrwx 1 raiz 1 LRWXRWXRWX 1 raiz 4 de maio 18 10:26 RTC -> RTC0 LRWXRWXRWX 1 raiz da raiz 8 de maio 18 10:26 shm ->/run/shm lrwxrwxrwx 1 raiz de raiz 15 maio 18 15:54 stderr ->/proc/self/fd /2 lrwxrwxrwx 1 raiz 15 de maio 18 15:54 stdin ->/proc/self/fd/0 lrwxrwxrwx 1 raiz 15 de maio 18 15:54 stdout ->/proc/self/fd/1 

Você pode fazer links simbólicos usando o ln utilidade no Linux como no exemplo abaixo.

# touch file1.txt # ln -s file1.txt/home/tecmint/file1.txt [Criar link simbólico] # ls -l/home/tecmint/| Grep "^l" [LISTA LINKS simbólicos] 

No exemplo acima, criei um arquivo chamado arquivo1.TXT em /tmp diretório, então criou o link simbólico, /Home/Tecmint/File1.TXT apontar para /tmp/file1.TXT.

Tubos ou tubos nomeados : Estes são arquivos que permitem a comunicação entre processos, conectando a saída de um processo à entrada de outro.

Um tubo nomeado é na verdade um arquivo usado por dois processos para se comunicar com cada um e atua como um tubo Linux.

Listando soquetes de tubos em um diretório:

# ls -l | grep "^p" 
Saída de amostra
PRW-RW-R-- 1 Tecmint Tecmint 0 de maio de 18 17:47 Pipe1 PRW-RW-R-- 1 Tecmint Tecmint 0 de maio de 18 17:47 Pipe2 PRW-RW-R-1 Tecmint Tecmint 0 de maio 18 17:47 PIPE3 PRW-RW-R-- 1 TECMINT TECMINT 0 18 de maio 17:47 Pipe4 PRW-RW-R-- 1 Tecmint Tecmint 0 de maio 18 17:47 Pipe5 

Você pode usar o mkfifo utilidade para criar um tubo nomeado no Linux da seguinte forma.

# mkfifo Pipe1 # echo "Este é chamado Pipe1"> Pipe1 

No exemplo acima, criei um tubo nomeado chamado Pipe1, Depois, passei alguns dados usando o comando echo, depois disso o shell ficou interativo ao processar a entrada.

Então eu abri outra concha e executei o outro comando para imprimir o que foi passado para PIPE.

# enquanto lida linha; faça eco "Isso foi aprovado-'$ line'"; feito 

Arquivos de soquete : Estes são arquivos que fornecem um meio de comunicação entre processos, mas podem transferir dados e informações entre o processo em execução em diferentes ambientes.

Isso significa que os soquetes fornecem transferência de dados e informações entre o processo em execução em diferentes máquinas em uma rede.

Um exemplo para mostrar o trabalho de soquetes seria um navegador da web fazendo uma conexão com um servidor da web.

# ls -l / dev / | grep "^s" 
Saída de amostra
SRW-RW-RW- 1 raiz de 1 raiz 0 de maio 10:26 LOG 

Este é um exemplo de um soquete criar em C usando o soquete () Chamada do sistema.

int soket_desc = soquete (af_inet, sok_stream, 0); 

No acima:

  1. Af_inet é a família de endereços (IPv4)
  2. Sock_stream é o tipo (a conexão é orientada ao protocolo TCP)
  3. 0 é o protocolo (protocolo IP)

Para se referir ao arquivo de soquete, use o Socket_Desc, que é o mesmo que o descritor de arquivo e use ler() e escrever() chamadas do sistema para ler e escrever do soquete, respectivamente.

Diretórios

Estes são arquivos especiais que armazenam arquivos comuns e outros especiais e são organizados no sistema de arquivos Linux em uma hierarquia a partir da raiz (/) diretório.

Listando soquetes em um diretório:

# ls -l / | grep "^d" 
Saída de amostra
drwxr-xr-x 2 raiz raiz 4096 5 de maio 15:49 bin drwxr-xr-x 4 raiz raiz 4096 5 de maio 15:58 boot drwxr-xr-x 2 raiz 4096 abril Raiz 4400 18 de maio 10:27 Dev drwxr-xr-x 168 raiz raiz 12288 18 de maio 10:28 etc drwxr-xr-x 3 raiz raiz 4096 abril 11 libxr-xr-x 2 raiz raiz 4096 5 de maio 15:44 lib64 drwx ------ 2 raiz raiz 16384 11 de abril 2015 perdido+encontrado drwxr-xr-x 3 raiz 4096 10 de abril de 2015 mídia drwxr-xr- x 3 raiz raiz 4096 23 de fevereiro 17:54 mnt drwxr-xr-x 16 raiz raiz 4096 30 de abril 16:01 opt dr-xr-xr-x 223 raiz de raiz 0 de maio de 18 15:54 Proc drwx ------ 19 raiz raiz 4096 abr 9 11:12 raiz drwxr-xr-x 27 raiz raiz raiz 920 18 de maio 10:54 run drwxr-xr-x 2 raiz raiz 12288 5 de maio 15:57 sbin drwxr-xr-x 2 raiz raiz 4096 dec 1 2014 SRV dr-xr-xr-x 13 raiz raiz 0 de maio de 18 15:54 sys drwxrwxrwt 13 raiz raiz 4096 18 de maio 17:55 tmp drwxr-xr-x 11 raiz raiz 4096 mar 31 16:00 usr drwxr-xr-x 12 raiz raiz 4096 de novembro de 2015 var 

Você pode fazer um diretório usando o mkdir comando.

# mkdir -m 1666 Tecmint.com # mkdir -m 1666 notícias.Tecmint.com # mkdir -m 1775 linuxsay.com 

Resumo

Agora você deve ter um entendimento claro de por que tudo no Linux é um arquivo e os diferentes tipos de arquivos que podem sair no seu sistema Linux.

Você pode adicionar mais a isso lendo mais sobre os tipos de arquivos individuais e eles são criados. Espero que isso encontre este guia útil e, para quaisquer perguntas e informações adicionais que você gostaria de compartilhar, deixe um comentário e discutiremos mais.