{"id":6844,"date":"2023-03-02T12:59:36","date_gmt":"2023-03-02T12:59:36","guid":{"rendered":"https:\/\/hengowebsite.luong.fr\/?page_id=6844"},"modified":"2023-03-02T14:55:47","modified_gmt":"2023-03-02T14:55:47","slug":"test-2","status":"publish","type":"page","link":"https:\/\/hengowebsite.luong.fr\/?page_id=6844","title":{"rendered":"Comment utiliser Systemctl pour g\u00e9rer les services et les unit\u00e9s de Systemd"},"content":{"rendered":"\n<p><\/p>\n\n\n<div  style='padding-bottom:10px; ' class='av-special-heading av-special-heading-h2  blockquote classic-quote  avia-builder-el-0  el_before_av_toggle_container  avia-builder-el-first  '><h2 class='av-special-heading-tag '  itemprop=\"headline\"  >Comment utiliser Systemctl pour g\u00e9rer les services et les unit\u00e9s de Systemd<\/h2><div class='special-heading-border'><div class='special-heading-inner-border' ><\/div><\/div><\/div>\n<div   class=\"togglecontainer   toggle_close_all  avia-builder-el-1  el_after_av_heading  avia-builder-el-last \" >\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#toggle-id-1\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"toggle-id-1\">Introduction<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"toggle-id-1\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h3 id=\"introduction\">Introduction<\/h3>\n<p><code>systemd<\/code> est un gestionnaire de syst\u00e8mes d\u2019initialisation et de syst\u00e8mes qui est devenu la nouvelle norme pour les distributions de Linux. \u00c9tant largement adopt\u00e9, cela vaut la peine de se familiariser avec <code>systemd<\/code> car l\u2019administration de serveurs vous sera consid\u00e9rablement plus facile. En apprendre davantage sur les outils et les d\u00e9mons qui composent <code>systemd<\/code> vous permettra de mieux appr\u00e9cier la puissance, la flexibilit\u00e9 et les capacit\u00e9s qu\u2019il vous offre ou, tout du moins, de travailler avec un minimum de tracas.<\/p>\n<p>Au cours de ce guide, nous allons discuter de la commande <code>systemctl<\/code>, qui est l\u2019outil de gestion essentiel pour contr\u00f4ler le syst\u00e8me d\u2019initialisation. Nous allons voir de quelle la mani\u00e8re vous pouvez g\u00e9rer les services, v\u00e9rifier les \u00e9tats, modifier les \u00e9tats du syst\u00e8me et travailler avec les fichiers de configuration.<\/p>\n<p>Notez que, bien que <code>systemd<\/code> soit devenu le syst\u00e8me d\u2019initialisation par d\u00e9faut de nombreuses distributions Linux, il n\u2019est pas universellement impl\u00e9ment\u00e9 sur toutes les distributions. Si au cours de ce tutoriel votre terminal d\u00e9clenche l\u2019erreur <code>bash: systemctl is not installed<\/code>, il est alors probable que votre machine ait install\u00e9 un syst\u00e8me d\u2019initialisation.<\/p>\n            <\/div>        <\/div>    <\/div><\/section>\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#toggle-id-2\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"toggle-id-2\">Gestion de service<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"toggle-id-2\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h2 id=\"gestion-de-service\">Gestion de service<\/h2>\n<p>L\u2019objectif fondamental d\u2019un syst\u00e8me d\u2019initialisation est d\u2019initialiser les composants qui doivent \u00eatre d\u00e9marr\u00e9s une fois que le noyau Linux est lanc\u00e9 (traditionnellement connus sous le nom de composants \u00ab userland \u00bb). De plus, le syst\u00e8me d\u2019initialisation vous permet de g\u00e9rer \u00e0 tout moment les services et les d\u00e9mons du serveur alors que le syst\u00e8me est en marche. Dans cette optique, nous allons commencer par certaines des op\u00e9rations de base de gestion de service.<\/p>\n<p>Dans <code>systemd<\/code>, la cible de la plupart des actions sont des \u00ab\u00a0unit\u00e9s\u00a0\u00bb, c\u2019est-\u00e0-dire des ressources que <code>systemd<\/code> sait g\u00e9rer. Les unit\u00e9s sont class\u00e9es par le type de ressources qu\u2019elles repr\u00e9sentent. Leur configuration se fait avec des fichiers que l\u2019on appelle des \u00ab fichiers de l\u2019unit\u00e9 \u00bb. Vous pouvez d\u00e9duire le type de chaque unit\u00e9 \u00e0 l\u2019aide du suffixe qui se trouve \u00e0 la fin du fichier.<\/p>\n<p>Pour les t\u00e2ches de gestion de service, l\u2019unit\u00e9 cible correspondra aux unit\u00e9s de service pour lesquelles les fichiers de l\u2019unit\u00e9 se terminent par le suffixe <code>.service<\/code>. Cependant, en r\u00e9alit\u00e9, pour la plupart des commandes de gestion de service, vous n\u2019avez pas n\u00e9cessairement besoin du suffixe <code>.service<\/code>. En effet, <code>systemd<\/code> est assez intelligent pour savoir que, lorsque vous utilisez les commandes de gestion de service, vous souhaitez probablement travailler sur un service.<\/p>\n<h3 id=\"demarrage-et-arret-des-services\">D\u00e9marrage et arr\u00eat des services<\/h3>\n<p>Si vous souhaitez d\u00e9marrer un service <code>systemd<\/code> en ex\u00e9cutant les instructions qui se trouvent dans le fichier de l\u2019unit\u00e9 du service, utilisez la commande <code>start<\/code>. Si vous op\u00e9rez comme un non-root user, vous devrez utiliser <code>sudo<\/code> car cela affectera l\u2019\u00e9tat du syst\u00e8me d\u2019exploitation\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl start <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Comme nous l\u2019avons pr\u00e9c\u00e9demment mentionn\u00e9, \u00e9tant donn\u00e9 que <code>systemd<\/code> sait qu\u2019il doit rechercher les fichiers <code>*.service<\/code> pour les commandes de gestion de service, il vous suffirait de saisir la commande de la mani\u00e8re suivante\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl start <mark>application<\/mark><\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>M\u00eame si, \u00e0 des fins d\u2019administration g\u00e9n\u00e9rale, vous pouvez utiliser le format ci-dessus, nous allons utiliser le suffixe <code>.service<\/code> pour le reste des commandes par soucis de clart\u00e9 afin de d\u00e9finir clairement la cible sur laquelle nous travaillons.<\/p>\n<p>Pour arr\u00eater un service en cours d\u2019ex\u00e9cution, vous pouvez plut\u00f4t utiliser la commande <code>stop<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl stop <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"redemarrage-et-rechargement\">Red\u00e9marrage et rechargement<\/h3>\n<p>Pour red\u00e9marrer un service en cours d\u2019ex\u00e9cution, vous pouvez utiliser la commande <code>restart<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl restart <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Si l\u2019application en question est en capacit\u00e9 de recharger ses fichiers de configuration (sans red\u00e9marrage), vous pouvez lancer la commande <code>reload<\/code> pour initier ce processus\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Si vous ne savez pas si le service int\u00e8gre la fonctionnalit\u00e9 qui lui permet de recharger sa configuration, vous pouvez lancer la commande <code>reload-or-restart<\/code> Si disponible, vous rechargerez la configuration en place. Sinon, le service red\u00e9marrera pour r\u00e9cup\u00e9rer la nouvelle configuration\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload-or-restart <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"activation-et-desactivation-des-services\">Activation et d\u00e9sactivation des services<\/h3>\n<p>Les commandes ci-dessus vous seront utiles pour d\u00e9marrer ou arr\u00eater des services pendant la session en cours. Vous devez les activer pour demander \u00e0 <code>systemd<\/code> de lancer automatiquement les services au d\u00e9marrage.<\/p>\n<p>Pour lancer un service au d\u00e9marrage, utilisez la commande <code>enable<\/code> :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl <span class=\"token builtin class-name\">enable<\/span> <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela cr\u00e9era un lien symbolique \u00e0 partir de la copie du fichier de service du syst\u00e8me (g\u00e9n\u00e9ralement dans <code>\/lib\/systemd\/system<\/code> ou <code>\/etc\/systemd\/system<\/code>) \u00e0 l\u2019emplacement du disque o\u00f9 <code>systemd<\/code> cherche les fichiers de d\u00e9marrage automatique (g\u00e9n\u00e9ralement <code>\/etc\/systemd\/system\/<mark>some_target<\/mark>.target.wants<\/code>. Nous verrons ce qu\u2019est une cible plus tard dans ce guide).<\/p>\n<p>Pour d\u00e9sactiver le d\u00e9marrage automatique d\u2019un service, vous pouvez saisir\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl disable <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela supprimera le lien symbolique indiquant que le service doit \u00eatre d\u00e9marr\u00e9 automatiquement.<\/p>\n<p>N\u2019oubliez pas que l\u2019activation du service ne le d\u00e9clenche pas pendant la session en cours. Si vous souhaitez d\u00e9marrer le service et, dans le m\u00eame temps, l\u2019activer au d\u00e9marrage, vous devez lancer \u00e0 la fois la commande <code>start<\/code> et la commande <code>enable<\/code>.<\/p>\n<h3 id=\"verification-de-l-etat-des-services\">V\u00e9rification de l\u2019\u00e9tat des services<\/h3>\n<p>Pour v\u00e9rifier l\u2019\u00e9tat d\u2019un service sur votre syst\u00e8me, vous pouvez utiliser la commande <code>status<\/code> :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl status <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Vous pourrez ainsi consulter l\u2019\u00e9tat des services, la hi\u00e9rarchie des groupes et les premi\u00e8res lignes du journal.<\/p>\n<p>Par exemple, lorsque vous souhaitez v\u00e9rifier l\u2019\u00e9tat d\u2019un serveur Nginx, le r\u00e9sultat peut s\u2019afficher comme suit\u00a0:<\/p>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>\u25cf nginx.service - A high performance web server and a reverse proxy server\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/nginx.service; enabled; vendor preset: disabled)\n   Active: active (running) since Tue 2015-01-27 19:41:23 EST; 22h ago\n Main PID: 495 (nginx)\n   CGroup: \/system.slice\/nginx.service\n           \u251c\u2500495 nginx: master process \/usr\/bin\/nginx -g pid \/run\/nginx.pid; error_log stderr;\n           \u2514\u2500496 nginx: worker process\nJan 27 19:41:23 desktop systemd[1]: Starting A high performance web server and a reverse proxy server...\nJan 27 19:41:23 desktop systemd[1]: Started A high performance web server and a reverse proxy server.\n<\/code><\/pre>\n<p>Cela vous donne un bon aper\u00e7u de l\u2019\u00e9tat actuel de l\u2019application, vous signalant tout probl\u00e8me et toute action \u00e0 mettre en \u0153uvre.<\/p>\n<p>Certaines m\u00e9thodes vous permettent \u00e9galement de contr\u00f4ler des \u00e9tats sp\u00e9cifiques. Par exemple, si vous souhaitez v\u00e9rifier si une unit\u00e9 est actuellement active (en cours d\u2019ex\u00e9cution), vous pouvez utiliser la commande <code>is-active<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl is-active <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela renverra l\u2019\u00e9tat actuel de l\u2019unit\u00e9, qui est g\u00e9n\u00e9ralement <code>active<\/code> ou <code>inactive<\/code>. Si elle est active, le code de sortie affichera \u00ab 0\u00a0\u00bb, ce qui simplifie l\u2019analyse dans les scripts shell.<\/p>\n<p>Pour voir si l\u2019unit\u00e9 est activ\u00e9e, vous pouvez utiliser la commande <code>is-enabled<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl is-enabled <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Vous pourrez ainsi voir si le service est <code>enabled<\/code> ou <code>disabled<\/code> et le code de sortie sera \u00e0 nouveau configur\u00e9 sur \u00ab\u00a00\u00a0\u00bb ou \u00ab\u00a01\u00a0\u00bb en fonction de la r\u00e9ponse \u00e0 la question de la commande.<\/p>\n<p>Une troisi\u00e8me v\u00e9rification consiste \u00e0 voir si l\u2019\u00e9tat de l\u2019unit\u00e9 indique un \u00e9chec. Cela indique qu\u2019un probl\u00e8me est survenu au d\u00e9marrage de l\u2019unit\u00e9 en question\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl is-failed <mark>application<\/mark>.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela reverra <code>active<\/code> si l\u2019ex\u00e9cution se fait correctement ou <code>failed<\/code> si une erreur survient. Si l\u2019unit\u00e9 est intentionnellement arr\u00eat\u00e9e, elle peut renvoyer <code>unknown<\/code> ou <code>inactive<\/code>. Le statut de sortie \u00ab\u00a00\u00a0\u00bb indique qu\u2019une d\u00e9faillance est survenue. Le statut de sortie \u00ab\u00a01\u00a0\u00bb indique tout autre statut.<\/p>\n            <\/div>        <\/div>    <\/div><\/section>\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#toggle-id-3\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"toggle-id-3\">Pr\u00e9sentation g\u00e9n\u00e9rale des \u00e9tats du syst\u00e8me<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"toggle-id-3\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h2 id=\"presentation-generale-des-etats-du-systeme\">Pr\u00e9sentation g\u00e9n\u00e9rale des \u00e9tats du syst\u00e8me<\/h2>\n<p>Jusqu\u2019\u00e0 pr\u00e9sent, les commandes nous ont permis de g\u00e9rer des services uniques, mais pas vraiment de consulter l\u2019\u00e9tat actuel du syst\u00e8me. Il existe un certain nombre de commandes <code>systemctl<\/code> qui vous donnent ces informations.<\/p>\n<h3 id=\"liste-des-unites-en-cours-d-utilisation\">Liste des unit\u00e9s en cours d\u2019utilisation<\/h3>\n<p>Pour avoir une liste de toutes les unit\u00e9s actives que <code>systemd<\/code> reconna\u00eet, nous pouvons utiliser la commande <code>list-units<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-units<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela affichera une liste de toutes les unit\u00e9s consid\u00e9r\u00e9es comme actives par <code>systemd<\/code> sur le syst\u00e8me. La sortie finale ressemblera \u00e0 peu pr\u00e8s \u00e0 ceci :<\/p>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>UNIT                                      LOAD   ACTIVE SUB     DESCRIPTION\natd.service                               loaded active running ATD daemon\navahi-daemon.service                      loaded active running Avahi mDNS\/DNS-SD Stack\ndbus.service                              loaded active running D-Bus System Message Bus\ndcron.service                             loaded active running Periodic Command Scheduler\ndkms.service                              loaded active exited  Dynamic Kernel Modules System\ngetty@tty1.service                        loaded active running Getty on tty1\n. . .\n<\/code><\/pre>\n<p>La sortie affiche les colonnes suivantes\u00a0:<\/p>\n<ul>\n<li><strong>UNIT<\/strong>\u00a0: le nom de l\u2019unit\u00e9 <code>systemd<\/code><\/li>\n<li><strong>LOAD<\/strong>\u00a0: si la configuration de l\u2019unit\u00e9 a \u00e9t\u00e9 analys\u00e9e par <code>systemd<\/code>. La configuration des unit\u00e9s charg\u00e9es est gard\u00e9e en m\u00e9moire.<\/li>\n<li><strong>ACTIVE<\/strong>\u00a0: un \u00e9tat r\u00e9sum\u00e9 indiquant si l\u2019unit\u00e9 est active. Il s\u2019agit g\u00e9n\u00e9ralement d\u2019une m\u00e9thode assez simple d\u2019\u00e9tablir si l\u2019unit\u00e9 a bien d\u00e9marr\u00e9 ou pas.<\/li>\n<li><strong>SUB<\/strong>\u00a0: il s\u2019agit d\u2019un \u00e9tat de niveau inf\u00e9rieur qui donne des informations plus d\u00e9taill\u00e9es sur l\u2019unit\u00e9. Il varie souvent en fonction du type, de l\u2019\u00e9tat et du mode de fonctionnement r\u00e9el de l\u2019unit\u00e9.<\/li>\n<li><strong>DESCRIPTION<\/strong>\u00a0: une courte description textuelle de ce que l\u2019unit\u00e9 est\/fait.<\/li>\n<\/ul>\n<p>\u00c9tant donn\u00e9 que la commande <code>list-units<\/code> affiche uniquement les unit\u00e9s actives par d\u00e9faut, toutes les entr\u00e9es ci-dessus afficheront <code>loaded<\/code> dans la colonne LOAD et <code>active<\/code> dans la colonne ACTIVE. Cet affichage correspond en r\u00e9alit\u00e9 au comportement par d\u00e9faut de <code>systemctl<\/code> lorsque vous l\u2019appelez sans commandes suppl\u00e9mentaires. Vous verrez donc la m\u00eame chose se produire si vous appelez <code>systemctl<\/code> sans arguments\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Nous pouvons instruire <code>systemctl<\/code> de g\u00e9n\u00e9rer des informations diff\u00e9rentes en ajoutant des balises suppl\u00e9mentaires. Par exemple, pour consulter toutes les unit\u00e9s que <code>systemd<\/code> a charg\u00e9es (ou tente de charger), qu\u2019elles soient actuellement actives ou pas, vous pouvez utiliser la balise <code>--all<\/code> comme suit\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-units <span class=\"token parameter variable\">&#8211;all<\/span><\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela affichera toute unit\u00e9 que <code>systemd<\/code> a charg\u00e9e ou tent\u00e9 de charger, quel que soit l\u2019\u00e9tat actuel du syst\u00e8me. Certaines unit\u00e9s deviennent inactives apr\u00e8s leur ex\u00e9cution et il se peut que certaines autres, celles que <code>systemd<\/code> a tent\u00e9 de charger, restent introuvables sur le disque.<\/p>\n<p>Vous pouvez filtrer ces r\u00e9sultats en utilisant d\u2019autres balises. Par exemple, nous pouvons utiliser la balise <code>--state=<\/code> pour indiquer les \u00e9tats LOAD, ACTIVE ou SUB que nous souhaitons consulter. Nous allons devoir garder la balise <code>--all<\/code> pour que <code>systemctl<\/code> permette l\u2019affichage des unit\u00e9s inactives\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-units <span class=\"token parameter variable\">&#8211;all<\/span> <span class=\"token parameter variable\">&#8211;state<\/span><span class=\"token operator\">=<\/span>inactive<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Un autre filtre est couramment utilis\u00e9, le filtre <code>--type=<\/code>. Nous pouvons indiquer \u00e0 <code>systemctl<\/code> d\u2019afficher uniquement le type d\u2019unit\u00e9s qui nous int\u00e9resse. Par exemple, pour consulter uniquement les unit\u00e9s de service actives, nous pouvons utiliser\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-units <span class=\"token parameter variable\">&#8211;type<\/span><span class=\"token operator\">=<\/span>service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"liste-de-tous-les-fichiers-de-l-unite\">Liste de tous les fichiers de l\u2019unit\u00e9<\/h3>\n<p>La commande <code>list-units<\/code> affiche uniquement les unit\u00e9s que <code>systemd<\/code> a tent\u00e9es d\u2019analyser et de charger en m\u00e9moire. \u00c9tant donn\u00e9 que <code>systemd<\/code> lira uniquement les unit\u00e9s dont il pense avoir besoin, les unit\u00e9s disponibles sur le syst\u00e8me ne seront pas n\u00e9cessairement toutes r\u00e9pertori\u00e9es. Pour voir <em>tous<\/em> les fichiers de l\u2019unit\u00e9 disponibles au sein des chemins de <code>systemd<\/code>, notamment ceux que <code>systemd<\/code> n\u2019a pas tent\u00e9 de charger, vous pouvez utiliser la commande <code>list-unit-files<\/code> \u00e0 la place\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-unit-files<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Les unit\u00e9s sont des repr\u00e9sentations des ressources dont <code>systemd<\/code> a connaissance. \u00c9tant donn\u00e9 que <code>systemd<\/code> n\u2019a pas n\u00e9cessairement lu toutes les d\u00e9finitions de l\u2019unit\u00e9 dans cet \u00e9cran, seules les informations concernant les fichiers en eux-m\u00eames sont pr\u00e9sent\u00e9es. La sortie a deux colonnes\u00a0: le fichier de l\u2019unit\u00e9 et l\u2019\u00e9tat.<\/p>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>UNIT FILE                                  STATE   \nproc-sys-fs-binfmt_misc.automount          static  \ndev-hugepages.mount                        static  \ndev-mqueue.mount                           static  \nproc-fs-nfsd.mount                         static  \nproc-sys-fs-binfmt_misc.mount              static  \nsys-fs-fuse-connections.mount              static  \nsys-kernel-config.mount                    static  \nsys-kernel-debug.mount                     static  \ntmp.mount                                  static  \nvar-lib-nfs-rpc_pipefs.mount               static  \norg.cups.cupsd.path                        enabled\n. . .\n<\/code><\/pre>\n<p>L\u2019\u00e9tat indiquera g\u00e9n\u00e9ralement <code>enabled<\/code>, <code>disabled<\/code>, <code>static<\/code> ou <code>masked.<\/code> Dans ce contexte, static signifie que le fichier de l\u2019unit\u00e9 ne contient pas de section <code>install<\/code>, qui sert \u00e0 activer une unit\u00e9. De ce fait, ces unit\u00e9s ne peuvent pas \u00eatre activ\u00e9es. Habituellement, cela signifie que soit l\u2019unit\u00e9 effectue une action unique, soit elle est uniquement utilis\u00e9e qu\u2019en tant que d\u00e9pendance d\u2019une autre unit\u00e9 et ne doit pas \u00eatre ex\u00e9cut\u00e9e seule.<\/p>\n<p>Nous allons voir dans un moment ce que <code>masked<\/code> signifie.<\/p>\n            <\/div>        <\/div>    <\/div><\/section>\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#unites\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"unites\">Gestion de l\u2019unit\u00e9<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"unites\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h2 id=\"gestion-de-l-unite\">Gestion de l\u2019unit\u00e9<\/h2>\n<p>Jusque-l\u00e0, nous avons travaill\u00e9 avec les services et affich\u00e9 des informations sur l\u2019unit\u00e9 et sur les fichiers de l\u2019unit\u00e9 dont <code>systemd<\/code> a connaissance. Cependant, en utilisant d\u2019autres commandes, nous pouvons trouver des informations plus sp\u00e9cifiques sur les unit\u00e9s.<\/p>\n<h3 id=\"affichage-du-fichier-de-l-unite\">Affichage du fichier de l\u2019unit\u00e9<\/h3>\n<p>Pour afficher le fichier de l\u2019unit\u00e9 que <code>systemd<\/code> a charg\u00e9 sur son syst\u00e8me, vous pouvez utiliser la commande <code>cat<\/code> qui a \u00e9t\u00e9 ajout\u00e9e dans la version 209 de <code>systemd<\/code>). Par exemple, pour voir le fichier de l\u2019unit\u00e9 de d\u00e9mon de planification <code>atd<\/code>, nous pourrions saisir :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl <span class=\"token function\">cat<\/span> atd.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>[Unit]\nDescription=ATD daemon\n[Service]\nType=forking\nExecStart=\/usr\/bin\/atd\n[Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n<p>On obtient ainsi le fichier de l\u2019unit\u00e9 tel que reconnu par le processus <code>systemd<\/code> en cours d\u2019ex\u00e9cution. Cela peut s\u2019av\u00e9rer important si vous avez r\u00e9cemment modifi\u00e9 des fichiers de l\u2019unit\u00e9 ou si vous \u00e9crasez certaines options dans un fragment du fichier de l\u2019unit\u00e9 (nous allons couvrir cela plus tard).<\/p>\n<h3 id=\"affichage-des-dependances\">Affichage des d\u00e9pendances<\/h3>\n<p>Pour voir une arborescence des d\u00e9pendances de l\u2019unit\u00e9, vous pouvez utiliser la commande <code>list-dependencies<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-dependencies sshd.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela affichera une cartographie hi\u00e9rarchis\u00e9e des d\u00e9pendances qui doivent \u00eatre trait\u00e9es afin de d\u00e9marrer l\u2019unit\u00e9 concern\u00e9e. Dans ce contexte, les d\u00e9pendances incluent les unit\u00e9s qui sont soit requises ou souhait\u00e9es par les unit\u00e9s au-dessus.<\/p>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>sshd.service\n\u251c\u2500system.slice\n\u2514\u2500basic.target\n  \u251c\u2500microcode.service\n  \u251c\u2500rhel-autorelabel-mark.service\n  \u251c\u2500rhel-autorelabel.service\n  \u251c\u2500rhel-configure.service\n  \u251c\u2500rhel-dmesg.service\n  \u251c\u2500rhel-loadmodules.service\n  \u251c\u2500paths.target\n  \u251c\u2500slices.target\n. . .\n<\/code><\/pre>\n<p>Les d\u00e9pendances r\u00e9cursives s\u2019affichent uniquement pour <code>.target<\/code>, qui indique les \u00e9tats du syst\u00e8me. Pour lister de mani\u00e8re r\u00e9cursive toutes les d\u00e9pendances, ajoutez la balise <code>--all<\/code>.<\/p>\n<p>Pour afficher les d\u00e9pendances inverses (les unit\u00e9s qui d\u00e9pendent de l\u2019unit\u00e9 sp\u00e9cifi\u00e9e), vous pouvez ajouter la balise <code>--reverse<\/code> \u00e0 la commande. D\u2019autres balises vous seront utiles\u00a0: <code>--before<\/code> et <code>--after<\/code>. Vous pouvez les utiliser pour afficher les unit\u00e9s qui d\u00e9pendent de l\u2019unit\u00e9 sp\u00e9cifi\u00e9e qui a d\u00e9marr\u00e9 avant et apr\u00e8s elles, respectivement.<\/p>\n<h3 id=\"verification-des-proprietes-de-l-unite\">V\u00e9rification des propri\u00e9t\u00e9s de l\u2019unit\u00e9<\/h3>\n<p>Pour consulter les propri\u00e9t\u00e9s de niveau inf\u00e9rieur d\u2019une unit\u00e9, vous pouvez utiliser la commande <code>show<\/code>. Elle affichera une liste de propri\u00e9t\u00e9s configur\u00e9es pour l\u2019unit\u00e9 sp\u00e9cifi\u00e9e en utilisant un format <code>key=value<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl show sshd.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>Id=sshd.service\nNames=sshd.service\nRequires=basic.target\nWants=system.slice\nWantedBy=multi-user.target\nConflicts=shutdown.target\nBefore=shutdown.target multi-user.target\nAfter=syslog.target network.target auditd.service systemd-journald.socket basic.target system.slice\nDescription=OpenSSH server daemon\n. . .\n<\/code><\/pre>\n<p>Pour afficher une seule propri\u00e9t\u00e9, vous pouvez faire utiliser la balise <code>-p<\/code> accompagn\u00e9e du nom de la propri\u00e9t\u00e9. Par exemple, pour voir les conflits que l\u2019unit\u00e9 <code>sshd.service<\/code> a, vous pouvez saisir\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl show sshd.service <span class=\"token parameter variable\">-p<\/span> Conflicts<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>Conflicts=shutdown.target\n<\/code><\/pre>\n<h3 id=\"masquage-et-affichage-des-unites\">Masquage et affichage des unit\u00e9s<\/h3>\n<p>Dans la section Gestion de service, nous avons vu de quelle mani\u00e8re arr\u00eater ou d\u00e9sactiver un service, mais <code>systemd<\/code> a \u00e9galement la possibilit\u00e9 de marquer une unit\u00e9 comme \u00e9tant <em>totalement<\/em> impossible \u00e0 d\u00e9marrer, automatiquement ou manuellement, en la reliant \u00e0 <code>\/dev\/null<\/code>. On dit alors que l\u2019on \u00ab\u00a0masque \u00bb l\u2019unit\u00e9, et il est possible de le faire avec la commande <code>mask<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl mask nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Tant qu\u2019elle est masqu\u00e9e, tout d\u00e9marrage automatique ou manuel du service Nginx est impossible.<\/p>\n<p>Si vous v\u00e9rifiez la <code>list-unit-files<\/code>, vous verrez que le service est maintenant r\u00e9pertori\u00e9 comme \u00e9tant masqu\u00e9\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-unit-files<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>. . .\nkmod-static-nodes.service              static  \nldconfig.service                       static  \nmandb.service                          static  \nmessagebus.service                     static  \nnginx.service                          <mark>masked<\/mark>\nquotaon.service                        static  \nrc-local.service                       static  \nrdisc.service                          disabled\nrescue.service                         static\n. . .\n<\/code><\/pre>\n<p>Si vous tentez de lancer le service, vous verrez s\u2019afficher le message suivant\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl start nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>Failed to start nginx.service: Unit nginx.service is masked.\n<\/code><\/pre>\n<p>Pour afficher une unit\u00e9 et rendre son utilisation \u00e0 nouveau possible, utilisez la commande <code>unmask<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl unmask nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela renverra l\u2019unit\u00e9 \u00e0 l\u2019\u00e9tat pr\u00e9c\u00e9dent, ce qui lui permettra son d\u00e9marrage ou son activation.<\/p>\n            <\/div>        <\/div>    <\/div><\/section>\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#toggle-id-4\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"toggle-id-4\">Modification des fichiers de l\u2019unit\u00e9<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"toggle-id-4\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h2 id=\"modification-des-fichiers-de-l-unite\">Modification des fichiers de l\u2019unit\u00e9<\/h2>\n<p>Bien que ce tutoriel ne traite pas du format sp\u00e9cifique des fichiers de l\u2019unit\u00e9, <code>systemctl<\/code> met \u00e0 votre disposition des m\u00e9canismes int\u00e9gr\u00e9s d\u2019\u00e9dition et de modification des fichiers de l\u2019unit\u00e9 pour vous permettre de faire des r\u00e9glages. Cette fonctionnalit\u00e9 a \u00e9t\u00e9 ajout\u00e9e dans la version 218 de <code>systemd<\/code>.<\/p>\n<p>Par d\u00e9faut, la commande <code>edit<\/code> ouvrira le fragment de code du fichier de l\u2019unit\u00e9 concern\u00e9\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl edit nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Il s\u2019agira d\u2019un fichier vierge qui pourra \u00eatre utilis\u00e9 pour remplacer ou ajouter des directives \u00e0 la d\u00e9finition de l\u2019unit\u00e9. Un r\u00e9pertoire sera cr\u00e9\u00e9 dans le r\u00e9pertoire <code>\/etc\/systemd\/systemd<\/code> qui contient le nom de l\u2019unit\u00e9 avec un <code>.d<\/code> annex\u00e9. Par exemple, pour le <code>nginx.service<\/code>, un r\u00e9pertoire appel\u00e9 <code>nginx.service.d<\/code> sera cr\u00e9\u00e9.<\/p>\n<p>Au sein de ce r\u00e9pertoire, un fragment de code appel\u00e9 <code>override.conf<\/code> sera cr\u00e9\u00e9. Une fois l\u2019unit\u00e9 charg\u00e9e, <code>systemd<\/code> fusionnera, en m\u00e9moire, le fragment de code de remplacement avec le fichier de l\u2019unit\u00e9 dans son int\u00e9gralit\u00e9. Les directives du fragment de code auront la priorit\u00e9 sur celles qui se trouvent dans le fichier de l\u2019unit\u00e9 d\u2019origine.<\/p>\n<p>Si vous souhaitez modifier l\u2019int\u00e9gralit\u00e9 du fichier de l\u2019unit\u00e9 au lieu de cr\u00e9er un fragment de code, vous pouvez passer la balise <code>--full<\/code>.<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl edit <span class=\"token parameter variable\">&#8211;full<\/span> nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela chargera le fichier de l\u2019unit\u00e9 actuelle dans l\u2019\u00e9diteur dans lequel vous pouvez le modifier. Lorsque l\u2019\u00e9diteur se ferme, le fichier modifi\u00e9 sera \u00e9crit dans <code>\/etc\/systemd\/system<\/code>, ce qui aura la priorit\u00e9 sur la d\u00e9finition de l\u2019unit\u00e9 du syst\u00e8me (qui se trouve g\u00e9n\u00e9ralement dans <code>\/lib\/systemd\/system<\/code>).<\/p>\n<p>Pour supprimer tous les ajouts que vous avez effectu\u00e9s, vous pouvez supprimer soit le r\u00e9pertoire de configuration de l\u2019unit\u00e9 <code>.d<\/code> ou le fichier de service modifi\u00e9 de <code>\/etc\/systemd\/system<\/code>. Par exemple, pour supprimer un fragment de code, nous pourrions saisir\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">rm<\/span> <span class=\"token parameter variable\">-r<\/span> \/etc\/systemd\/system\/nginx.service.d<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Pour supprimer un fichier complet de l\u2019unit\u00e9 modifi\u00e9, il faudrait entrer\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">rm<\/span> \/etc\/systemd\/system\/nginx.service<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Apr\u00e8s avoir supprim\u00e9 le fichier ou le r\u00e9pertoire, vous devez recharger le processus <code>systemd<\/code> pour qu\u2019il ne tente plus de r\u00e9f\u00e9rencer ces fichiers et r\u00e9utilise les copies du syst\u00e8me. Vous pouvez le faire en tapant\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl daemon-reload<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<\/div>\n            <\/div>        <\/div>    <\/div><\/section>\n<section class=\"av_toggle_section\"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\"  >    <div role=\"tablist\" class=\"single_toggle\" data-tags=\"{Tout} \"  >        <p data-fake-id=\"#toggle-id-5\" class=\"toggler \"  itemprop=\"headline\"    role=\"tab\" tabindex=\"0\" aria-controls=\"toggle-id-5\">R\u00e9glage de l\u2019\u00e9tat du syst\u00e8me (niveau d\u2019ex\u00e9cution) avec des cibles<span class=\"toggle_icon\" >        <span class=\"vert_icon\"><\/span><span class=\"hor_icon\"><\/span><\/span><\/p>        <div id=\"toggle-id-5\" class=\"toggle_wrap \"   >            <div class=\"toggle_content invers-color \"  itemprop=\"text\"   ><h2 id=\"reglage-de-l-etat-du-systeme-niveau-d-execution-avec-des-cibles\">R\u00e9glage de l\u2019\u00e9tat du syst\u00e8me (niveau d\u2019ex\u00e9cution) avec des cibles<\/h2>\n<p>Les cibles sont des fichiers sp\u00e9ciaux de l\u2019unit\u00e9 qui d\u00e9crivent un \u00e9tat ou un point de synchronisation du syst\u00e8me. Comme avec les autres unit\u00e9s, les fichiers qui d\u00e9finissent des cibles peuvent \u00eatre identifi\u00e9s par leur suffixe, dans ce cas <code>.target<\/code>. Seules, les cibles ne font pas grand-chose, mais elles permettent de regrouper d\u2019autres unit\u00e9s ensemble.<\/p>\n<p>Vous pouvez les utiliser pour mettre le syst\u00e8me dans certains \u00e9tats, tout comme les autres syst\u00e8mes d\u2019initialisation utilisent les niveaux d\u2019ex\u00e9cution. Elles servent de r\u00e9f\u00e9rence lorsque certaines fonctions sont disponibles. Elles vous permettent ainsi de sp\u00e9cifier l\u2019\u00e9tat souhait\u00e9 au lieu d\u2019avoir \u00e0 sp\u00e9cifier les unit\u00e9s individuellement pour produire cet \u00e9tat.<\/p>\n<p>Par exemple, il existe un <code>swap.target<\/code> qui est utilis\u00e9 pour indiquer que le swap est pr\u00eat \u00e0 \u00eatre utilis\u00e9. Les unit\u00e9s qui font partie de ce processus peuvent se synchroniser avec cette cible en indiquant dans leur configuration qu\u2019elles sont <code>WantedBy=<\/code> ou <code>RequiredBy=<\/code> le <code>swap.target<\/code>. Les unit\u00e9s qui n\u00e9cessitent la disponibilit\u00e9 d\u2019un swap peuvent sp\u00e9cifier cette condition en utilisant les sp\u00e9cifications <code>Wants=<\/code>, <code>Requires=<\/code>, et <code>After=<\/code> pour indiquer la nature de leur relation.<\/p>\n<h3 id=\"obtention-et-configuration-de-la-cible-par-defaut\">Obtention et configuration de la cible par d\u00e9faut<\/h3>\n<p>Le processus <code>systemd<\/code> a une cible par d\u00e9faut qu\u2019il utilise au lancement du syst\u00e8me. En satisfaisant la cascade des d\u00e9pendances de cette cible unique, le syst\u00e8me est amen\u00e9 \u00e0 l\u2019\u00e9tat souhait\u00e9. Pour trouver la cible par d\u00e9faut de votre syst\u00e8me, saisissez :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl get-default<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<pre><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre><code>multi-user.target\n<\/code><\/pre>\n<p>Au besoin, pour configurer une autre cible par d\u00e9faut, vous pouvez utiliser le <code>set-default<\/code>. Par exemple, si vous avez install\u00e9 un bureau graphique et que vous souhaitez que le syst\u00e8me s\u2019y lance par d\u00e9faut, vous pouvez modifier votre cible par d\u00e9faut en cons\u00e9quence\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl set-default graphical.target<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"liste-des-cibles-disponibles\">Liste des cibles disponibles<\/h3>\n<p>Vous pouvez obtenir une liste des cibles disponibles sur votre syst\u00e8me en saisissant\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-unit-files <span class=\"token parameter variable\">&#8211;type<\/span><span class=\"token operator\">=<\/span>target<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Contrairement aux niveaux d\u2019ex\u00e9cution, plusieurs cibles peuvent \u00eatre actives \u00e0 la fois. Une cible active indique que <code>systemd<\/code> a tent\u00e9 de lancer toutes les unit\u00e9s li\u00e9es \u00e0 la cible et n\u2019a pas encore r\u00e9essay\u00e9 de les d\u00e9truire. Pour voir toutes les cibles actives, entrez\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-units <span class=\"token parameter variable\">&#8211;type<\/span><span class=\"token operator\">=<\/span>target<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"isolation-des-cibles\">Isolation des cibles<\/h3>\n<p>Il est possible de lancer toutes les unit\u00e9s associ\u00e9es \u00e0 une cible et d\u2019arr\u00eater toutes celles qui ne font pas partie de l\u2019arborescence de d\u00e9pendance. La commande dont nous avons besoin pour cela s\u2019appelle, comme il se doit, <code>isolate<\/code>. Le processus est similaire \u00e0 celui qui permet de changer le niveau d\u2019ex\u00e9cution sur les autres syst\u00e8mes d\u2019initialisation.<\/p>\n<p>Par exemple, si vous op\u00e9rez dans un environnement graphique dans lequel <code>graphical.target<\/code> est active, vous pouvez arr\u00eater le syst\u00e8me graphique et mettre le syst\u00e8me dans un \u00e9tat de ligne de commande multi-utilisateur en isolant le <code>multi-user.target<\/code>. \u00c9tant donn\u00e9 que <code>graphical.target<\/code> d\u00e9pend de <code>multi-user.target<\/code>, mais pas l\u2019inverse, toutes les unit\u00e9s graphiques seront arr\u00eat\u00e9es.<\/p>\n<p>Il est conseill\u00e9 de consulter les d\u00e9pendances de la cible que vous isolez avant d\u2019effectuer cette proc\u00e9dure afin de s\u2019assurer de ne pas arr\u00eater les services essentiels\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">systemctl list-dependencies multi-user.target<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Une fois satisfait des unit\u00e9s qui seront rest\u00e9es actives, vous pouvez isoler la cible en saisissant le texte suivant\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl isolate multi-user.target<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h3 id=\"utilisation-de-raccourcis-pour-les-evenements-importants\">Utilisation de raccourcis pour les \u00e9v\u00e9nements importants<\/h3>\n<p>Il existe des cibles d\u00e9finies pour les \u00e9v\u00e9nements importants comme la mise \u00e0 l\u2019arr\u00eat ou le red\u00e9marrage. Cependant, <code>systemctl<\/code> int\u00e8gre \u00e9galement quelques raccourcis qui ajoutent quelques fonctionnalit\u00e9s suppl\u00e9mentaires.<\/p>\n<p>Par exemple, pour mettre le syst\u00e8me en mode sauvetage (utilisateur unique), vous pouvez utiliser la commande <code>rescue<\/code> au lieu de <code>isolate rescue.target<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl rescue<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Cela permettra d\u2019avoir une fonctionnalit\u00e9 suppl\u00e9mentaire qui avertira tous les utilisateurs connect\u00e9s de l\u2019\u00e9v\u00e9nement.<\/p>\n<p>Pour arr\u00eater le syst\u00e8me, vous pouvez utiliser la commande <code>halt<\/code> :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl <span class=\"token function\">halt<\/span><\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Pour lancer un arr\u00eat complet, vous pouvez utiliser la commande <code>poweroff<\/code> :<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl poweroff<\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Vous pouvez d\u00e9clencher un red\u00e9marrage avec la commande <code>reboot<\/code>\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl <span class=\"token function\">reboot<\/span><\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<p>Ces fonctionnalit\u00e9s avertiront les utilisateurs que l\u2019\u00e9v\u00e9nement est en cours, ce qui ne se fera pas en ex\u00e9cutant ou isolant uniquement la cible. Notez que la plupart des machines relieront les commandes les plus courtes et les plus classiques de ces op\u00e9rations afin qu\u2019elles fonctionnent correctement avec <code>systemd<\/code>.<\/p>\n<p>Par exemple, pour red\u00e9marrer le syst\u00e8me, vous pouvez g\u00e9n\u00e9ralement taper\u00a0:<\/p>\n<div class=\"code-toolbar\">\n<pre class=\"prefixed command language-bash\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">reboot<\/span><\/li>\n<\/ol>\n<pre class=\"prefixed command language-bash\"><code>\n<\/code><\/pre>\n<div class=\"toolbar\">\n<div class=\"toolbar-item\">\u00a0<\/div>\n<\/div>\n<\/div>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>Maintenant, vous devriez vous \u00eatre familiaris\u00e9 avec certaines des capacit\u00e9s de base de la commande <code>systemctl<\/code> qui vous permettent d\u2019interagir avec votre instance <code>systemd<\/code> et de la contr\u00f4ler. L\u2019utilitaire <code>systemctl<\/code> sera votre principal point d\u2019interaction pour g\u00e9rer l\u2019\u00e9tat des services et l\u2019\u00e9tat du syst\u00e8me.<\/p>\n<p>Bien que <code>systemctl<\/code> fonctionne principalement avec le processus de base <code>systemd<\/code>, il existe d\u2019autres composants de l\u2019\u00e9cosyst\u00e8me <code>systemd<\/code> qui sont contr\u00f4l\u00e9s par d\u2019autres utilitaires . D\u2019autres capacit\u00e9s, comme la gestion des journaux et les sessions utilisateur, sont trait\u00e9es par des d\u00e9mons et des utilitaires de gestion distincts (<code>journald<\/code>\/<code>journalctl<\/code> et (<code>logind<\/code>\/<code>loginctl<\/code> respectivement). Prenez le temps de vous familiariser avec les autres outils et d\u00e9mons pour que la gestion soit plus facile.<\/p>\n            <\/div>        <\/div>    <\/div><\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0},"_links":{"self":[{"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/pages\/6844"}],"collection":[{"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6844"}],"version-history":[{"count":26,"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/pages\/6844\/revisions"}],"predecessor-version":[{"id":6908,"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=\/wp\/v2\/pages\/6844\/revisions\/6908"}],"wp:attachment":[{"href":"https:\/\/hengowebsite.luong.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}