A Maneira UNIX

Desde seus começos, o Unix foi baseado em blocos fundamentais básicos e simples que são ao mesmo tempo poderosos e flexíveis. Os componentes básicos de um sistema Unix são arquivos, usuários(as), processos e dados. Os programas são idealmente pequenos, ferramentas simples que fazem uma única tarefa, mas fazem-na bem. Muitos programas podem atuar como pipeline: leem dados em uma extremidade e escrevem em outra (stdin e stdout, mas também há stderr que geralmente recebe a saída de erro).

Ao juntar vários programas, é possível construir ferramentas complexas de forma simples e rápida, sem se preocupar com a complexidade. Os programas tendem a ser altamente modulares no Unix.

Embora esses princípios não tenham sido implementados a ferro e fogo nos mais de 30 anos que o Unix tem estado por perto, os princípios fundamentais ainda permanecem no núcleo da maioria dos Unixes, bem como vários clones/derivados como os sistemas BSDs e GNU/Linux. Esta filosofia de design modular pode ser claramente vista dentro de muitos dos programas e subsistemas nele.

Novamente: "Ter um pequeno programa que faça apenas uma pequena tarefa, mas faça isso bem e eficientemente - o(a) "usuário(a)" (que pode realmente ser o(a) sys-admin) pode então combinar muitos daqueles programas para fazer o trabalho". (Eu programei uma aplicação C para contar ocorrências de palavras em um texto apenas para descobrir que "cat file || tr \ \\n || sort || uniq -c" faz o mesmo trabalho - apenas mais rápido ;-) ).

A administração de sistemas no Unix é geralmente realizada por qualquer manipulação de hardware (trocar as fitas, etc.), alterar as configurações do sistema de arquivos usando comandos que são interfaces para chamadas do sistema (chmod, chown, mount, etc.), instalar software e patches fornecidos por fornecedores(as), compilar e instalar versões mais recentes de software livre, ou -- mais importante -- escrever e editar (com um editor de texto) scripts e arquivos de configuração. As funções de sistema operacional que são realizadas por invocação de scripts shell dão ao(à) administrador(a) uma grande quantidade de controle sobre o comportamento do sistema. Programadores(as) Unix fazem seus programas ler arquivos de configuração -- de fato, a configuração pode implementar uma linguagem de script -- como a maneira mais simples de dar controle de administração sobre os recursos do programa. Ocasionalmente, os(as) fornecedores(as) (ou um(a) administrador(a) sênior) fornecerão um sistema de menu de administração ou uma interface gráfica em um esforço para simplificar várias tarefas, mas a Maneira Unix é aquela em que há pequenos arquivos de texto sendo editados e pequenos programas sendo executados. Uma vez que nenhuma simplificação pode cobrir todas as complexidades (é impossível escrever programas reais apenas apertando um botão), os(as) administradores(as) ainda precisam saber o que está acontecendo em segundo plano.

O conceito de "complexidade lenta" se aplica aqui.

Sistema V vs. BSD

A maioria dos sistemas Unix podem ser colocados em um continuum entre o System V e o BSD. Os sistemas tipo BSD tendem a seguir de perto a Maneira Unix como descrita acima. Eles são especialmente voltados para quem quer ter controle total em um pequeno pacote. O System V é mais voltado para o ramo "empresarial", e é projetado com interfaces e subsistemas que o tornam mais amigável... para ambientes onde uma gravata é necessária. Em particular, o System V é mais provável que tenha maneiras de integrar software de terceiros com o sistema com um mínimo de esforço de administração. Um exemplo importante é a estrutura dos scripts de inicialização do sistema, que são executados quando o sistema inicializa. Enquanto os sistemas BSD tendem a ter um pequeno número de scripts que são mantidos à mão pelo(a) administrador(a), o System V tem um conjunto de diretórios contendo scripts menores, cada um deles fazendo uma coisa. Embora a maneira BSD seja mais simples para o(a) administrador(a) solitário(a), a maneira System V, sem contradizer a Maneira Unix, permite que os pacotes de software sejam instalados com menores probabilidades de erro.


CategorySystemAdministration | CategoryCommandLineInterface | CategoryRedundant: juntar algumas seções com outras páginas shell/CLI