Dépend des distributions.
Si vous êtes sur des distributions dérivées de Debian, il y a au moins deux endroits appropriés, /etc/rc.local et crontab. Vous pouvez invoquer crontab en tant que root,
crontab -e
puis insérez cette ligne
@reboot /home/my_name/bin/my_command
où my_command
est un fichier exécutable (chmod 755 my_command
).
Alternativement, vous pouvez placer une ligne comme celle-ci
/home/my_name/bin/my_command
dans /etc/rc.local, et celui-ci sera exécuté en dernier. Dans tous les cas, n'oubliez pas que vous utilisez l'environnement racine, pas le vôtre. Aussi pour cette raison, il est préférable d'utiliser des chemins absolus.
Si vous êtes sur un systemd distro (Arch Linux, Fedora 19,...) la première option (crontab) est toujours valide, tandis que la seconde (/etc/rc.local) n'existe plus. Dans ce cas, vous devez apprendre à démarrer un service devant être exécuté par systemctl
, mais cela peut être plus que ce que vous avez négocié avec votre simple question.
Si votre système exécute une version de cron
qui le prend en charge (en particulier Vixie cron), vous pouvez utiliser @reboot
dans une tâche cron.
C'est l'une des 8 chaînes spéciales qu'il prend en charge.
Citant le crontab(5)
page de manuel (depuis mon système Ubuntu 12.04) :
Au lieu des cinq premiers champs, l'une des huit chaînes spéciales peut apparaître :
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 * * * *".
Veuillez noter que le démarrage, jusqu'à
@reboot
est concerné, est le moment où le cron(8) démarrage du démon. En particulier, cela peut être avant le démarrage de certains démons système ou d'autres fonctionnalités. Cela est dû à la séquence d'ordre de démarrage de la machine.
C'est loin d'être le seul moyen d'exécuter quelque chose au démarrage, mais c'est une alternative.
Presque toutes les variantes de Linux (remontant à très, très longtemps) ont un fichier /etc/rc.local qui s'exécute au démarrage - vous pouvez simplement y ajouter la commande.
Cela dit, vous n'avez même pas besoin de le faire. La manière "correcte" serait de modifier/ajouter la ligne kernel.sysrq=1 dans /etc/sysctl.conf