você está aqui: Home  → Arquivo de Mensagens

Níveis de Execução

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 27 de Janeiro de 2006

Sistemas Linux podem funcionar em vários níveis distintos de execução. Cada nível é caracterizado pelo conjunto de processos permanentes e funções oferecidas. Sistemas Red Hat Linux e derivados, utilizam seis níveis de execução, ou runlevels, como são mais conhecidos. Esta concepção tem suas origens no sistema Unix desenvolvido na AT&T (System V Unix).

Os níveis de inicialização são controlados pelos scripts que se encontram no diretório /etc/rc.d/init.d. Uma listagem deste diretório revela os seguintes arquivos:

  atd        gpm    keytable   mars-nwe  nfslock     rstatd    single  sshd
  crond      halt   killall    named     portmap     rusersd   smb     syslog
  dhcpd      httpd  linuxconf  netfs     postgresql  rwhod     snmpd   xfs
  functions  inet   lpd        network   random      sendmail  squid   ypbind

Uma rápida inspeção nos revela vários serviços conhecidos como sendmail, httpd e named.

Cada nível de execução é controlado através de links simbólicos existentes nos seis diretórios (/etc/rc.d/rc1.d até /etc/rc.d/rc6.d). Examinemos o conteúdo do diretório /etc/rc1.d:

  # ls -l
  lrwxrwxrwx 1 root  root 19 Mar 22 21:02 K00linuxconf -> ../init.d/linuxconf
  lrwxrwxrwx 1 root  root 18 Mar 22 20:54 K05keytable -> ../init.d/keytable
  lrwxrwxrwx 1 root  root 13 Mar 22 20:59 K10xfs -> ../init.d/xfs
  lrwxrwxrwx 1 root  root 13 Mar 22 20:58 K15gpm -> ../init.d/gpm
  lrwxrwxrwx 1 root  root 15 Mar 22 20:53 K15httpd -> ../init.d/httpd
  lrwxrwxrwx 1 root  root 18 Mar 22 21:05 K30sendmail -> ../init.d/sendmail
  lrwxrwxrwx 1 root  root 14 Mar 22 21:03 K50inet -> ../init.d/inet
  lrwxrwxrwx 1 root  root 13 Mar 22 20:53 K60atd -> ../init.d/atd
  lrwxrwxrwx 1 root  root 15 Mar 22 21:06 K60crond -> ../init.d/crond
  lrwxrwxrwx 1 root  root 13 Mar 22 21:02 K60lpd -> ../init.d/lpd
  lrwxrwxrwx 1 root  root 15 Mar 22 20:59 K75netfs -> ../init.d/netfs
  lrwxrwxrwx 1 root  root 17 Mar 22 21:05 K89portmap -> ../init.d/portmap
  lrwxrwxrwx 1 root  root 17 Mar 22 20:59 K90network -> ../init.d/network
  lrwxrwxrwx 1 root  root 16 Mar 22 21:06 K99syslog -> ../init.d/syslog
  lrwxrwxrwx 1 root  root 16 Mar 22 20:59 S00single -> ../init.d/single

Como se pode ver, todo o conteúdo do diretório /etc/rc1.d consiste de links simbólicos apontando para scripts dentro do diretório /etc/rc.d/init.d. A primeira letra dos nomes dos links simbólicos pode ser ou "S" ou "K", indicando se o processo para o qual aponta deve ser ativado (Started) ou desativado (Killed). O número que se segue a esta letra indica a ordem em que os processos devem ser encerrados ou ativados. Em nosso exemplo o primeiro processo a ser desativado é o linuxconf. O primeiro a ser ativado, após terem sido encerrados todos os demais processos, é o script single. Cada um dos scripts residentes no diretório /etc/rc.d/init.d aceita geralmente três parâmetros: start, stop, restart. Estes parâmetros indicam, respectivamente, a ativação, desativação e desativação seguida de ativação do processo. Para determinar o nível de execução em que seu sistema está funcionando, utilize o comando /sbin/runlevel. Este comando irá consultar o arquivo /var/run/utmp para determinar o estado atual e o anterior. Caso o estado anterior não possa ser determinado é exibida a letra "N" em seu lugar:

  # /sbin/runlevel
  N 3

1. Descrição dos Níveis de Execução

A seguir listamos os estados possíveis de um sistema Linux e sua descrição:

1.1. Nível 0

Neste nível o sistema está parado

1.2. Nível 1

Sistemas funcionando no nível 1 estão em modo monousuário, com um conjunto mínimo de processos ativos. O sistema de arquivos raiz (root) está montado em modo de leitura. Este nível de execução é normalmente utilizado quando a inicialização normal falha por alguma razão.

1.3. Nível 2

A maior parte dos serviços estão ativos, com exceção dos processos de rede (como nfs, nis, named e httpd).

1.4. Nível 3

Este é o nível normal de operação, com todos os processos ativos.

1.5. Nível 4

Este nível não é utilizado na maior parte das distribuições

1.6. Nível 5

Semelhante ao nível 3, com todos os processo ativos, porém com uma interface gráfica de logon

1.7. Nível 6

É executado neste nível um reboot do sistema.

2. Alteração dos Níveis de Execução

Os níveis de execução podem ser mudados pelo superusuário com o sistema em funcionamento. Sempre que é alterado um nível de execução são comparados, nos dois níveis, os processos que devem ser ativados e quais devem ser desativados. O processo init, que é processo pai de todos os demais (PID 1), compara a lista dos processos que devem ser encerrados no diretório indicativo do nível de execução atual com a lista dos processos que devem ser ativados no nível de execução de destino. De posse desta informação o processo init determinará quais processos devem ser ativados ou desativados.

