En algunos sistemas basados en Linux, es posible configurar scripts personalizados para que se ejecuten durante el inicio del sistema utilizando el archivo rc.local
. A continuación se detallan los pasos para lograrlo:
1. Comprobar si existe rc.local
En distribuciones más recientes, como las basadas en systemd (Ubuntu 16.04+ y otras), el archivo rc.local
puede no estar habilitado por defecto.
Para verificar si rc.local
existe, puedes ejecutar:
ls /etc/rc.local
Si el archivo existe, el comando anterior te mostrará la ruta del archivo. Si no existe, puedes crearlo.
2. Crear o habilitar el archivo rc.local
Si el archivo no existe o está deshabilitado, puedes crearlo y asegurarte de que tenga los permisos correctos.
- Crea el archivo
rc.local
:sudo nano /etc/rc.local
- Añade el siguiente contenido básico al archivo si está vacío. Esto incluye el shebang (
#!/bin/sh
) que indica el intérprete de comandos:#!/bin/sh -e
# rc.local
# Este script se ejecutará después de que el sistema haya terminado de iniciar.
# Añade aquí tus comandos o scripts
exit 0
- Haz el archivo ejecutable:
sudo chmod +x /etc/rc.local
3. Ejecutar un script desde rc.local
Puedes añadir cualquier comando o script que desees ejecutar al inicio del sistema antes de la línea exit 0
. Por ejemplo, si tienes un script llamado mi_script.sh
en /home/usuario/
, puedes agregar la ruta completa del script en el archivo rc.local
.
Ejemplo:
Supongamos que queremos ejecutar el script /home/usuario/mi_script.sh
al iniciar el sistema:
- Edita el archivo
rc.local
:sudo nano /etc/rc.local
- Añade la ruta del script antes de la línea
exit 0
:#!/bin/sh -e
# rc.local
# Ejecuta el script personalizado
/home/usuario/mi_script.sh
exit 0
Asegúrate de que tu script mi_script.sh
también sea ejecutable:
sudo chmod +x /home/usuario/mi_script.sh
4. Habilitar rc-local.service
(para sistemas con systemd)
Si tu sistema usa systemd, es posible que necesites habilitar el servicio rc-local
manualmente. Aquí te muestro cómo hacerlo:
- Crea el archivo de servicio:
sudo nano /etc/systemd/system/rc-local.service
- Añade el siguiente contenido para crear un servicio compatible con
rc.local
:[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
- Recarga los servicios del sistema:
sudo systemctl daemon-reload
- Activa el servicio para que se inicie al encender el sistema:
sudo systemctl enable rc-local
- Inicia el servicio:
sudo systemctl start rc-local
5. Verificar el estado de rc.local
Puedes verificar que rc.local
se ha ejecutado correctamente o si ha ocurrido algún error con el siguiente comando:
sudo systemctl status rc-local
Esto te mostrará el estado del servicio y si se ejecutó con éxito.
6. Ejemplo práctico completo
Si tienes un script llamado mi_script.sh
que imprime "Hola Mundo" en un archivo de log y quieres que se ejecute al inicio:
- Crea el script:
nano /home/usuario/mi_script.sh
- Añade el siguiente contenido:
#!/bin/bash echo "Hola Mundo - $(date)" >> /home/usuario/log.txt
- Haz que el script sea ejecutable:
chmod +x /home/usuario/mi_script.sh
- Edita el archivo
rc.local
:sudo nano /etc/rc.local
- Añade el script al
rc.local
:#!/bin/sh -e
/home/usuario/mi_script.sh
exit 0
- Habilita y ejecuta el servicio
rc-local
como se mencionó antes.
7. Conclusión
Usar rc.local
es una manera sencilla y directa de hacer que scripts personalizados se ejecuten al iniciar el sistema. Sin embargo, para distribuciones modernas que usan systemd, es importante asegurarse de que el servicio rc-local
esté habilitado correctamente. Esto garantiza que tus scripts se ejecuten sin problemas al inicio.