2013-12-08 07:10:46 +0000 2013-12-08 07:10:46 +0000
27
27

¿Cómo puedo ejecutar un comando después del arranque?

Me gustaría ejecutar el simple comando shell echo 1 > /proc/sys/kernel/sysrq en cada arranque, para habilitar las teclas sysrq. ¿En qué momento del arranque debería hacerse esto, y dónde debería poner un script para hacerlo?

Respuestas (3)

37
37
37
2013-12-08 07:37:04 +0000

Depende de las distros.

Si está en distros derivadas de Debian, hay al menos dos lugares adecuados, /etc/rc.local y crontab. Puede invocar crontab como root,

crontab -e

y luego insertar esta línea

@reboot /home/my_name/bin/my_command

donde my_command es un archivo ejecutable (chmod 755 my_command).

Alternativamente, puede colocar una línea como esta

/home/my_name/bin/my_command

en /etc/rc.local, y esto se ejecutará en último lugar. En cualquier caso, recuerde que está utilizando el entorno de root, no el suyo. También por esta razón, es mejor usar rutas absolutas.

Si estás en una distro systemd (Arch Linux, Fedora 19,…) la primera opción (crontab) sigue siendo válida, mientras que la segunda (/etc/rc.local) ya no existe. En este caso, debes aprender a iniciar un servicio para que sea ejecutado por systemctl, pero esto puede ser más de lo que esperabas con tu simple pregunta.

19
19
19
2012-09-10 22:29:09 +0000

Si su sistema está ejecutando una versión de cron que lo soporta (específicamente Vixie cron), puede utilizar @reboot en un trabajo cron.

Esta es una de las 8 cadenas especiales que soporta.

Citando la página man de crontab(5) (de mi sistema Ubuntu 12.04):

En lugar de los cinco primeros campos, puede aparecer una de las ocho cadenas especiales:

string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".

Tenga en cuenta que el inicio, en lo que respecta a @reboot, es el momento en que el demonio cron(8) se inicia. En particular, puede ser antes de que algunos daemons del sistema, u otras instalaciones, se inicien. Esto se debe a la secuencia de orden de arranque de la máquina.

Esta no es ni mucho menos la única forma de ejecutar algo en el arranque, pero es una alternativa.

9
9
9
2013-12-08 07:32:27 +0000

Casi todas las variantes de Linux (desde hace mucho, mucho tiempo) tienen un archivo /etc/rc.local que se ejecuta en el arranque - sólo tienes que añadir el comando a la misma.

Dicho esto, ni siquiera necesitas hacer eso. La forma “correcta” sería modificar / añadir la línea kernel.sysrq = 1 en /etc/sysctl.conf