Depende de las distribuciones.
Si está en distribuciones derivadas de Debian, hay al menos dos lugares adecuados, /etc/rc.local y crontab. Puede invocar crontab como root,
crontab -e
y luego inserte 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 este se ejecutará en último lugar. En cualquier caso, recuerde que está utilizando un entorno raíz, no el suyo. También por este motivo, es mejor utilizar rutas absolutas.
Si está en un systemd distro (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, debe aprender cómo iniciar un servicio para que lo ejecute systemctl
, pero esto puede ser más de lo que esperaba con su simple pregunta.
Si su sistema ejecuta una versión de cron
que lo admita (específicamente Vixie cron), puede usar @reboot
en un trabajo cron.
Esta es una de las 8 cadenas especiales que admite.
Citando el crontab(5)
página man (de mi sistema Ubuntu 12.04):
En lugar de los primeros cinco 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, hasta el @reboot
se refiere, es el momento en que el cron(8) inicio del demonio. En particular, puede ser antes de que se iniciaran algunos demonios del sistema u otras instalaciones. Esto se debe a la secuencia de orden de arranque de la máquina.
Esto está lejos de ser el único forma de ejecutar algo en el momento del arranque, pero es una alternativa.
Prácticamente todas las variantes de Linux (que se remontan a mucho, mucho tiempo) tienen un archivo /etc/rc.local que se ejecuta al inicio; simplemente puede agregarle el comando.
Dicho esto, ni siquiera necesitas hacer eso. La forma "correcta" sería modificar / agregar la línea kernel.sysrq =1 en /etc/sysctl.conf