In genere quando si cambia runlevel questo significa che vengono eseguiti gli script di arresto del runlevel attuale che terminano diversi programmi in esecuzione del runlevel in questione. Allo stesso tempo, vengono eseguiti gli script di avvio del nuovo runlevel e, nella maggioranza dei casi, avviati alcuni programmi.
Per comprendere meglio questo processo, osserviamo l'esempio riportato nel quale eseguiamo il passaggio dal runlevel 3 al runlevel 5:
L'amministratore (root) ordina al processo init di cambiare runlevel, immettendo init 5.
init consulta il file di configurazione /etc/inittab e constata che lo script /etc/init.d/rc deve essere avviato con il nuovo runlevel come parametro.
Ora, rc esegue tutti gli script di arresto del runlevel attuale per i quali non vi sono script di avvio nel nuovo runlevel. Nel nostro esempio, si tratta degli script contenuti nella directory /etc/init.d/rc3.d (il runlevel precedente era 3) e che iniziano con la lettera K. Il numero che segue la lettera K garantisce che venga mantenuta una determinata sequenza, dal momento che vi possono essere delle dipendenze tra i programmi.
Per ultimo, vengono eseguiti gli script di avvio del nuovo runlevel. Nel nostro esempio, questi script si trovano in /etc/init.d/rc5.d ed iniziano con S. Anche qui, si rispetta l'ordine stabilito dal numero che accompagna la lettera S.
Se passate nel runlevel in cui vi troviate già, init legge solo /etc/inittab, verifica la presenza di eventuali modifiche e, se necessario, adotta tutte le misure del caso (avviando, ad esempio, un getty su un'altra interfaccia).