GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter automatiquement des commandes/scripts lors du redémarrage ou du démarrage

Je suis toujours fasciné par ce qui se passe dans les coulisses lorsque je démarre un système Linux et que je me connecte. En appuyant sur le bouton d'alimentation d'un système nu ou en démarrant une machine virtuelle, vous déclenchez une série d'événements qui conduisent à un système entièrement fonctionnel, parfois en moins d'une minute. Il en va de même lorsque vous vous déconnectez et/ou arrêtez le système.

Ce qui rend cela plus intéressant et amusant, c'est le fait que vous pouvez faire en sorte que le système d'exploitation exécute certaines actions lorsqu'il démarre et lorsque vous vous connectez ou vous déconnectez.

Dans cet article indépendant de la distribution, nous discuterons des méthodes traditionnelles pour atteindre ces objectifs sous Linux.

Remarque  :Nous supposerons l'utilisation de Bash comme shell principal pour les événements de connexion et de déconnexion. S'il vous arrive d'en utiliser une autre, certaines de ces méthodes peuvent ou non fonctionner. En cas de doute, reportez-vous à la documentation de votre shell.

Exécuter des scripts Linux lors du redémarrage ou du démarrage

Il existe deux méthodes traditionnelles pour exécuter une commande ou exécuter des scripts au démarrage :

Méthode 1 – Utiliser une tâche cron

Outre le format habituel (minute / heure / jour du mois / mois / jour de la semaine) largement utilisé pour indiquer un planning, cron scheduler permet également l'utilisation de @reboot . Cette directive, suivie du chemin absolu vers le script, entraînera son exécution au démarrage de la machine.

Cependant, il y a deux mises en garde à cette approche :

  1. a) le démon cron doit être en cours d'exécution (ce qui est le cas dans des circonstances normales), et
  2. b) le script ou le fichier crontab doit inclure les variables d'environnement (le cas échéant) qui seront nécessaires (reportez-vous à ce fil StackOverflow pour plus de détails).

Méthode #2 – Utiliser /etc/rc.d/rc.local

Cette méthode est valable même pour les distributions basées sur systemd. Pour que cette méthode fonctionne, vous devez accorder des autorisations d'exécution à /etc/rc.d/rc.local comme suit :

# chmod +x /etc/rc.d/rc.local

et ajoutez votre script en bas du fichier.

L'image suivante montre comment exécuter deux exemples de scripts (/home/gacanepa/script1.sh et /home/gacanepa/script2.sh ) en utilisant un cron travail et rc.local , respectivement, et leurs résultats respectifs.

script1.sh:
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh :
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

Gardez à l'esprit que les deux scripts doivent avoir reçu des autorisations d'exécution au préalable :

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

Exécuter des scripts Linux à la connexion et à la déconnexion

Pour exécuter un script à la connexion ou à la déconnexion, utilisez ~.bash_profile et ~.bash_logout , respectivement. Très probablement, vous devrez créer ce dernier fichier manuellement. Déposez simplement une ligne invoquant votre script au bas de chaque fichier de la même manière qu'avant et vous êtes prêt à partir.

Résumé

Dans cet article, nous avons expliqué comment exécuter un script au redémarrage, à la connexion et à la déconnexion. Si vous pensez à d'autres méthodes que nous aurions pu inclure ici, n'hésitez pas à utiliser le formulaire de commentaires ci-dessous pour les signaler. Nous sommes impatients de vous entendre !


Linux
  1. Comment configurer le script de démarrage et d'arrêt sur Gentoo Linux

  2. Comment exécuter une commande Linux bash dans un script PERL ?

  3. Comment écrire un script de démarrage pour Systemd ?

  4. Comment exécuter des scripts Python à partir du shell

  5. Comment exécuter un fichier sans extension .sh dans le shell

Comment exécuter des commandes Linux sur un système distant via SSH

Comment exécuter automatiquement les scripts et commandes de démarrage Linux

Comment créer des scripts shell

Comment exécuter des commandes dans Gnuplot à l'aide d'un script Shell ?

Comment exécuter une commande dans un script shell ?

Systemd :Comment exécuter le script à l'arrêt uniquement (pas au redémarrage)