Se isso for para o RHEL6 ou semelhante do Linux, esses scripts geralmente são gerenciados por chkconfig(8)
, o que garante que haja um script de início ou um script de parada para cada nível de execução, para cada serviço, não que eles sejam feitos em pares. (Não tenho certeza sobre o Ubuntu ou outros).
Da página man de chkconfig
:
Note that for every service, each runlevel has either a start script or a stop script. When switching runlevels, init will not re-start an already-started service, and will not re-stop a service that is not running.
...
--add name This option adds a new service for management by chkconfig. When a new service is added, chkconfig ensures that the service has either a start or a kill entry in every runlevel. If any runlevel is missing such an entry, chkconfig creates the appropriate entry as specified by the default values in the init script.
Uma resposta para outra pergunta sobre runlevels descreve a convenção de nomenclatura.
Now, the naming scheme is also quite simple. Scripts whose name begins with an S will be started at the runlevel in question while those whose name begins with K will be killed.
Se você observar o script de alteração de nível de execução /etc/rc
, poderá ver como, quando o nível de execução está sendo alterado, o S*
é executado com o parâmetro start
input, DEPOIS que os scripts K*
são executados com% co_de parâmetro%.
Ter scripts K e S significaria que o script é interrompido e iniciado em cada nível de execução.
# rc This file is responsible for starting/stopping
# services when the runlevel changes.
...
# First, run the KILL scripts.
for i in /etc/rc$runlevel.d/K* ; do
...
$i stop
done
# Now run the START scripts.
for i in /etc/rc$runlevel.d/S* ; do
...
exec $i start
...
done
Eu estou apenas olhando para a máquina RHEL6, então se alguém puder confirmar como outras distribuições diferem, por favor, faça.