Para reiniciar o sistema basta executar o comando

  init 6

Veja a lista dos links em /etc/rc.d/rc6.d:

  K00linuxconf
  K05keytable
  K10xfs
  K15gpm
  K15httpd
  K30sendmail
  K50inet
  K60atd
  K60crond
  K60lpd
  K75netfs
  K80random
  K89portmap
  K90killall
  K90network
  K99syslog
  S00reboot

Como se pode ver, a maioria dos links inicia-se com a letra "K", indicando que os processos serão desativados. Apenas um link inicia-se por "S", S00reboot, que aponta para o script /etc/init.d/halt.

Similarmente, para colocar o sistema em modo monousuário

  init 1

3. Nível de Execução Padrão

O nível em que o sistema irá funcionar é indicado pela entrada

  id:3:initdefault:

do arquivo /etc/inittab. Neste sistema o nível padrão de execução é 3. Para alterar este nível de execução basta alterar o número "3" para o valor desejado. Nunca altere este valor para "0" ou "6", que indicam, respectivamente, o sistema parado ou em modo de encerramento.

4. Definição ou Remoção de Processos Residentes

Para desativar um serviço de um determinado nível de execução basta remover o link simbólico do diretório apropriado. Por exemplo, para desativar o serviço httpd, do nível de execução 3, basta remover o link /etc/rc.d/rc3.d/S85httpd do diretório /etc/rc.d/rc3.d.

Similarmente, para inserir um novo serviço, basta criar um link no diretório padrão de execução, apontando para o script correspondente em /etc/rc.d/init.d:

  # cd /etc/rc.d/rc3.d
  # ln -s /etc/rc.d/init.d S99local

Este script realmente existe e é normalmente utilizado para inserir os serviços locais. Pela numeração (99), este script sempre será o último a ser ativado.

Importante, certifique-se de escolher uma numeração que posicione a ativação do script na ordem correta. Se o serviço é dependente do funcionamento da rede ele deve necessariamente ser ativado após estes serviços estarem ativos.

5. Utilitários para Configuração dos Níveis de Execução

Até agora abordamos a configuração manual dos scripts de inicialização. Existem entretanto diversos utilitários para realizar este este trabalho.

chkconfig Utilitário para configuração dos níveis de execução invocado a partir da linha de comandos

ksysv Utilitário gráfico que permite a configuração dos níveis de execução e ativação e desativação de processos individuais

linuxconf Ferramenta genérica de configuração que permite o gerenciamento dos níveis de execução

A forma mais segura de se lidar com esta configuração certamente começa com o entendimento perfeito de seu funcionamento. As interfaces gráficas podem obscurecer o significado real do que se está fazendo e conduzir a uma configuração indesejável. Em qualquer situação, realizando-se o trabalho manualmente ou através de utilitários, recomendamos o backup de todos os arquivos envolvidos para poder retornar à uma situação estável em caso de problemas.

Para lidar com a ativação e desativação de processos residentes, algo que frequentemente precisamos fazer sempre que alteramos a configuração de um serviço, precisamos realizar os seguintes passos:

  # cd /etc/rc.d/init.d
  # httpd restart

Em nosso exemplo nos dirigimos ao diretório onde ficam todos os scripts de ativação de processos e invocamos o script httpd com o parâmetro "restart".

Um artifício engenhoso para realizar esta tarefa nos é fornecido, através de um alias, em sistemas Conectiva Linux. Este alias, disponível no ambiente do usuário root, chama-se cds:

  alias cds='cd /etc/rc.d/init.d && ls'

Como podemos ver, o alias realiza dois passos: a mudança para o diretório /etc/rc.d/init.d e a listagem de seu conteúdo. Desta forma podemos visualizar o nome de todos os scripts disponíveis, facilitando a invocação do script apropriado. Simples, mas extremamente útil.

6. Referências Adicionais

No transcorrer deste artigo foram feitas referências aos comandos ln, init, chkconfig, inittab e runlevel. A leitura da documentação destes comandos fornece informações valiosas sobre todo o processo descrito e pode ser acessada a partir do comando man (man ln, man init, etc).


Digital Music Sales Booming

Fonte: Wired Magazine

Associated Press

Worldwide sales of music over the internet and on mobile phones hit $1.1 billion last year, triple 2004 sales and accounting for 6 percent of global record company revenues, the industry said.

The London-based International Federation of the Phonographic Industry, or IFPI, said music fans around the globe downloaded 420 million single tracks in 2005, more than double the 156 million downloaded the previous year.

"2005 was the year that the digital music market took shape," said IFPI chairman John Kennedy.

The IFPI also called on ISPs to join the fight against music piracy, which it claims severely erodes the profits of its 1,450 member record companies across the globe.

The IFPI added that the legitimate music business was gradually gaining ground on digital piracy. It said research showed that in Europe's two biggest digital markets - Britain and Germany - more music fans are now legally downloading music than illegally file-swapping.

A series of lawsuits against piracy by the IFPI has so far largely targeted individual song swappers for breach of copyright rather than ISPs, which can claim that they have no knowledge of any piracy occurring on their networks.

Kennedy, who said he approached prominent ISPs a year ago about a coordinated response and has received "effectively a zero response," put them on notice Thursday that the IFPI would consider litigation if they did not join the fight against piracy.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

José de Goes
16 Ago 2012, 14:13
Excelente para quem gosta de saber como as coisas funcionam. Parabéns!!!
Vilson Jorge
08 Fev 2012, 15:10
Parabens pelo artigo Rubens! muito bom mesmo!

abr;
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script