GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre les niveaux d'exécution Linux de la bonne façon

Vous pouvez considérer les niveaux d'exécution Linux comme différents "modes" dans lesquels le système d'exploitation s'exécute. Chacun de ces modes, ou niveaux d'exécution, a sa liste de processus et de services qui sont activés ou désactivés. À partir du moment où Linux démarre, c'est toujours dans un certain niveau d'exécution.

Ce niveau d'exécution peut changer au fur et à mesure que vous continuez à utiliser votre ordinateur, selon le type de services auxquels le système d'exploitation a besoin d'accéder.

Par exemple, l'exécution de votre machine Linux avec une interface utilisateur graphique nécessitera un niveau d'exécution différent que si vous n'exécutiez que la ligne de commande sur votre système.

En effet, l'interface utilisateur graphique aura besoin d'accéder à divers services que la ligne de commande n'a tout simplement pas. Pour que le système détermine quels services doivent être activés (ou désactivés), il modifie le niveau d'exécution selon les besoins.

Importance des niveaux d'exécution Linux

Vous avez peut-être utilisé Linux pendant des années sans vous rendre compte qu'il existe différents niveaux d'exécution. C'est parce que ce n'est pas quelque chose que la plupart des administrateurs de serveur auront besoin de configurer souvent.

Cependant, les niveaux d'exécution Linux donnent aux administrateurs un contrôle accru sur les systèmes qu'ils gèrent.

