GNU/Linux >> Tutoriels Linux >  >> Linux

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

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

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


Linux
  1. Comment exécuter une commande en tant qu'administrateur système (racine) ?

  2. Comment intégrer la commande Mv après la commande Find ?

  3. Comment exécuter une commande dans un conteneur Systemd en cours d'exécution ?

  4. Comment puis-je exécuter automatiquement des scripts au démarrage dans Centos 7 ?

  5. Comment puis-je exécuter correctement des scripts de ligne de commande Perl one liner?

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter la commande Sudo sans mot de passe

Comment exécuter des commandes Linux en arrière-plan

Comment démarrer en ligne de commande Linux

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch

Comment puis-je exécuter manuellement une vérification nagios à partir de la ligne de commande ?