Commandes Linux

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

Comment exécuter automatiquement des commandes et des scripts Linux lors d'un redémarrage du système
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 « Applications de démarrage ». 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 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 "Créer 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" du système de fichiers.

Comme indiqué ci-dessus, un rappel de sauvegarde est affiché à 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/systemd/user
$ nano ~/.config/systemd/user/backup_reminder.un 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 backup_reminder.fichier de service créé à l'aide de la commande ci-dessus.

[Unité]
Description=Envoie un rappel de sauvegarde à chaque redémarrage
PartOf=session-graphique.cible
[Un service]
ExecStart=bash -c 'sommeil 10 ; notify-send "Créer une sauvegarde"'
Type=oneshot
[Installer]
WantedBy=session-graphique.cible

Le code ci-dessus est assez simple. Il envoie une notification "Créer une sauvegarde" 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/systemd/user/backup_reminder.un service
$ systemctl --user activer backup_reminder.un service
$ systemctl --user daemon-reload
$ 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 :

$ man systemd

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 de "~/.config/systemd/user" et omettez 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 -e

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 vers 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 :

$ echo $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 "rc.fichier "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 en utilisant rc.fichier local. Modification de rc.local nécessite également un accès root, contrairement à tous les autres exemples expliqués ci-dessus.

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

$ sudo nano /etc/rc.local

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

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

Faire rc.fichier 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

Voici 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 « 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é des logiciels libres.

Voir tous les messages
Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...
OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...