Ir al contenido principal

rc.local Debian 9 Stretch / Ubuntu 20.04 Actualizado

Hola, se que tiene siglos que no escribo nada.

NOTA: Me dice Google que tengo que poner una nota de las cookies por disposición Europea, yo no cree las cookies y no se que contengan, si las hay son de Google, Así que supongo ustedes sabrán si siguen leyendo o no este artículo.

Con los cambios a Stretch noto unos cambios y se ve que cada vez se impone más systemd en la configuración del sistema. Yo uso mucho el rc.local para ejecutar cosas en el arranque por ejemplo máquinas virtuales con virtualbox.
Que si quiere alguien una explicación de esto, escriban pidiéndolo y con gusto explico como.

Pero en Stretch veo que ni archivo /etc/rc.local existe, hay forma de activarlo y explico a continuación como.

Tal cual se explica aquí me ha funcionado en 4 sistemas 1 de ellos físico y 3 virtuales corriendo Debian 9 Stretch.

Primero copiemos el archivo ejemplo de la siguiente manera (todo lo hago como root)

cp /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

El contenido del archivo es el siguiente: (Pueden crear directo el archivo rc-local.service dentro de /etc/systemd/system con este contenido)

# This file is part of systemd.
 # 
# systemd is free software; you can redistribute it and/or modify it 
# under the terms of the GNU Lesser General Public License as published by 
# the Free Software Foundation; either version 2.1 of the License, or 
# (at your option) any later version. 
# This unit gets pulled automatically into multi-user.target by 
# systemd-rc-local-generator if /etc/rc.local is executable. 
[Unit]
Description=/etc/rc.local Compatibility 
ConditionFileIsExecutable=/etc/rc.local 
#After=network.target 

[Service]
 Type=forking 
ExecStart=/etc/rc.local start 
TimeoutSec=0 
RemainAfterExit=yes 
#GuessMainPID=no 
SysVStartPriority=99 

[Install] 
WantedBy=multi-user.target 

Luego tenemos que hacer un enlace simbólico de esta manera:

 cd /etc/systemd/system/multi-user.target.wants/
 ln -s /etc/systemd/system/rc-local.service rc-local.service 

 ahora creamos el rc.local en etc
vi rc.local 
#!/bin/bash 
:wq 

Importante poner la línea del comentario como si de un bash se tratara, me daba un error hasta que encontré un foro en RedHat donde explicaba que se pusiera esta línea y el error desapareció.

Ahora le damos permisos 755

 chmod 755 rc.local 

por ultimo lo vamos habilitar, ejecutar y verificar el status, debería estar funcionando ahora.

 systemctl enable rc-local.service 
systemctl start rc-local.service 
systemctl status rc-local.service 

Esto es lo que a mí me sale después de hacer estos pasos en las 4 computadoras que explicaba al principio que lo he probado  

● rc-local.service - /etc/rc.local Compatibility 
Loaded: loaded (/lib/systemd/system/rc-local.service; static)
Active: active (exited) since mié 2017-07-12 23:26:02 CDT; 1h 21min ago Process: 815 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) 

jul 12 23:26:02  rc.local[815]: Restarting mysql (via systemctl): mysql.service. 
jul 12 23:26:02  systemd[1]: Started /etc/rc.local Compatibility. 

 Ahora ya podemos colocar nuestros scripts dentro de rc.local recuerden que los scripts tienen que tener permiso de ejecución chmod +x Espero les sirva cualquier duda o comentario, bien recibidos.

TIP en stretch mucha gente se queja que no hay ifconfig para ver su IP cosa que no es necesario por que con ip a s pueden verla hasta siendo usuario sin permisos, y si aun así quieren ifconfig.

apt install net-tools  

 ACTUALIZACION

