/etc/init.d
é mantido no Ubuntu para compatibilidade com o sysvinit. Se você realmente olhar para /etc/initd/rc.local
você verá (também de um 12.04 LTS Server):
#! /bin/sh
### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $remote_fs $syslog $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO
E "Executar /etc/rc.local" é exatamente o que faz. A totalidade de /etc/rc.local
é:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Eu acho que o propósito de fazer isso é fornecer um lugar morto simples para colocar os comandos do shell que você quer executar na inicialização, sem ter que lidar com o material do serviço stop | start, que está em /etc/init.d/rc.local
.
Então, na verdade, é um serviço e pode ser executado como tal. Adicionei uma linha echo
a /etc/rc.local
e:
»service rc.local start
hello world
No entanto, eu não acredito que seja referenciado por qualquer coisa no diretório /etc/init
(não init.d!) do upstart:
»initctl start rc.local
initctl: Unknown job: rc.local
Existem alguns serviços "rc" em upstart:
»initctl list | grep rc
rc stop/waiting
rcS stop/waiting
rc-sysinit stop/waiting
Mas nada disso parece ter nada a ver com rc.local.