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.d
directorio. 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.local
y se nombra, S99rc.local
entonces debe agregar su script como S99myscript
.
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
Cada /etc/rc*.d
directorio compatible con versiones anteriores tiene enlaces simbólicos al /etc/init.d/
directorio.
/etc/rc2.d
, en lugar de rc3.d
como se indica en el ejemplo. Parece rc2.d
que 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"`.d
lo llevará a qué /etc/rc?.d
directorio corresponde a su nivel de ejecución predeterminado.
rc.local
y se nombra, S99rc.local
entonces debe agregar su script como S99myscript
". ¿Quiso decir: "Si el último script que se ejecuta es myscript
y se nombra, S99myscript
entonces 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.local
que contiene: exit 0
/etc/rc.local
en 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 crontab
opción para hacer que su script se ejecute después de reiniciar,
puedes hacerlo agregando @reboot
có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 -e
para 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_cdrom
conveniente para su ubicación. En mi caso home/yterle/disable_cdrom
. En mi caso:
#!/bin/sh
eject /dev/sr0 -i 1
hazlo ejecutable chmod 775 disable_cdrom
/etc/systemd/system
y crear allí un service
archivo. Por ejemplosudo gedit /etc/systemd/system/disable_cdrom.service
Mi disable_cdrom.service
aspecto es este:
[Unit]
Description=Disable cdrom
[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom
[Install]
WantedBy=multi-user.target
Donde ExecStart
puntos para ejecutar su script con/bin/sh
Luego, ejecute systemctl enable disable_cdrom.service
para 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.local
estaba 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.
autostart
manifiestos o en*.service
archivos en varias ubicaciones, así como eninit.d
ocrontab
. Vea esto: unix.stackexchange.com/a/525845/43233