Comment exécuter automatiquement des commandes et des scripts Linux lors d'un redémarrage du système

How Run Linux Commands



L'exécution automatique d'applications et de scripts au démarrage peut être utile pour automatiser les tâches et les événements de démarrage courants. Cet article expliquera quelques méthodes pouvant être utilisées pour lancer des applications et des scripts lors d'un nouveau redémarrage ou d'une nouvelle connexion.

Applications de démarrage

Ubuntu et d'autres distributions basées sur GNOME sont livrées avec une application simplement appelée Startup Applications. Il peut être utilisé pour gérer les applications et les scripts qui s'exécutent lors d'un nouveau redémarrage du système ou d'une nouvelle connexion.







Lancez l'application Applications de démarrage à partir du lanceur d'applications et cliquez sur le bouton Ajouter pour ajouter une nouvelle entrée.





Remplissez les champs Nom et Commande selon vos besoins, puis cliquez sur le bouton Ajouter pour terminer la création d'une nouvelle entrée. L'entrée créée dans la capture d'écran ci-dessous enverra un rappel Faire une sauvegarde en tant que notification système à chaque redémarrage / connexion. Vous pouvez le remplacer par votre propre commande ou par le chemin complet de votre script bash. Vous pouvez également utiliser n'importe quelle commande système existante ou des exécutables généralement situés dans divers dossiers bin à travers le système de fichiers.





Comme indiqué ci-dessus, un rappel de sauvegarde s'affiche à chaque redémarrage.



Systemd

Systemd est un démon et un gestionnaire de services qui contient divers utilitaires pour gérer les processus système et les composants du système d'exploitation. Dans sa forme simpliste, il est généralement utilisé pour démarrer et terminer les services dans un nouveau cycle de démarrage.

Systemd peut être utilisé pour lancer automatiquement une application ou exécuter un script lors d'un nouveau démarrage. Pour créer la même notification de rappel de sauvegarde expliquée ci-dessus, vous devez d'abord créer les dossiers et fichiers requis en exécutant les commandes ci-dessous :

$mkdir -p~/.config/système/utilisateur
$nano~/.config/système/utilisateur/backup_reminder.service

Remplacez nano par la commande de votre éditeur de texte préféré. Remplacez backup_reminder par tout autre nom que vous préférez.

Collez le code ci-dessous dans le fichier backup_reminder.service créé à l'aide de la commande ci-dessus.

[Unité]
Description=Envoie un rappel de sauvegarde à chaque redémarrage
PartOf=session-graphique.target

[Service]
ExecStart=bash -c 'sommeil 10 ; notify-send 'Faire une sauvegarde''
Type=oneshot

[Installer]
WantedBy=graphical-session.target

Le code ci-dessus est assez simple. Il envoie une notification Make a Backup 10 secondes après le chargement de la session graphique (une fois à chaque redémarrage ou connexion).

Exécutez les commandes ci-dessous pour activer le service afin qu'il puisse s'exécuter automatiquement à chaque redémarrage.

$chmod 644~/.config/système/utilisateur/backup_reminder.service
$ systemctl--utilisateur permettrebackup_reminder.service
$ systemctl--utilisateurdémon-recharger
$ redémarrer

Ceci n'est qu'un exemple simple d'exécution d'une commande de base au démarrage à l'aide de systemd. Vous pouvez également créer des services avancés avec plusieurs conditions et plusieurs commandes. Pour plus d'informations, reportez-vous à la page de manuel systemd en exécutant la commande ci-dessous :

$hommesystème

Notez que cet exemple explique la création d'un nouveau service qui ne nécessite pas d'accès root et qui convient aux applications à démarrage automatique qui ne nécessitent pas d'autorisations root. Si vous souhaitez démarrer automatiquement des scripts nécessitant un accès root, vous devez créer un nouveau service systemd dans le répertoire /etc/systemd/system au lieu du dossier ~/.config/systemd/user et omettre le commutateur –user dans les commandes mentionnées ci-dessus.

Tâche planifiée

Cron est un outil qui peut exécuter périodiquement des tâches planifiées selon les conditions spécifiées par un utilisateur. Ces tâches planifiées sont créées dans Crontab dans un format prédéfini. En termes simples, Crontab indique à Cron quelles tâches exécuter à quel moment.

Comme systemd, les tâches crontab peuvent être utilisées pour lancer des applications et exécuter des scripts automatiquement au démarrage. Pour ajouter une nouvelle tâche cron, exécutez la commande ci-dessous :

$crontab-Et

Ajoutez les lignes suivantes à la fin du fichier texte (lance automatiquement le terminal GNOME à chaque redémarrage) :

SHELL=/bin/bash
@reboot sleep 30 && DISPLAY=:0 gnome-terminal

Vous pouvez utiliser votre propre commande ou fournir le chemin complet d'un script shell.

Notez que contrairement à systemd, cron ne peut pas détecter si la session graphique a été chargée ou non. Vous devez spécifier une période d'attente estimée jusqu'au chargement du serveur X et un identifiant d'affichage. Vous pouvez connaître votre ID d'affichage en exécutant la commande ci-dessous :

$chassèrent $AFFICHAGE

Le délai avant l'exécution de la commande ou du script dépend de la configuration de votre système et de l'heure de démarrage.

Rc.local

Une autre méthode pour exécuter des scripts et des commandes au démarrage consiste à utiliser le fichier rc.local. Notez que lors de mes tests, je n'ai pas pu différer l'exécution du script jusqu'à ce que la session graphique soit en direct. L'ajout d'un délai de veille entraîne un retard dans l'affichage de l'écran de connexion lui-même. Pour cette raison, je n'ai pas réussi à exécuter des applications graphiques au démarrage à l'aide du fichier rc.local. L'édition de rc.local nécessite également un accès root, contrairement à tous les autres exemples expliqués ci-dessus.

Pour ajouter des commandes/scripts au fichier rc.local, exécutez la commande ci-dessous (crée un nouveau fichier rc.local s'il n'existe pas) :

$sudo nano /etc/rc.local

Ajoutez vos commandes entre # ! /bin/bash et quittez 0 lignes, comme indiqué ci-dessous :

# ! /bin/bash
chemin/vers/mon_script.sh
sortie 0

Rendez le fichier rc.local exécutable en exécutant la commande ci-dessous :

$sudo chmod+ x/etc/rc.local

Redémarrez simplement pour que le script de démarrage prenne effet.

Conclusion

Ce sont quelques méthodes qui peuvent être utilisées pour exécuter automatiquement des scripts et des applications au démarrage. Si vous cherchez à exécuter des scripts qui ne nécessitent pas d'accès root, je vous recommande d'utiliser l'application GUI des applications de démarrage. Si vous souhaitez exécuter des applications et des scripts avec un accès root, je vous suggère de créer un service systemd au niveau du système.

A propos de l'auteur

Nitesh Kumar

Je suis un développeur de logiciels indépendant et un rédacteur de contenu qui aime Linux, les logiciels open source et la communauté du logiciel libre.

Voir tous les messages