29Jul
Uma das características definidoras do Linux e de outros sistemas operacionais semelhantes a UNIX é que "tudo é um arquivo". Esta é uma simplificação excessiva, mas entender o que isso significa irá ajudá-lo a entender como o Linux funciona.
Muitas coisas no Linux aparecem em seu sistema de arquivos, mas na verdade não são arquivos. São arquivos especiais que representam dispositivos de hardware, informações do sistema e outras coisas - incluindo um gerador de números aleatórios.
Estes arquivos especiais podem estar localizados em sistemas de arquivos pseudo ou virtuais, como / dev, que contém arquivos especiais que representam dispositivos e / proc, que contém arquivos especiais que representam informações de sistema e processo.
/ proc
Por exemplo, digamos que você deseja encontrar informações sobre sua CPU.O diretório / proc contém um arquivo especial - /proc/ cpuinfo - que contém essas informações.
Você não precisa de um comando especial que lhe diga suas informações da CPU - você pode apenas ler o conteúdo deste arquivo usando qualquer comando padrão que funcione com arquivos de texto simples. Por exemplo, você poderia usar o comando
cat /proc/ cpuinfo para imprimir o conteúdo desse arquivo para o terminal - imprimindo suas informações de CPU para o terminal. Você pode até mesmo abrir a cpuinfo /proc/ em um editor de texto para visualizar seus conteúdos.Lembre-se, /proc/ cpuinfo não é realmente um arquivo de texto contendo essas informações - o kernel do Linux eo sistema de arquivos proc estão nos expondo como um arquivo. Isso nos permite usar ferramentas familiares para visualizar e trabalhar com a informação.
O diretório / proc também contém outros arquivos semelhantes, por exemplo:
- /proc/ uptime - Exclui o tempo de atividade do kernel do Linux - em outras palavras, quanto tempo o sistema está ligado sem desligar. Versão
- /proc/ - Exporta a versão do seu kernel Linux.
/ dev
No diretório / dev, você encontrará arquivos que representam dispositivos - bem como arquivos que representam outras coisas especiais. Por exemplo, /dev/ cdrom é sua unidade de CD-ROM./dev/ sda representa o seu primeiro disco rígido, enquanto /dev/ sda1 representa a primeira partição no seu primeiro disco rígido.
Deseja montar seu CD-ROM?Execute o comando mount e especifique o cd cd /dev/ como o dispositivo que deseja montar. Deseja particionar seu primeiro disco rígido? Execute um utilitário de particionamento de disco e especifique /dev/ sda como o disco rígido que deseja editar. Deseja formatar a primeira partição em seu primeiro disco rígido? Execute um comando de formatação e diga para formatar /dev/ sda1.
Como você pode ver, a exposição desses dispositivos como parte do sistema de arquivos tem suas vantagens. O sistema de arquivos fornece um "espaço de nomes" consistente que todos os aplicativos podem usar para endereçar e acessar os dispositivos.
/dev/ nulo, /dev/ aleatório e /dev/ zero
O sistema de arquivos / dev não contém apenas arquivos que representam dispositivos físicos. Aqui estão três dos dispositivos especiais mais notáveis que contém:
- /dev/ null - Rejeita todos os dados escritos - pense nisso como lata de lixo ou buraco negro. Se você já viu um comentário dizendo para enviar queixas a /dev/ nulo - é uma maneira geeky de dizer "jogá-los no lixo".
- /dev/ aleatório - Produz aleatoriedade usando ruído ambiental.É um gerador de números aleatórios que você pode acessar.
- /dev/ zero - Produz zeros - um fluxo constante de zeros.
Se você pensa nestes três como arquivos, você não verá um uso para eles. Em vez disso, pense nelas como ferramentas.
Por exemplo, por padrão, os comandos do Linux produzem mensagens de erro e outras saídas que imprimem para a saída padrão, normalmente o terminal. Se você deseja executar um comando e não se preocupe com a saída, você pode redirecionar essa saída para /dev/ nulo. Redirecionar a saída de um comando para /dev/ nulo imediatamente o descarta. Em vez de ter cada comando implementar seu próprio "modo silencioso", você pode usar esse método com qualquer comando. Comando
& gt;/dev/ null
Se você quisesse uma fonte de aleatoriedade - digamos, para gerar uma chave de criptografia, você não precisaria escrever seu próprio gerador de números aleatórios - você poderia usar o /dev/ aleatoriamente.
Para apagar o conteúdo de um disco rígido escrevendo 0's para ele, você não precisa de um utilitário especial dedicado a zero para uma unidade - você poderia usar utilitários padrão e /dev/ zero. Por exemplo, o comando dd lê de uma localização e grava em outro local. O comando a seguir lê zeros do /dev/ zero e escreve-os diretamente na primeira partição do disco rígido em seu sistema, apagando completamente seu conteúdo.
( Warning : Este comando irá apagar todos os dados em sua primeira partição se você executá-lo. Execute apenas este comando se desejar destruir dados.)
dd if = /dev/ zero of = /dev/ sda1
Aqui estamos usando ddcom arquivos especiais( /dev/ zero e /dev/ sda1), mas também podemos usar dd para ler e gravar em arquivos reais. O mesmo comando funciona tanto para manipular dispositivos diretamente quanto para trabalhar com arquivos.
Esclarecimento
Na prática, é mais preciso dizer que "tudo é um fluxo de bytes" do que "tudo é um arquivo". O /dev/ aleatório não é um arquivo, mas certamente é um fluxo de bytes. E, embora essas coisas tecnicamente não sejam arquivos, elas são acessíveis no sistema de arquivos - o sistema de arquivos é um "espaço para nome" universal, onde tudo está acessível. Deseja acessar um gerador de números aleatórios ou ler diretamente de um dispositivo? Você encontrará ambos no sistema de arquivos;nenhuma outra forma de endereçamento necessária.
Claro, algumas coisas não são realmente arquivos - os processos em execução no seu sistema não fazem parte do sistema de arquivos."Tudo é um arquivo" é impreciso, mas muitas coisas se comportam como arquivos.