Si vous avez quelques années d’expérience dans l’écosystème Linux et que vous souhaitez partager cette expérience avec la communauté, consultez nos Directives de contribution.

Dans ce tutoriel, nous verrons comment exécuter une commande ou un script lorsqu’un système Linux démarre. Nous couvrirons différentes méthodes utilisant le rc.fichiers locaux, tâches cron et services systemd.

Approche classique : rc.fichier local

Lorsque nous démarrons une machine sous Linux, le premier processus qui s’exécute est le processus d’initialisation. Le processus d’initialisation exécute certains scripts en fonction de l’état dans lequel se trouve actuellement la machine. Ces états sont connus sous le nom de niveaux d’exécution. Au cours de chaque niveau d’exécution, une série de scripts rc sont exécutés pour que le système soit prêt à être utilisé ou à être arrêté.

Le rc.le fichier de script local devrait être disponible sur la plupart des systèmes d’exploitation UNIX. Cependant, il faut savoir qu’il pourrait ne pas être disponible, par défaut, sur les distributions Linux modernes. Nous devrons donc le configurer manuellement. Le rc.le script local s’exécutera avec les privilèges d’administrateur système. Par conséquent, il est plus facile d’exécuter un script ou une commande en tant que root.

Utilisation

Ajoutons une commande simple au script que nous aimerions exécuter une fois le système démarré:

!/ bin /sh-e

#

rc.local

#

Ce script est exécuté à la fin de chaque niveau d’exécution multi-utilisateurs.

Assurez-vous que le script « quittera 0 » en cas de succès ou de tout autre

valeur en cas d’erreur.

#

Pour activer ou désactiver ce script, il suffit de modifier l’exécution

bit.

#

Par défaut, ce script ne fait rien.

pgrep-x $(teamviewerd) // teamviewerd

sortie 0
Dans le script, nous avons ajouté une ligne pour exécuter le démon teamviewerd une fois le système démarré. Gardez à l’esprit que les commandes qui viennent après la sortie 0 ne s’exécuteront pas. Parfois, les commandes à l’intérieur du script ne s’exécuteront pas même si elles sont correctes. Dans ce cas, nous devons vérifier les autorisations d’exécution du fichier et les modifier en conséquence.

Activation du Service rc-local sur les Distributions Linux modernes

La plupart des distributions Linux grand public utilisent systemd comme gestionnaires d’initialisation et de services. systemd a sa propre façon d’exécuter des scripts personnalisés au démarrage. Néanmoins, nous pouvons toujours créer un processus systemd “rc-local” simple qui nous permettra d’exécuter le rc.script local au démarrage.

Créez un nouveau fichier dans /etc/systemd/system/rc-local.service et mettre le contenu suivant dans le fichier:

[Unité]
Description = /etc/rc.compatibilité locale
Conditions d’utilisation =/etc/rc.local

[Service]
Type = fourche
ExecStart =/etc/rc.départ local
Temps de sortie = 0
Sortie standard = ats
RemainAfterExit = oui
Priorité de démarrage = 99
[Installer]
WantedBy = multi-utilisateurs.cible
Une fois que nous avons enregistré le fichier, nous devrions activer ce service en utilisant systemctl:

system systemctl activer rc.local
Après avoir activé le service, nous devions créer le rc.fichier local et lui donner les autorisations appropriées.

Alternative: Travail Cron

Un crontab est un fichier qui contient une liste de commandes pouvant être planifiées pour s’exécuter périodiquement. Les tâches que nous spécifions dans ce fichier sont des tâches cron. En règle générale, ils sont exécutés par un démon cron, qui est installé sur la plupart des distributions.

Il existe différents programmes cron, qui fonctionnent tous de la même manière et utilisent un format crontab similaire. A nous d’en choisir un et de le configurer.

Installation

Il peut y avoir des cas où nous n’avons pas de programme cron installé sur notre serveur s’il exécute des distributions comme Gentoo. Par conséquent, nous devons l’installer et le configurer manuellement. Nous installerons l’utilitaire cron léger connu sous le nom de cronie. Il est disponible sur la plupart des dépôts sous le nom de cronie, que nous pouvons installer à l’aide d’un gestionnaire de paquets.

