Comment exécuter automatiquement les commandes et scripts Linux sur un redémarrage du système

Comment exécuter automatiquement les commandes et scripts Linux sur un redémarrage du système
L'exécution des applications et des scripts automatiquement au démarrage peut être utile pour automatiser les tâches et événements de démarrage communs. Cet article expliquera quelques méthodes qui peuvent être utilisées pour lancer des applications et des scripts sur un nouveau redémarrage ou une nouvelle connexion.

Applications de démarrage

Ubuntu et d'autres distributions basées sur des gnomes 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 sur un nouveau redémarrage du système ou la connexion.

Lancez l'application «Startup Applications» à 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 un sauvegarde» en tant que notification système sur chaque redémarrage / connexion. Vous pouvez le remplacer par votre propre commande ou par un chemin complet de votre script bash. Vous pouvez également utiliser n'importe quelle commande ou exécutable système existant généralement situé dans divers dossiers «bac» à travers le système de fichiers.

Comme indiqué ci-dessus, un rappel de sauvegarde est indiqué sur 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 mettre fin aux services dans un nouveau cycle de démarrage.

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

$ mkdir -p ~ /.config / systemd / utilisateur
$ nano ~ /.config / systemd / user / 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 backup_reminder.Fichier de service créé à l'aide de la commande ci-dessus.

[Unité]
Description = envoie un rappel de sauvegarde sur chaque redémarrage
Partof = session graphique.cible
[Service]
ExecStart = bash -c 'sleep 10; informer-send "faire une sauvegarde" '
Type = OneShot
[Installer]
WANTEDBY = SESSION GRAPHIQUE.cible

Le code ci-dessus est assez simple. Il envoie une notification «faire 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 fonctionner automatiquement à chaque redémarrage.

$ chmod 644 ~ /.config / systemd / user / backup_reminder.service
$ SystemCTL --User Activer Backup_Reminder.service
$ SystemCTL - User-Daemon-Reload
$ redémarrer

Ce n'est qu'un exemple simple d'exécution d'une commande de base sur le 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 Systemd Man 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 racine et convient aux applications de démarrage automatique qui ne nécessitent pas d'autorisations racines. 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 / système» au lieu du «~ / /.Dossier config / systemd / utilisateur »et omettez le commutateur« -Usser »dans les commandes mentionnées ci-dessus.

Tâche planifiée

Cron est un outil qui peut exécuter périodiquement les tâches planifiées en fonction des conditions spécifiées par un utilisateur. Ces travaux programmés sont créés dans Crontab dans un format prédéfini. En termes simples, Crontab dit à Cron quels travaux courir à quel moment.

Comme SystemD, les travaux Crontab peuvent être utilisés pour lancer des applications et exécuter automatiquement les scripts sur le démarrage. Pour ajouter un nouveau travail 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 && affiche =: 0 gnome-terminal

Vous pouvez utiliser votre propre commande ou fournir un 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'à ce que le serveur X charge et un identifiant d'affichage. Vous pouvez connaître votre ID d'affichage en exécutant la commande ci-dessous:

$ echo $ affichage

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

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 reporter l'exécution du script jusqu'à ce que la session graphique soit en direct. L'ajout de délai de sommeil 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 de RC.dossier local. Édition RC.Local nécessite également un accès racine, 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 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:

#! / bac / bash
chemin / vers / my_script.shot
sortie 0

Faire RC.Fichier local exécutable en exécutant la commande ci-dessous:

$ sudo chmod + x / etc / rc.local

Il suffit de redémarrer pour que le script de démarrage prenne effet.

Conclusion

Ce sont quelques méthodes qui peuvent être utilisées pour exécuter automatiquement les scripts et les applications au démarrage. Si vous cherchez à exécuter des scripts qui ne nécessitent pas d'accès root, je recommanderais 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.