Vous pouvez modifier le niveau d'exécution d'un système (ce que nous verrons comment faire plus tard dans l'article), tout comme les services qui s'exécutent à l'intérieur des niveaux d'exécution. Cela nous permet un contrôle total sur les services auxquels nos systèmes ont accès à tout moment.

Combien y a-t-il de niveaux d'exécution dans Linux ?

Il existe sept niveaux d'exécution différents sous Linux, de zéro à six. Diverses distributions peuvent utiliser les sept niveaux d'exécution différemment, il n'est donc pas très facile de compiler une liste définitive de ce que font les niveaux d'exécution.

Au lieu de cela, vous devrez vérifier le fonctionnement des niveaux d'exécution sur la distribution spécifique que vous utilisez. Pour l'essentiel, la liste ci-dessous représente la manière dont les distributions Linux configurent généralement les niveaux d'exécution :

Niveau d'exécution 0 arrête le système.

Niveau d'exécution 1 est un mode mono-utilisateur, qui est utilisé pour les tâches de maintenance ou d'administration. Vous pouvez également voir ce mode appelé runlevel S (le S signifie mono-utilisateur).

Niveau d'exécution 2 est un mode multi-utilisateurs. Ce niveau d'exécution n'utilise aucun service réseau.

Niveau d'exécution 3 est un mode multi-utilisateurs avec mise en réseau. Il s'agit du niveau d'exécution normal auquel vous êtes habitué si vous utilisez un système qui ne démarre pas dans une GUI (interface utilisateur graphique).

Niveau d'exécution 4 N'est pas utilisé. L'utilisateur peut personnaliser ce niveau d'exécution à ses propres fins (ce que nous verrons comment faire plus tard dans l'article).

Niveau d'exécution 5 est le même que le niveau d'exécution 3, mais il démarre également un gestionnaire d'affichage. Il s'agit du niveau d'exécution que vous utilisez si vous utilisez un système qui démarre dans une interface graphique.

Niveau d'exécution 6 redémarre le système.

Quel est mon niveau d'exécution actuel ?

Vous pouvez voir votre niveau d'exécution actuel sur la plupart des distributions en tapant simplement "runlevel" dans le terminal.

Lorsque vous entrez la commande "runlevel", cela vous donnera deux nombres différents. Le premier nombre est le niveau d'exécution précédent de votre système et le second nombre est le niveau d'exécution actuel de votre système.

Dans la capture d'écran ci-dessus, le "N" est l'abréviation de "aucun", ce qui signifie que le système n'était pas dans un niveau d'exécution différent auparavant. Le "5" signifie que notre système est actuellement au niveau d'exécution 5.

Nous exécutons CentOS dans cet exemple, qui a démarré directement dans une interface graphique, d'où la raison pour laquelle le système est passé directement au niveau d'exécution 5.

Comment changer le niveau d'exécution actuel ?

Vous pouvez modifier le niveau d'exécution actuel de votre système à l'aide de la commande "telinit". Par exemple, pour passer au niveau d'exécution 3 sur CentOS, vous devez taper :

$ telinit 3

Gardez à l'esprit que vous devez être l'utilisateur root pour exécuter cette commande. Sachez que les niveaux d'exécution fonctionnent différemment sur Debian et Ubuntu - par exemple, Ubuntu démarrera au niveau d'exécution 5 même sans démarrer une interface graphique.

Si vous suivez l'exemple ci-dessus, votre écran peut devenir vide. C'est parce que vous êtes laissé au - maintenant vide - tty. Faites simplement Alt + F1 (ou une autre touche de fonction) sur votre clavier pour être redirigé vers un terminal en état de marche.

Si nous utilisons à nouveau la commande "runlevel", nous verrons que nous sommes maintenant au niveau d'exécution 3, et le niveau d'exécution précédent est répertorié comme 5 puisque nous venons de le changer.

Cibles système Linux vs niveaux d'exécution

Ces dernières années, systemd est venu remplacer le système de longue date "System V init" (niveaux d'exécution). Il fonctionne toujours essentiellement de la même manière, mais utilise de nouvelles commandes et fait généralement référence aux "niveaux d'exécution" en tant que "cibles".

Niveau d'exécution 0 =poweroff.target (runlevel0.target)

Niveau d'exécution 1 =rescue.target (runlevel1.target)

Runlevel 2 =multi-user.target (runlevel2.target)

Runlevel 3 =multi-user.target (runlevel3.target)

Runlevel 4 =multi-user.target (runlevel4.target)

Niveau d'exécution 5 =graphique.target (runlevel5.target)

Niveau d'exécution 6 =reboot.target (runlevel6.target)

Nous continuerons à passer en revue systemd et les commandes que vous devrez connaître au fur et à mesure de la progression de ce didacticiel.

Comment changer le niveau d'exécution par défaut au démarrage ?

Il existe de nombreuses raisons pour lesquelles vous souhaiterez peut-être démarrer dans un niveau d'exécution différent. Par exemple, il est courant que les administrateurs système démarrent en ligne de commande et ne démarrent une interface graphique que lorsque cela est jugé nécessaire.

Pour cette fonctionnalité, vous devez vous assurer que votre niveau d'exécution par défaut est défini sur 3 et non sur 5.

Dans le passé, il fallait éditer le fichier /etc/inittab pour définir le niveau d'exécution par défaut au démarrage. Vous pouvez toujours constater que c'est le cas sur certaines distributions.

Si vous travaillez avec un système d'exploitation qui n'a pas été mis à jour depuis quelques années, vous trouverez toujours cette méthode pertinente pour vous.

$ vi /etc/inittab

Dans la capture d'écran ci-dessus, le niveau d'exécution 5 est actuellement défini sur le niveau d'exécution par défaut pour le démarrage.

Depuis 2016, la plupart des principales distributions Linux ont progressivement supprimé le fichier /etc/inittab au profit des cibles systemd - nous aborderons les différences plus loin dans cet article.

Vous constaterez peut-être que votre système ne contient pas du tout le fichier /etc/inittab, ou votre fichier inittab peut vous conseiller d'utiliser systemd à la place, comme dans cette capture d'écran de notre système CentOS.

Pour vérifier la cible par défaut actuelle de votre système :

$ systemctl get-default

Dans la capture d'écran ci-dessus, la réponse du système est "graphical.target". Comme vous pouvez probablement le deviner, c'est l'équivalent du niveau d'exécution 5.

Pour voir les autres cibles disponibles et les niveaux d'exécution auxquels elles sont associées, saisissez :

$ ls -l /lib/systemd/system/runlevel*

Ces liens symboliques nous indiquent que les cibles systemd fonctionnent à peu près de la même manière que les niveaux d'exécution. Alors, comment pouvons-nous changer le niveau d'exécution (ou la cible) par défaut au démarrage ? Nous devons créer un nouveau lien symbolique, comme ceci :

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

Cette commande changera notre niveau d'exécution par défaut à 3, donc la prochaine fois que nous redémarrerons, notre système sera au niveau d'exécution 3 au lieu de 5. Si vous vouliez un niveau d'exécution différent, vous substitueriez simplement un nombre différent à la place du "3" dans la commande.

Pour référence, le commutateur -f dans cette commande indique que le fichier cible doit être supprimé avant de créer le nouveau lien. Vous pouvez également le supprimer d'abord avec une simple commande rm.

Vous pouvez confirmer que la modification a été effectuée avec succès avec la commande "systemctl get-default" à nouveau.

Niveau d'exécution 3 contre niveau d'exécution 5

Les deux niveaux d'exécution dont vous entendrez parler et avec lesquels vous travaillerez le plus seront 3 et 5. Cela se résume essentiellement à ceci :le niveau d'exécution 3 est une ligne de commande et le niveau d'exécution 5 est une interface utilisateur graphique.

Bien sûr, toutes les distributions ne suivent pas cette convention, et votre système peut être configuré par un administrateur afin que ces niveaux d'exécution aient encore plus de différences.

Mais, en général, c'est comme ça que ça marche. Si vous souhaitez voir quels services sont activés à ces deux niveaux d'exécution, nous en parlerons dans la section suivante.

Répertorier les services activés à un niveau d'exécution particulier

Jusqu'à ces dernières années, "chkconfig -list" était la commande permettant de répertorier les services qui seraient activés à différents niveaux d'exécution. Si votre système d'exploitation est à jour, cette commande peut vous donner une erreur ou vous renvoyer à systemd.

Si nous voulons voir quels services seront démarrés lorsque nous démarrerons en mode graphique (niveau d'exécution 5), nous pouvons exécuter cette commande :

$ systemctl list-dependencies graphical.target

Pour voir les services qui s'exécutent par défaut sur d'autres niveaux d'exécution, remplacez simplement "graphical.target" par le nom de la cible que vous devez voir.

Sous quel niveau d'exécution un processus sera-t-il exécuté ?

Si vous souhaitez voir à quel(s) niveau(x) d'exécution un service spécifique s'exécute, vous pouvez utiliser cette commande :

$ systemctl show -p WantedBy [name of service]

Par exemple, si vous souhaitez voir à quel niveau d'exécution le démon SSH s'exécutera, vous saisirez :

$ systemctl show -p WantedBy sshd.service

Selon la sortie de la capture d'écran ci-dessus, le service SSH démarrera aux niveaux d'exécution 2, 3 et 4 (multi-user.target)

Comment changer le niveau d'exécution d'une application ?

Comme vu ci-dessus, notre service SSH ne fonctionne qu'aux niveaux d'exécution 2 à 4 (multi-user.target). Et si nous voulons également qu'il démarre lorsque nous démarrons dans une interface graphique - niveau d'exécution 5 (graphical.target) ? Nous pourrions appliquer cette configuration avec la commande suivante :

$ systemctl enable sshd.service

Problèmes de sécurité avec les niveaux d'exécution sous Linux

Comme nous l'avons dit plus tôt dans cet article, le but des niveaux d'exécution Linux est de donner à un administrateur le contrôle sur les services exécutés sous certaines conditions. Avoir ce type de contrôle granulaire sur votre système améliore la sécurité puisque vous pouvez être sûr qu'aucun service externe n'est en cours d'exécution.

Le problème peut survenir lorsqu'un administrateur ne sait pas exactement quels services sont en cours d'exécution, il ne prend donc pas la peine de sécuriser ces surfaces d'attaque.

Vous pouvez utiliser les méthodes de ce guide pour configurer votre niveau d'exécution par défaut et contrôler les applications en cours d'exécution. Ces pratiques libéreront non seulement des ressources système, mais renforceront également la sécurité de votre serveur.

N'oubliez pas de n'utiliser que le niveau d'exécution dont vous avez besoin. Par exemple, cela n'a aucun sens de démarrer le niveau d'exécution 5 (interface graphique) si vous prévoyez d'utiliser uniquement le terminal.

Le passage à un niveau d'exécution différent introduira plusieurs nouveaux services, dont certains peuvent s'exécuter complètement en arrière-plan, et vous risquez d'oublier de les sécuriser.

Quel niveau d'exécution me convient le mieux ?

Déterminer quel niveau d'exécution est le meilleur pour vous dépend de la situation. Généralement, vous allez probablement utiliser les niveaux d'exécution 3 et 5 de manière régulière.

Si vous êtes à l'aise avec la ligne de commande et que vous n'avez pas besoin d'une interface graphique, le niveau d'exécution 3 (sur la plupart des distributions) vous conviendra le mieux.

Cela empêchera les services inutiles de fonctionner. D'autre part, si vous souhaitez davantage d'expérience de bureau et d'interface graphique pour utiliser diverses applications, etc., le niveau d'exécution 5 sera votre niveau d'exécution préféré.

Si vous devez effectuer une maintenance sur un serveur de production, le niveau d'exécution 1 convient bien à cette situation. Vous pouvez utiliser ce niveau d'exécution pour vous assurer que vous êtes le seul sur le serveur (le service réseau n'est même pas démarré), et vous pouvez effectuer votre maintenance sans interruption.

Dans de rares cas, vous devrez peut-être même utiliser le niveau d'exécution 4. Ce ne serait que dans des situations particulières où vous ou l'administrateur système avez un niveau d'exécution configuré personnalisé. Nous expliquerons comment procéder dans la section suivante.

Comme vous l'avez probablement supposé, vous n'exécuterez pas (et ne pourrez pas) exécuter votre système dans les niveaux d'exécution 0 ou 6, mais il est possible d'y basculer simplement pour redémarrer ou éteindre. Cela ne devrait normalement pas être nécessaire car il existe d'autres commandes qui le font pour nous.

Pouvons-nous créer un nouveau niveau d'exécution sous Linux ?

Il est possible de créer un nouveau niveau d'exécution sous Linux, mais il est extrêmement peu probable que vous ayez jamais besoin de le faire. Si vous étiez quand même déterminé à le faire, vous pouvez commencer par copier l'une des cibles systemd existantes, puis la modifier avec vos propres personnalisations.

Les cibles sont situées dans :

/usr/lib/systemd/system

Si vous souhaitez baser votre nouveau niveau d'exécution/cible surgraphic.target (niveau d'exécution 5), copiez ce répertoire dans votre nouveau répertoire cible.

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

Après cela, créez un nouveau répertoire "veut", comme ceci :

$ mkdir /etc/systemd/system/mynew.target.wants

Ensuite, créez un lien symbolique vers les services supplémentaires de /usr/lib/systemd/system que vous souhaitez activer pour votre nouveau niveau d'exécution.

J'espère que vous trouverez le tutoriel utile. Continuez à revenir.


Linux
  1. Quelle est la bonne quantité d'espace de swap pour un système Linux moderne ?

  2. Comment mettre à niveau vers Linux Mint 20.3 :la bonne manière

  3. Pourquoi 'sshpass' n'est pas le bon moyen d'automatiser les transferts de fichiers sous Linux

  4. Quel est le niveau d'exécution actuel du système Linux ?

  5. Vérifiez la charge du système sous Linux

La commande supérieure de Linux

Comment utiliser la commande fd sur le système Linux

Comprendre la commande uname sous Linux

EndeavourOS - Apprendre Arch de la bonne façon

Comprendre la commande time sous Linux

Comprendre le fichier /etc/fstab sous Linux