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.