Tenía un script que habilita automáticamente mi wifi sin usar networkmanager, pero no sé cómo ejecutar el script como root mientras el sistema se inicia. ¿Cómo hago que el script se ejecute automáticamente durante el arranque?
Tenía un script que habilita automáticamente mi wifi sin usar networkmanager, pero no sé cómo ejecutar el script como root mientras el sistema se inicia. ¿Cómo hago que el script se ejecute automáticamente durante el arranque?
Respuestas:
Coloque el script que desea ejecutar en el directorio /etc/init.d y haga que el script sea ejecutable.
chmod 755 myscript
Una vez hecho esto, cree un enlace simbólico en el directorio de nivel de ejecución que le gustaría usar, por ejemplo, si desea ejecutar un programa en el nivel de ejecución gráfico 2, el nivel de ejecución predeterminado para Ubuntu, lo colocaría en el /etc/rc2.ddirectorio. Simplemente no puede colocarlo en el directorio, debe indicar cuándo se ejecutará indicando el inicio con una "S" y el orden de ejecución es importante. Colóquelo después de todo lo que está en el directorio dándole un número más alto.
Si el último script que se ejecutará es rc.localy se nombra, S99rc.localentonces debe agregar su script como S99myscript.
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
Cada /etc/rc*.ddirectorio compatible con versiones anteriores tiene enlaces simbólicos al /etc/init.d/directorio.
/etc/rc2.d, en lugar de rc3.dcomo se indica en el ejemplo. Parece rc2.dque no es solo el nivel de ejecución gráfica.
cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.dlo llevará a qué /etc/rc?.ddirectorio corresponde a su nivel de ejecución predeterminado.
rc.localy se nombra, S99rc.localentonces debe agregar su script como S99myscript". ¿Quiso decir: "Si el último script que se ejecuta es myscripty se nombra, S99myscriptentonces debe agregar su script como S99myscript"?
Incluya el comando en /etc/rc.local. Se ejecutará cada vez que cambie el nivel de ejecución del usuario.
Nota: Debe colocar el comando antes de la última línea en /etc/rc.local que contiene: "exit 0".
/etc/rc.localque contiene: exit 0
/etc/rc.localen ubuntu 15.10 comenta que "este script se ejecuta al final de cada nivel de ejecución multiusuario". Entonces, el script podría ejecutarse varias veces durante el arranque, ¿verdad?
Use una crontabopción para hacer que su script se ejecute después de reiniciar,
puedes hacerlo agregando @rebootcódigo en cron
Abrir crontab por usuario root:
$ sudo crontab -e
Agregue el siguiente registro en la parte inferior:
@reboot yourScriptPath
Eso hará lo que quieras.
crontab -e, que no necesita privilegios de superusuario? Me pregunto si puede ejecutar scripts que deben ejecutarse como root.
sudo crontab -epara que ejecute el script como root durante el inicio.
/var/run/crond.reboot, si no, no se ejecutará la tarea
Esto funcionó para mí en Ubuntu 17.04:
cree un archivo de guión turístico como disable_cdromconveniente para su ubicación. En mi caso home/yterle/disable_cdrom. En mi caso:
#!/bin/sh
eject /dev/sr0 -i 1hazlo ejecutable chmod 775 disable_cdrom
/etc/systemd/systemy crear allí un servicearchivo. Por ejemplosudo gedit /etc/systemd/system/disable_cdrom.serviceMi disable_cdrom.serviceaspecto es este:
[Unit]
Description=Disable cdrom
[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom
[Install]
WantedBy=multi-user.target
Donde ExecStartpuntos para ejecutar su script con/bin/sh
Luego, ejecute systemctl enable disable_cdrom.servicepara habilitar el servicio systemd
systemctl enable disable_cdrom.service
Incluya su archivo de Script /etc/init.d/
con permiso ejecutable y luego establezca un nivel de ejecución diferente
$ update-rc.d script-name default
Pondrá su script en el inicio de arranque.
update-rc.d script-name enable?
Cuidado con agregar el script a rc.local- me quedé atrapado en la pantalla de bienvenida por eso Al presionar Alt+ se F1reveló lo que estaba sucediendo detrás de la pantalla de inicio (el script se rc.localestaba ejecutando).
No pude salir de eso.
nada funciona.
Tuve que arrancar desde una imagen USB de Ubuntu, buscar rc.local, darme permisos para archivar y eliminarlo. Supongo que no deberías hacer cosas si no sabes lo que estás haciendo.
autostartmanifiestos o en*.servicearchivos en varias ubicaciones, así como eninit.docrontab. Vea esto: unix.stackexchange.com/a/525845/43233