O que significa "comutação runlevel" exatamente?

1

O que acontece quando emito sudo telinit n (sendo n o novo runlevel)? O init varre /etc/inittab e faz exatamente o mesmo quando o sistema é inicializado? Por exemplo, se eu tiver

rm:2345:wait:/etc/rc.multi

no meu inittab , e eu mudo o nível de execução de 5 para 3. O /etc/rc.multi é executado novamente ou é ignorado?

    
por xiaq 28.04.2011 / 14:50

1 resposta

2

Meu entendimento sobre a mudança de níveis de execução é que init "diferencia" o antigo e o novo nível de execução e inicia / mata serviços cujo status será alterado.

No exemplo dado, /etc/rc.multi não seria executado novamente porque já está em execução. Se você tivesse rm:45:wait:/etc/rc.multi no seu /etc/inittab e fosse do nível de execução 5 - > 3 - > 5, /etc/rc.multi seria eliminado (- > 3) e então iniciado (- > 5) porque não está definido para o nível de execução 3.

Na página de manual :

When init is requested to change the runlevel, it sends the warning signal SIGTERM to all processes that are undefined in the new runlevel. It then waits 5 seconds before forcibly terminating these processes via the SIGKILL signal.

/etc/inittab é redigitalizado conforme descrito:

After it has spawned all of the processes specified, init waits for one of its descendant processes to die, a powerfail signal, or until it is signaled by telinit to change the system's runlevel. When one of the above three conditions occurs, it re-examines the /etc/inittab file. New entries can be added to this file at any time. However, init still waits for one of the above three conditions to occur.

    
por 28.04.2011 / 15:05