Sur Ubuntu et Debian, nous pouvons utiliser apt:

apt installer cronie

Pour Fedora et RHEL, nous pouvons utiliser yum:

miam installer cronie

Une fois l’installation terminée, allez-y et vérifiez-la:

cr crond-V
cronie 1.5.7
Maintenant, nous devons activer le service crond, qui est essentiellement le démon qui s’exécutera lorsque le système démarrera:

systemctl activer crond

Maintenant, nous sommes prêts à programmer des emplois cron dans le crontab.

Utilisation

Un crontab simple peut être constitué d’une ou plusieurs lignes. Chaque ligne correspond à une tâche qui est effectuée périodiquement. Créons un crontab avec la commande crontab:

cr crontab-e
Au début, il devrait s’agir d’un fichier vide. Ajoutons quelques tâches, qui sont exécutées à chaque démarrage du système:

@ redémarrer pulseaudio – k&& pulseaudio
@ redémarrer redshift-c~/.configuration / décalage vers le rouge/ configuration.conf
Une entrée crontab se compose de deux champs — le champ heure et le champ commande. Le champ heure spécifie quand exécuter la commande correspondante. Dans ce crontab, nous avons ajouté @reboot, ce qui signifie que nous voulons exécuter les commandes une fois que le système démarre.

Nous devons savoir que les commandes ci-dessus seront exécutées en tant qu’utilisateur normal. L’option -e indique à crontab de modifier le crontab de l’utilisateur actuel. Si nous voulons exécuter des commandes en tant que root, nous devons exécuter la commande crontab en tant que root, ce qui créera un autre fichier crontab pour l’utilisateur root.

Créons une tâche qui exécute un script shell en tant que root au démarrage:

su sudo crontab-e
@redémarrer . /root/upgrade-system.sh

Alternative: systemd

systemd n’est pas seulement un gestionnaire de services et un système d’initialisation, mais plutôt une collection complète d’utilitaires qui effectuent la plupart des tâches sur les distributions Linux.

Avant systemd, nous devions utiliser différents outils à des fins différentes, qui dans certains cas n’étaient pas aussi efficaces que systemd. De nos jours, systemd fait partie de toutes les distributions Linux populaires telles que Fedora, Ubuntu, Mint, Debian, etc. Par conséquent, nous devrions l’utiliser au lieu de compter sur des outils externes.

Création du Script de Démarrage

Tout d’abord, nous avons besoin d’un fichier de script contenant la ou les commandes que nous aimerions exécuter au démarrage. Plus tard, nous spécifierons ce fichier à exécuter dans un service systemd personnalisé. Alors, créons un fichier de script qui démarre essentiellement un démon de notification:

pgrep dunst // setsid-f dunst
Assurez-vous de rendre ce script exécutable.

Création d’un service systemd

Maintenant que notre script est prêt, nous devons créer un service systemd qui source notre fichier de script. Alors, allons-y et créons une startup.fichier de service dans /lib/systemd/system:

touch touch/lib/systemd/système/démarrage.service
Maintenant, définissons notre service dans ce fichier:

[Unité]
Description = Script de démarrage

[Service]
ExecStart=/root/.local/bin/startup.sh

[Installer]
WantedBy = multi-utilisateurs.cible
Nous pouvons modifier le champ ExecStart pour spécifier le chemin d’accès à notre script de démarrage. Une fois cela fait, enregistrez le fichier et activez ce service afin qu’il s’exécute à chaque démarrage de notre machine:

systemctl activer le démarrage.servicenowmaintenant

systemd activera ce service et l’exécutera immédiatement car nous avons ajouté l’option -now.

De la même manière, nous pouvons créer plusieurs services à exécuter au démarrage à des fins différentes.

Conclusion

Dans ce tutoriel, nous avons vu comment exécuter des commandes et des scripts Linux au démarrage. Nous avons couvert trois méthodes différentes que nous pouvons utiliser dans différents environnements.

Si vous avez quelques années d’expérience dans l’écosystème Linux et que vous souhaitez partager cette expérience avec la communauté, consultez nos Directives de contribution.