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

Comment puis-je exécuter une commande après le démarrage ?

Je voudrais exécuter la simple commande shell echo 1 > /proc/sys/kernel/sysrq à chaque démarrage, pour activer les clés sysrq. Au démarrage, cela doit-il être fait, et où dois-je mettre un script pour le faire ?

Réponses (3)

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

Dépend des distros.

Si vous êtes sur des distros 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

et ensuite insérer cette ligne

@reboot /home/my_name/bin/my_command

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 celle-ci sera exécutée en dernier. Dans tous les cas, les pls se souviennent que vous utilisez l'environnement racine, et non le vôtre. Pour cette raison également, il est préférable d'utiliser des chemins absolus.

Si vous êtes sur une distro systemd (Arch Linux, Fedora 19,…) la première option (crontab) est toujours valable, alors que la seconde (/etc/rc.local) n'existe plus. Dans ce cas, vous devriez apprendre à démarrer un service qui doit être exécuté par systemctl, mais c'est peut-être plus que ce que vous avez négocié avec votre simple question.

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

Si votre système fonctionne avec une version de cron qui le supporte (plus précisément Vixie cron), vous pouvez utiliser @reboot dans une tâche cron.

C'est l'une des 8 chaînes de caractères spéciales qu'il supporte.

Citant la page de manuel crontab(5) (de mon système Ubuntu 12.04) :

Au lieu des cinq premiers champs, 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, en ce qui concerne @reboot, est le moment où le démon cron(8) démarre. En particulier, il peut être antérieur au démarrage de certains démons du système, ou d'autres installations. Cela est dû à la séquence d'ordre de démarrage de la machine.

C'est loin d'être la seule façon d'exécuter quelque chose au moment du démarrage, mais c'est une alternative.

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

Presque toutes les variantes de Linux (depuis 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 faire cela. La manière “correcte” serait de modifier / ajouter la ligne kernel.sysrq = 1 dans /etc/sysctl.conf