Lamento mucho la situación pero nunca me notificó que tenia comentarios y estoy muy apenado, ahora que estoy actualizando los veo. Perdón por no contestar antes. Les platico que ahora estoy usando una computadora con ubuntu por que es la única que me acepta el driver de nvidia ni modo :(. Lo bueno es que sigue siendo Debian.

Y necesito esto en la versión 20.04.

Ahora mi archivo de /etc/systemd/system/rc-local.service

Contiene

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

 

 Esto sigue Vigente

 cd /etc/systemd/system/multi-user.target.wants/
 ln -s /etc/systemd/system/rc-local.service rc-local.service 

Y el archivo /etc/rc.local

Contiene

#!/bin/bash
exit 0

Nota:(En algunos casos debe ser #!/bin/sh -e)

 y claro levantar el servicio

systemctl enable rc-local.service 
systemctl start rc-local.service 
systemctl status rc-local.service


Gracias por su comentarios y espero les sirva esta actualización.




Comentarios

  1. Hola Gerardo. Muchas gracias por tu post, me fue de gran ayuda. Aunque el error que comentabas solucionaste con el shebang de bash (#!/bin/bash), creo que se debe al link simbólico que utilizaste en el paso anterior -que es válido sólo en Redhat.
    Yo no utilicé dicho link, y el shebang ordinario del rc.local en Debian (#!/bin/sh -e) me funciona a la perfección.

    Cordiales Saludos.

    ResponderEliminar
    Respuestas
    1. perdón pero hasta ahora veo que tengo comentario nunca me aviso. Estoy actualizando la entrada por su la quieres ver.Y tienes toda la razón con tu comando funciona perfectamente bien.

      Eliminar
  2. Respuestas
    1. con mucho gusto, perdón pero hasta ahora veo que tengo comentario nunca me aviso. Estoy actualizando la entrada por su la quieres ver.

      Eliminar
  3. Hola, seguí todos los pasos acá y otros y no me funcionó la ejecución de los script en rc.local.
    Aparece iniciado el servicio, pero no ejecuta nada con, #!/bin/bash y #!bin/sh y no me funciona.
    Lo hice en un Debian x64 9.9

    Muchas gracias de todos modos, veo que a otros les funciona, no sé si es un Debian a partir de la versión 9.9
    Bye

    ResponderEliminar
    Respuestas
    1. Lamento mucho la situación pero nunca me notificó que tenia comentarios y estoy muy apenado, ahora que estoy actualizando los veo. Perdón por no contestar antes.Pero si quieres ve la actualización y lo requieres aun puedes verlo.

      Eliminar

Publicar un comentario

Entradas populares de este blog

Código Radio Polo 2005

El otro día se acabo la batería varios años de uso, y o sorpresa cuando cambio la batería el radio me pide un código para poder prender el radio, me recordaba que algo me comentaron cuando compré el auto, así que fui a sacar el expediente del auto y efectiamente ahí tenía mi código, como no sabía como meterlo, a buscar en el manual el procedimiento, y como sucede en estos casos el manual esta incorrecto en la forma de como hay que hacerlo. En el manual explica que hay que dejar el switch encendido, presionar el boton de power del radio poner los 4 dígitos con los números del 1 al 4 de la memoria hasta ahí todo bien, el paso final es el problema, dice que se deje presionado el boton 6 para grabar el código, cosa que puedes quedarte una hora pegado al botón y no pasa nada, después de probar cualquier número de combinaciones encontre que es con la flecha de seek hacía la derecha. Tambíen investigando en internet de como hacerlo que por desgracia nunca encontré como,( y esto motiv...

AAO 110 + Skype

Para los que tengan uno de estos equipitos maravilla, notaron o notaran que en Ubuntu 12.04 no sirve el micrófono con Skype, después de pasar unas horas viendo como hacer la funcionar encontré esta solución. En la ruta /etc/pulse/default.pa Editamos y agregamos como root esta línea module-alsa-source device=hw:1,0,0 ANTES de module-udev-detect.so Reiniciamos el sistema y con alsamixer presionan F4 para ver la parte de captura y micrófono estén el mas alto nivel de sonido. Y ya se puede usar el micrófono. Al parecer es un problema con el pulse. Así que con esto ya no funciona pulse. Y se controla el sonido por aplicación, o bien por el mismo alsamixer desde la consola, una lástima pero ya funciona el Skype. Si alguien encuentra una mejor solución mucho se agradecerá compartan el como.