Commande Bash printf

En règle générale, lors de l’écriture de scripts bash, nous utilisonsechopour imprimer sur la sortie standard. echo est une commande simple mais limitée dans ses capacités.
Pour avoir plus de contrôle sur la mise en forme de la sortie, utilisez leprintfcommander.

leprintfformate et imprime ses arguments, comme le Cprintf()une fonction.

printfCommande n °

printfest un shell intégré à Bash et à d’autres shells populaires comme Zsh et Ksh. Il existe également un/usr/bin/printfbinaire, mais la version intégrée du shell a priorité. Nous couvrirons la version intégrée de Bash deprintf.

La syntaxe duprintfest la suivante:

printf [-v var] format [arguments]

le-voption indiqueprintfnon pas pour imprimer la sortie mais pour l’affecter à la variable.

leformatest une chaîne qui peut contenir trois types d’objets différents:

  • Caractères normaux qui sont simplement imprimés tels quels sur la sortie.
  • Caractères à barre oblique inversée qui sont interprétés puis imprimés.
  • Spécifications de conversion qui décrivent le format et sont remplacées par les valeurs des arguments respectifs qui suivent la chaîne de format.

La commande accepte n’importe quel nombre dearguments. Si plusargumentsque les spécificateurs de format sont fournis, leformatla chaîne est réutilisée pour consommer tous les arguments. Si moinsargumentsque les spécificateurs de format sont fournis, les spécificateurs de format numérique supplémentaires sont définis sur une valeur nulle tandis que les spécificateurs de format de chaîne sont définis sur une chaîne nulle.

Voici quelques points à considérer lors de la transmission des argumentsprintfcommander:

  • Le shell remplacera toutes les variables, la correspondance générique et les caractères spéciaux avant de passer les arguments auprintfcommander.
  • Lors de l’utilisation de guillemets simples''la valeur littérale de chaque caractère entre guillemets sera conservée. Les variables et les commandes ne seront pas développées.

Un exemple typique d’utilisationprintfressemble à:

printf "Open issues: %s\nClosed issues: %s\n" "34" "65"
Open issues: 34
Closed issues: 65

La chaîneOpen issues: %s\nClosed issues: %s\nest leformattandis que «34» et «65» sont des arguments. La chaîne de format contient deux caractères de nouvelle ligne (\n) et deux spécificateurs de format (%s) qui sont remplacés par les arguments.

leprintfn’ajoute pas de caractère de nouvelle ligne (\n) à la fin de la ligne.

Caractères avec barre oblique inverse #

Les caractères avec barre oblique inverse sont interprétés lorsqu’ils sont utilisés dans la chaîne de format ou dans un argument correspondant à un%bspécificateur de conversion. Voici une liste des personnages d’échappement les plus courants:

  • \\– Affiche un caractère barre oblique inverse.
  • \b– Affiche un caractère de retour arrière.
  • \n– Affiche une nouvelle ligne.
  • \r– Affiche un retour chariot.
  • \t– Affiche un onglet horizontal.
  • \v– Affiche un onglet vertical.

Spécifications de conversion #

Une spécification de conversion prend la forme suivante:

%[flags][width][.precision]specifier

Chaque spécification de conversion est marquée du signe de pourcentage (%), inclut des modificateurs facultatifs et se termine par l’une des lettres suivantes qui représentent le type de données (specifier) de l’argument correspondant:aAbcdeEfgGioqsuxX.

Spécificateur de conversion de type #

La conversion de typespecifierest un caractère qui spécifie comment interpréter l’argument correspondant. Ce caractère est obligatoire et il est placé après les champs facultatifs.

Vous trouverez ci-dessous une liste montrant toutes les conversions de types et ce qu’elles font:

  • %b– Imprimer l’argument tout en développant les séquences d’échappement de barre oblique inverse.
  • %q– Affiche l’argument cité par le shell, réutilisable en entrée.
  • %d, %i– Affiche l’argument sous la forme d’un entier décimal signé.
  • %u– Affiche l’argument sous la forme d’un entier décimal non signé.
  • %o– Affiche l’argument sous la forme d’un entier octal non signé.
  • %x, %X– Affiche l’argument sous la forme d’un entier hexadécimal non signé.%ximprime des lettres minuscules et%Ximprime en majuscules.
  • %e, %E– Imprime l’argument sous forme de nombre à virgule flottante en notation exponentielle.%eimprime des lettres minuscules et%Eimprime en majuscules.
  • %a, %A– Imprime l’argument sous forme de nombre à virgule flottante en notation fractionnelle hexadécimale.%aimprime des lettres minuscules et%Aimprime en majuscules.
  • %g, %G– Imprimer l’argument sous forme de nombre à virgule flottante en notation normale ou exponentielle, selon ce qui est le plus approprié pour la valeur et la précision données.%gimprime des lettres minuscules et%Gimprime en majuscules.
  • %c– Imprimez l’argument comme un seul caractère.
  • %f– Imprime l’argument sous forme de nombre à virgule flottante.
  • %s– Affiche l’argument sous forme de chaîne.
  • %%– Imprimer un littéral%symbole.

Un nombre non signé représente zéro et des nombres positifs, tandis qu’un nombre signé représente des nombres négatifs, zéro et positifs.

La commande suivante imprime le nombre 100 dans trois systèmes numériques différents:

printf "Decimal: %d\nHex: %x\nOctal: %o\n" 100 100 100
Decimal: 100
Hex: 64
Octal: 144

Directive drapeaux #

Les indicateurs sont les premiers modificateurs facultatifs et sont utilisés pour définir la justification, les zéros de tête, les préfixes, etc.

Voici les plus courants:

  • -– Alignez à gauche le texte imprimé dans le champ. Par défaut, le texte est aligné à droite.
  • +– Préfixez les nombres avec un+ou-panneaux. Par défaut, seuls les nombres négatifs sont préfixés par un signe négatif.
  • 0– Remplit les nombres avec des zéros en tête plutôt que de l’espace.
  • Vide– Préfixez les nombres positifs avec un espace vide et les nombres négatifs avec un moins (-).
  • #– Un format alternatif pour les nombres.

Directive largeur #

lewidthLa directive déposée est placée après tout caractère indicateur et spécifie le nombre minimum de caractères que la conversion doit entraîner.

Si la largeur du texte en sortie est inférieure à la largeur spécifiée, elle est remplie d’espaces. La largeur peut être spécifiée sous la forme d’un entier décimal non négatif ou d’un astérisque (*).

Voici un exemple:

printf "%20s %d\n" Mark 305

%20ssignifie que le champ doit contenir au moins 20 caractères. Des blancs sont ajoutés avant le texte car, par défaut, la sortie est justifiée à droite. Pour aligner le texte à gauche, utilisez le-drapeau (%-20s).

      Mark 305

Lorsqu’un astérisque (*) est utilisé commewidth, la largeur du champ de conversion est définie par un argument de largeur qui précède l’argument en cours de formatage.

Dans l’exemple ci-dessous, nous définissons la largeur à 10:

printf "%0*d" 10 5

0est un drapeau qui remplit le nombre avec des zéros en tête au lieu de blancs. Le texte de sortie aura au moins 10 caractères:

0000000005

Directive de précision #

le.precisionLe modificateur consiste en un point (.) suivi d’un entier positif ou d’un astérisque (*) qui, selon le type de spécificateur, définit le nombre de caractères de chaîne ou de chiffres ou le nombre de décimales à imprimer.

La précision a l’effet suivant:

  • Si le type de conversion est un entier, la précision spécifie le nombre minimum de chiffres à imprimer. Si le nombre de chiffres dans l’argument est inférieur à la précision, les zéros de tête sont imprimés.
  • Si le type de conversion est une virgule flottante, la précision spécifie le nombre de chiffres qui suivent le caractère décimal. La précision par défaut est 6.
  • Si le type de conversion est une chaîne, la précision spécifie le nombre maximal de caractères à imprimer. Si le nombre de caractères dans l’argument est supérieur à la précision, les caractères en excès sont tronqués.

Voici un exemple montrant comment arrondir un nombre à virgule flottante à 3 décimales:

printf "%.3f" 1.61803398
1.618

Lorsque la précision est définie sur un astérisque (*), sa valeur est définie par l’argument de précision qui précède l’argument en cours de formatage.

printf "%.*f" 3 1.61803398
1.618

Conclusion #

leprintf

Utilisation de Curl pour effectuer des requêtes API REST

Une interface de programme d’application (API) est un ensemble de définitions et de protocoles qui permet aux programmes logiciels de communiquer entre eux.

Le terme REST signifie transfert d’état représentatif. Il s’agit d’un style architectural qui consiste en un ensemble de contraintes à utiliser lors de la création de services Web.

L’API RESTful est une API qui suit l’architecture REST. Les API REST utilisent généralement le protocole HTTP pour envoyer et récupérer des données et des réponses au format JSON. Vous pouvez utiliser les méthodes HTTP standard pour créer, afficher, mettre à jour ou supprimer des ressources via l’API.

Pour tester et interagir avec les API RESTful, vous pouvez utiliser n’importe quelle bibliothèque ou outil pouvant effectuer des requêtes HTTP.

Les demandes d’API se composent de quatre parties différentes:

  • Le point final. Il s’agit de l’URL que le client utilise pour communiquer avec le serveur.
  • La méthode HTTP. Il indique au serveur quelle action le client souhaite effectuer. Les méthodes les plus courantes sontGET POST PUT DELETEetPATCH
  • Les en-têtes. Utilisé pour transmettre des informations supplémentaires entre le serveur et le client, telles que l’autorisation.
  • Le corps. Les données envoyées au serveur.

Dans cet article, nous allons voir comment utilisercurlpour interagir avec les API RESTful.curlest un utilitaire de ligne de commande pour transférer des données depuis ou vers un serveur distant. Il est installé par défaut sur macOS et la plupart des distributions Linux.

Options de boucle #

La syntaxe de la commande curl est la suivante:

curl [options] [URL...]

Voici les options que nous utiliserons pour effectuer des demandes:

  • -X, --request– La méthode HTTP à utiliser.
  • -i, --include– Inclure les en-têtes de réponse.
  • -d, --data– Les données à envoyer.
  • -H, --header– En-tête supplémentaire à envoyer.

HTTP GET #

La méthode GET demande une ressource spécifique au serveur.

GET est la méthode par défaut lors de la création de requêtes HTTP aveccurl. Voici un exemple de demande GET à l’API JSONPlaceholder d’une représentation JSON de toutes les publications:

curl https://jsonplaceholder.typicode.com/posts

Pour filtrer les résultats, utilisez les paramètres de requête:

curl https://jsonplaceholder.typicode.com/posts?userId=1

HTTP POST #

La méthode POST est utilisée pour créer une ressource sur le serveur. Si la ressource existe, elle est remplacée.

La commande suivante créera un nouveau message en utilisant les données spécifiées avec le-doption:

curl -X POST -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts

Le type du corps de la demande est spécifié à l’aide duContent-Typeentête. Par défaut lorsque cet en-tête n’est pas donnécurlles usagesContent-Type: application/x-www-form-urlencoded

Pour envoyer un jeu de données au format JSON, le type de corps doit êtreapplication/json:

curl -X POST -H "Content-Type: application/json" \    -d '{"userId": 5, "title": "Hello World", "body": "Post body."}' \    https://jsonplaceholder.typicode.com/posts

HTTP PUT #

La méthode PUT est utilisée pour mettre à jour ou remplacer une ressource sur le serveur. Il remplace toutes les données de la ressource spécifiée par les données de demande.

curl -X PUT -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts/5

HTTP PATCH #

La méthode PUT est utilisée pour effectuer des mises à jour partielles de la ressource sur le serveur.

curl -X PUT -d "title=Hello Universe" https://jsonplaceholder.typicode.com/posts/5

HTTP DELETE #

La méthode DELETE supprime la ressource spécifiée du serveur.

curl -X DELETE https://jsonplaceholder.typicode.com/posts/5

Authentification #

Si le point de terminaison de l’API nécessite une authentification, vous devrez obtenir une clé d’accès. Sinon, le serveur API répondra avec le message de réponse «Accès interdit» ou «Non autorisé».

Le processus d’obtention d’une clé d’accès dépend de l’API que vous utilisez. Une fois que vous avez votre jeton d’accès, vous pouvez l’envoyer dans l’en-tête:

curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" "https://api.server.io/posts"

Conclusion #

Nous vous avons montré comment utilisercurlpour effectuer des requêtes d’API de test. Pour plus d’informations surcurl

Commande Fdisk sous Linux (Créer des partitions de disque)

La première chose que vous devez faire après l’installation d’un nouveau SSD ou disque dur est de le partitionner. Un lecteur doit avoir au moins une partition avant de pouvoir le formater et y stocker des fichiers.

Sous Linux, il existe plusieurs outils que vous pouvez utiliser pour créer des partitions, avecfdiskétant le plus utilisé.

Dans cet article, nous parlerons de lafdiskcommander.

fdiskest un utilitaire de ligne de commande piloté par menu qui vous permet de créer et de manipuler des tables de partition sur un disque dur.

Soit conscient quefdiskest un outil dangereux et doit être utilisé avec une extrême prudence. Seuls les utilisateurs root ou root disposant des privilèges sudo peuvent manipuler les tables de partition.

Liste des partitions #

Pour répertorier la table de partition d’un périphérique, appelez lefdiskcommande avec le-l, suivi du nom du périphérique. Par exemple, pour répertorier les/dev/sdatable de partition et partitions que vous exécuteriez:

fdisk -l /dev/sda

Quand aucun périphérique n’est donné comme argument,fdiskimprimera les tables de partition de tous les périphériques répertoriés dans le/proc/partitionsfichier:

fdisk -l
Disk /dev/nvme0n1: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 960 EVO 250GB               
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6907D1B3-B3AB-7E43-AD20-0707A656A1B5

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  34605055  33554432    16G Linux swap
/dev/nvme0n1p3 34605056 488397134 453792079 216.4G Linux filesystem


Disk /dev/sda: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WDC WD5000AAKS-0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0001cca3

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 976771071 976769024 465.8G 83 Linux

La sortie ci-dessus montre les tables de partition actuelles de tous les périphériques connectés à votre système. En règle générale, les noms des périphériques SATA suivent le modèle/dev/sd[a-z], tandis que les noms de périphériques NVMe ont le modèle suivant/dev/nvme[1-9]n[1-9].

Création d’une table de partition #

Pour démarrer le partitionnement du lecteur, exécutezfdiskavec le nom de l’appareil. Dans cet exemple, nous allons travailler sur/dev/sdb:

fdisk /dev/sdb

L’invite de commande va changer et lefdiskun dialogue où vous pouvez taper des commandes s’ouvrira:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):
Les modifications que vous apportez à la table de partition ne prendront effet que lorsque vous les écrivez avec lewcommander. Vous pouvez quitter lefdiskdialogue sans enregistrer les modifications à l’aide duqcommander.

Pour obtenir une liste de toutes les commandes disponibles, entrezm:

m

Si vous partitionnez un nouveau lecteur, avant de commencer à créer des partitions, vous devez créer une table de partition. Ignorez cette étape si le périphérique possède déjà une table de partition et que vous souhaitez la conserver.

fdiskprend en charge plusieurs schémas de partitionnement. MBR et GPT sont les deux normes de schéma de partition les plus populaires, qui stockent les informations de partitionnement sur un lecteur d’une manière différente. GPT est une norme plus récente qui permet et présente de nombreux avantages par rapport au MBR. Les principaux points à considérer lors du choix de la norme de partitionnement à utiliser:

  • Utilisez MBR pour démarrer le disque en mode BIOS hérité.
  • Utilisez GPT pour démarrer le disque en mode UEFI.
  • La norme MBR prend en charge la création d’une partition de disque jusqu’à 2 TiB. Si vous avez un disque de 2 TiB ou plus, utilisez GPT.
  • MBR a une limite de 4 partitions principales. Si vous avez besoin de plus de partitions, l’une des partitions principales peut être définie comme une partition étendue et contenir des partitions logiques supplémentaires. Avec GPT, vous pouvez avoir jusqu’à 128 partitions. GPT ne prend pas en charge les partitions étendues ou logiques.

Dans cet exemple, nous utiliserons une table de partition GPT.

Entrergpour créer une nouvelle table de partition GPT vide:

g

La sortie ressemblera à ceci:

Created a new GPT disklabel (GUID: 4649EE36-3013-214E-961C-51A9187A7503).

L’étape suivante consiste à créer les nouvelles partitions.

Nous allons créer deux partitions. Le premier d’une taille de 100 Gio et le second occuperont le reste de l’espace disque.

Exécutez lencommande pour créer une nouvelle partition:

n

Vous serez invité à saisir le numéro de partition. Appuyez sur « Entrée » pour utiliser la valeur par défaut (1):

Partition number (1-128, default 1):

Ensuite, la commande vous demandera de spécifier le premier secteur. En règle générale, il est toujours recommandé d’utiliser les valeurs par défaut pour la première valeur. Appuyez sur « Entrée » pour utiliser la valeur par défaut (2048):

First sector (2048-500118158, default 2048):

À l’invite suivante, vous devrez entrer le dernier secteur. Vous pouvez utiliser une valeur absolue pour le dernier secteur ou une valeur relative pour le secteur de départ, en utilisant le symbole + suivi de la taille de la partition. La taille peut être spécifiée en kibioctets (K), mégaoctets (M), gibibytes (G), tebibytes (T) ou pebibytes (P).

Entrer+100Gpour définir la taille de la partition à 100 Gio:

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-500118158, default 500118158): +100G
Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.

Par défaut, le type de la nouvelle partition est défini sur «Système de fichiers Linux», ce qui devrait convenir dans la plupart des cas. Si vous souhaitez modifier le type, appuyez surlpour obtenir une liste des types de partitions, puis appuyez surtpour changer le type.

Créons la deuxième partition qui occupera le reste de l’espace disque:

n

Utilisez les valeurs par défaut pour le numéro de partition, les premier et dernier secteurs. Cela créera une partition qui utilisera tout l’espace disponible sur le disque.

Partition number (2-128, default 2): 
First sector (209717248-625142414, default 209717248): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (209717248-625142414, default 625142414): 

Une fois la création des partitions terminée, utilisez lepcommande pour afficher la nouvelle table de partition:

p
Disk /dev/sdb: 298.9 GiB, 320072933376 bytes, 625142448 sectors
Disk model: nal USB 3.0     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F8365250-AF58-F74E-B592-D56E3A5DEED1

Device         Start       End   Sectors   Size Type
/dev/sdb1       2048 209717247 209715200   100G Linux filesystem
/dev/sdb2  209717248 625142414 415425167 198.1G Linux filesystem
Si vous souhaitez supprimer une partition, utilisez ledcommander.

Enregistrez les modifications en exécutant lewcommander:

p

La commande écrit la table sur le disque et quitte lefdiskmenu.

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Le noyau lira la table de partition du périphérique sans avoir à redémarrer le système.

Activation des partitions #

Maintenant que les partitions ont été créées, l’étape suivante consiste à formater les partitions et à les monter dans l’arborescence de répertoires du système.

Nous allons formater les deux partitions en ext4:

sudo mkfs.ext4 -F /dev/sdb1sudo mkfs.ext4 -F /dev/sdb2
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 51928145 4k blocks and 12984320 inodes
Filesystem UUID: 63a3457e-c3a1-43f4-a0e6-01a7dbe7dfed
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done   

Dans cet exemple, montera les partitions sur/mnt/audioet/mnt/videorépertoires.

Créez les points de montage avec mkdir:

sudo mkdir -p /mnt/audio /mnt/video 

Montez la nouvelle partition:

sudo mount /dev/sdb1 /mnt/audiosudo mount /dev/sdb2 /mnt/video 

Les partitions resteront montées jusqu’à ce que vous la démontiez ou que vous arrêtiez la machine. Pour monter automatiquement une partition au démarrage de votre système Linux, définissez le montage dans le/etc/fstabfichier.

C’est ça! Vous pouvez désormais utiliser les nouvelles partitions pour stocker vos fichiers.

Conclusion #

fdiskest un outil en ligne de commande pour créer des schémas de partition. Pour plus d’informations sur lefdiskcommande, tapezman fdisk

Comment Grep pour plusieurs chaînes et modèles

grepest un puissant outil de ligne de commande qui vous permet de rechercher dans un ou plusieurs fichiers d’entrée des lignes correspondant à une expression régulière et d’écrire chaque ligne correspondante dans la sortie standard.

Dans cet article, nous allons vous montrer comment utiliser GNUgreppour rechercher plusieurs chaînes ou modèles.

Grep Multiple Patterns #

GNU grepprend en charge trois syntaxes d’expressions régulières, de base, étendue et compatible Perl. Lorsqu’aucun type d’expression régulière n’est spécifié,grepinterpréter les modèles de recherche comme des expressions régulières de base.

Pour rechercher plusieurs motifs, utilisez l’opérateur OR (alternance).

L’opérateur d’alternance|(pipe) vous permet de spécifier différentes correspondances possibles qui peuvent être des chaînes littérales ou des ensembles d’expressions. Cet opérateur a la priorité la plus faible de tous les opérateurs d’expression régulière.

La syntaxe de recherche de plusieurs modèles à l’aide de lagreples expressions régulières de base sont les suivantes:

grep 'pattern1\|pattern2' file...

Mettez toujours l’expression régulière entre guillemets simples pour éviter l’interprétation et l’expansion des méta-caractères par le shell.

Lorsque vous utilisez des expressions régulières de base, les méta-caractères sont interprétés comme des caractères littéraux. Pour conserver la signification particulière des méta-caractères, il faut les échapper avec une barre oblique inverse (\). C’est pourquoi nous échappons à l’opérateur OR (|) avec une barre oblique.

Pour interpréter le modèle comme une expression régulière étendue, appelezgreple-E( ou--extended-regexp). Lorsque vous utilisez une expression régulière étendue, n’échappez pas à la|opérateur:

grep -E 'pattern1|pattern2' file...

Pour plus d’informations sur la façon de construire des expressions régulières, consultez notre article Grep regex.

Grep Multiple Strings #

Les chaînes littérales sont les modèles les plus élémentaires.

Dans l’exemple suivant, nous recherchons toutes les occurrences des motsfatal, error, etcriticaldans le fichier d’erreur du journal Nginx:

grep 'fatal\|error\|critical' /var/log/nginx/error.log

Si la chaîne que vous recherchez comprend des espaces, placez-la entre guillemets doubles.

Voici le même exemple utilisant l’expression régulière étendue, ce qui élimine le besoin d’échapper à l’opérateur|

grep -E 'fatal|error|critical' /var/log/nginx/error.log

Par défaut,grepest sensible à la casse. Cela signifie que les caractères majuscules et minuscules sont traités comme distincts.

Pour ignorer la casse lors de la recherche, appelezgrep withle-ioption (ou--ignore-case):

grep -i 'fatal\|error\|critical' /var/log/nginx/error.log

Lors de la recherche d’une chaîne,grepaffichera toutes les lignes où la chaîne est incorporée dans des chaînes plus grandes. Donc, si vous cherchiez « erreur »,grepimprimera également les lignes où « erreur » est incorporé dans des mots plus gros, tels que « sans erreur » ou « antiterroristes ».

Pour renvoyer uniquement les lignes où la chaîne spécifiée est un mot entier (entouré de caractères non verbaux), utilisez le-w( ou--word-regexp) option:

grep -w 'fatal\|error\|critical' /var/log/nginx/error.log

Les caractères Word incluent les caractères alphanumériques (a-z, A-Z et 0-9) et les traits de soulignement (_). Tous les autres caractères sont considérés comme des caractères non verbaux.

Pour plus de détails surgrepoptions, visitez notre article Grep command.

Conclusion #

Nous vous avons montré commentgrep

.bashrc vs .bash_profile

Si vous passez beaucoup de temps sur la ligne de commande, il est probable que vous souhaitiez personnaliser votre environnement shell. Cela peut signifier la création d’alias, l’ajout d’un nouveau répertoire au $ PATH ou la modification de l’apparence de l’invite du shell.

Vous avez peut-être rencontré des tutoriels où ils disent de mettre votre configuration soit dans le.bashrc, .bash_profileou un autre fichier de configuration lu et exécuté par le shell bash.

Dans cet article, nous parlerons des fichiers de démarrage de Bash et de la différence entre les.bashrcet.bash_profiledes dossiers.

Connexion interactive et shell sans connexion #

Lorsqu’il est appelé, Bash lit et exécute des commandes à partir d’un ensemble de fichiers de démarrage. Les fichiers lus varient selon que le shell est appelé en tant que shell de connexion interactif ou non de connexion.

Un shell peut être interactif ou non interactif.

En termes simples, un shell interactif est un shell qui lit et écrit sur le terminal d’un utilisateur, tandis qu’un shell non interactif est un shell qui n’est pas associé à un terminal, comme lors de l’exécution d’un script.

Un shell interactif peut être un shell de connexion ou non.

Un shell de connexion est invoqué lorsqu’un utilisateur se connecte au terminal à distance via ssh ou localement, ou lorsque Bash est lancé avec le--loginoption. Un shell interactif sans connexion est appelé à partir du shell de connexion, comme lors de la saisiebashdans l’invite du shell ou lors de l’ouverture d’un nouvel onglet de terminal Gnome.

Fichiers de démarrage Bash #

Lorsqu’il est appelé en tant que shell de connexion interactif, Bash recherche le/etc/profileet si le fichier existe, il exécute les commandes répertoriées dans le fichier. Ensuite, Bash recherche~/.bash_profile, ~/.bash_login, et~/.profilefichiers, dans l’ordre indiqué, et exécute les commandes à partir du premier fichier lisible trouvé.

Lorsque Bash est invoqué comme un shell interactif sans connexion, il lit et exécute des commandes à partir de~/.bashrc, si ce fichier existe et qu’il est lisible.

Différence entre .bashrc et .bash_profile #

.bash_profileest lu et exécuté lorsque Bash est invoqué en tant que shell de connexion interactif, tandis que.bashrcest exécuté pour un shell interactif sans connexion.

Utilisation.bash_profilepour exécuter des commandes qui ne doivent s’exécuter qu’une seule fois, telles que la personnalisation du$PATHvariable d’environnement.

Mettez les commandes qui devraient s’exécuter à chaque fois que vous lancez un nouveau shell dans le.bashrcfichier. Cela inclut vos alias et fonctions, invites personnalisées, personnalisations de l’historique, etc.

Typiquement,~/.bash_profilecontient des lignes comme ci-dessous cette source.bashrcfichier. Cela signifie que chaque fois que vous vous connectez au terminal, les deux fichiers sont lus et exécutés.

if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

La plupart des distributions Linux utilisent~/.profileau lieu de~/.bash_profile. le~/.profilele fichier est lu par tous les shells,~/.bash_profileuniquement par Bash.

Si aucun fichier de démarrage n’est présent sur votre système, vous pouvez le créer.

Conclusion #

.bash_profileet.bashrcsont des fichiers contenant des commandes shell qui sont exécutées lorsque Bash est invoqué..bash_profileest lu et exécuté sur des shells de connexion interactifs, tandis que.bashrc

Comment définir ou modifier le fuseau horaire sur Ubuntu 20.04

L’utilisation du fuseau horaire correct est essentielle pour de nombreuses tâches et processus liés aux systèmes. Par exemple, le démon cron utilise le fuseau horaire du système pour exécuter les tâches cron, et les horodatages dans les fichiers journaux sont basés sur le fuseau horaire du même système.

Sur Ubuntu, le fuseau horaire du système est défini lors de l’installation, mais il peut être facilement modifié ultérieurement.

Cet article décrit comment définir ou modifier le fuseau horaire sur Ubuntu 20.04 à l’aide de la ligne de commande ou via l’interface graphique.

Conditions préalables #

Seul le superutilisateur ou l’utilisateur disposant des privilèges sudo peut définir ou modifier le fuseau horaire du système.

Vérification du fuseau horaire actuel #

timedatectlest un utilitaire de ligne de commande qui vous permet d’afficher et de modifier l’heure et la date du système. Il est disponible sur tous les systèmes Linux modernes basés sur Systemd, y compris Ubuntu 20.04.

Pour imprimer le fuseau horaire du système actuel, appelez letimedatectlsans aucun argument:

timedatectl

La sortie ci-dessous montre que le fuseau horaire du système est réglé sur «UTC»:

               Local time: Wed 2020-05-06 19:33:20 UTC
           Universal time: Wed 2020-05-06 19:33:20 UTC
                 RTC time: Wed 2020-05-06 19:33:22    
                Time zone: UTC (UTC, +0000)           
System clock synchronized: yes                         
              NTP service: active                      
          RTC in local TZ: no   

Le fuseau horaire du système est configuré par lien symbolique/etc/localtimeà un identifiant de fuseau horaire binaire dans le/usr/share/zoneinfoannuaire.
Une autre option pour afficher le fuseau horaire du système actuel est de trouver le fichier vers lequel pointe le lien symbolique:

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Dec 10 12:59 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Le fuseau horaire du système est également écrit/etc/timezonefichier:

cat /etc/timezone
UTC

Modification du fuseau horaire à l’aide dutimedatectlCommande n °

Avant de modifier le fuseau horaire, vous devez connaître le nom long du fuseau horaire que vous souhaitez utiliser. Les fuseaux horaires utilisent le format «Région / Ville».

Pour répertorier tous les fuseaux horaires disponibles, vous pouvez soit répertorier les fichiers/usr/share/zoneinforépertoire ou appeler letimedatectlcommande avec lelist-timezonesoption:

timedatectl list-timezones
...
America/Montevideo
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
...

Une fois que vous avez identifié le fuseau horaire correspondant à votre emplacement, exécutez la commande suivante en tant qu’utilisateur sudo:

sudo timedatectl set-timezone your_time_zone

Par exemple, pour changer le fuseau horaire du système enAmerica/New_York:

sudo timedatectl set-timezone America/New_York

Appelez letimedatectlcommande pour vérifier les modifications:

timedatectl
               Local time: Wed 2020-05-06 15:41:42 EDT  
           Universal time: Wed 2020-05-06 19:41:42 UTC  
                 RTC time: Wed 2020-05-06 19:41:48      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                         
              NTP service: active                      
          RTC in local TZ: no   

Modification du fuseau horaire à l’aide de l’interface graphique #

Si vous exécutez Ubuntu Desktop, vous pouvez modifier le fuseau horaire du système actuel via l’interface graphique.

  1. Ouvrez la fenêtre des paramètres système en cliquant sur leSettingsicône, comme indiqué dans l’image ci-dessous:

  2. Dans la fenêtre des paramètres système, cliquez surDate & Timelanguette. Si laAutomatic Time Zonemis àONet si vous disposez d’une connexion Internet et d’un service de localisation activé, le fuseau horaire doit être automatiquement défini en fonction de votre emplacement.

  3. Pour sélectionner le nouveau fuseau horaire, vous pouvez soit cliquer sur la carte, soit rechercher un fuseau horaire dans la barre de recherche.

    Une fois terminé, cliquez sur×

Chez Command sous Linux

atest un utilitaire de ligne de commande qui vous permet de planifier des commandes à exécuter à un moment particulier. Emplois créés avecatsont exécutés une seule fois.

Dans cet article, nous expliquerons comment utiliseratet ses utilitaires associésbatch, atq, atrmpour afficher, supprimer et créer des travaux à exécuter ultérieurement.

L’installationat #

Selon la distribution,atpeut ou peut ne pas être présent sur votre système Linux.

Siatn’est pas installé, vous pouvez facilement l’installer en utilisant le gestionnaire de paquets de votre distribution.

  • Installeratsur Ubuntu et Debian

    sudo apt update sudo apt install at
  • Installeratsur CentOS et Fedora

    sudo yum install at

Une fois le programme installé, assurez-vousatd, le démon de planification est en cours d’exécution et configuré pour démarrer au démarrage:

sudo systemctl enable --now atd

Comment utiliser leatCommande n °

La syntaxe simplifiée pour leatest la suivante:

at [OPTION...] runtime

leatla commande prend la date et l’heure (runtime) lorsque vous souhaitez exécuter le travail en tant que paramètre de ligne de commande et la commande à exécuter à partir de l’entrée standard.

Créons un travail qui sera exécuté à 9h00:

at 09:00

Une fois que vous frappezEnter, vous serez présenté avec leatinvite de commande commençant le plus souvent parat>. Vous voyez également un avertissement qui vous indique le shell dans lequel la commande s’exécutera:

warning: commands will be executed using /bin/sh
at>

Entrez une ou plusieurs commandes que vous souhaitez exécuter:

tar -xf /home/linuxize/file.tar.gz

Lorsque vous avez terminé d’entrer les commandes, appuyez surCtrl-Dpour quitter l’invite et enregistrer le travail:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

La commande affichera le numéro du travail ainsi que l’heure et la date d’exécution.

Il existe également d’autres moyens de passer la commande que vous souhaitez exécuter, en plus de saisir la commande dans leatrapide. Une façon consiste à utiliser l’écho et à diriger la commande versat:

echo "command_to_be_run" | at 09:00

Une autre option consiste à utiliser le document Here:

at 09:00 <<ENDcommand_to_be_runEND

Pour lire les commandes d’un fichier au lieu de l’entrée standard, appelez la commande avec-foption suivie par le chemin d’accès au fichier. Par exemple, pour créer un travail qui exécutera le script/home/linuxize/script.sh:

at 09:00 -f /home/linuxize/script.sh

Par défaut, si la commande produit une sortie,atenverra un e-mail contenant la sortie à l’utilisateur une fois le travail terminé. Invoqueratavec le-Moption pour supprimer la notification par e-mail:

at 09:00 -M

Utilisez le-mpour envoyer un e-mail même s’il n’y a pas de sortie:

at 09:00 -m

batchCommande n °

batchou son aliasat -bplanifie les travaux et les exécute dans une file d’attente par lots lorsque le niveau de charge du système le permet. Par défaut, les travaux sont exécutés lorsque la moyenne de charge du système est inférieure à 1,5. La valeur de la charge peut être spécifiée lors de l’appel duatddémon. Si la moyenne de charge du système est supérieure à celle spécifiée, les travaux attendent dans la file d’attente.

Pour créer un emploi avecbatch, passez les commandes que vous souhaitez exécuter:

echo "command_to_be_run" | batch

Spécification du temps d’exécution #

leatl’utilitaire accepte un large éventail de spécifications de temps. Vous pouvez spécifier l’heure, la date et l’incrémentation à partir de l’heure actuelle:

  • Temps– Pour spécifier une heure, utilisez leHH:MMouHHMMforme. Pour indiquer un format d’heure de 12 heures, utilisezamoupmaprès le temps. Vous pouvez également utiliser des chaînes commenow, midnight, noon, outeatime(16h00). Si l’heure spécifiée est dépassée, le travail sera exécuté le lendemain.

  • Date– La commande vous permet de planifier l’exécution du travail à une date donnée. La date peut être spécifiée à l’aide du nom du mois suivi du jour et d’une année facultative. Vous pouvez utiliser des chaînes, telles quetoday, tomorrowou en semaine. La date peut également être indiquée à l’aide duMMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YYou[CC]YY-MM-DDformats.

  • Incrémentataccepte également les incréments de lanow + count time-unitformat, oùcountest un nombre ettime-unitpeut être l’une des chaînes suivantes:minutes, hours, days, ouweeks.

L’heure, la date et l’incrément peuvent être combinés, voici quelques exemples:

  • Planifiez un travail pour le dimanche à venir à une heure dix minutes plus tard que l’heure actuelle:

    at sunday +10 minutes
  • Planifiez l’exécution d’une tâche à 13 heures dans deux jours:

    at 1pm + 2 days
  • Planifier un travail à exécuter à 12h30 le 21 octobre 2020:

    at 12:30 102120
  • Planifiez un travail pour qu’il s’exécute dans une heure:

    at now +1 hours

Vous pouvez également spécifier une heure et une date dans le[[CC]YY]MMDDhhmm[.ss]en utilisant le-toption. Voici un exemple:

at -t 202005111321.32

Spécification de la file d’attente #

Par défaut, les travaux créés avecatsont programmés dans la file d’attente nomméeaet les emplois créés avecbatchsont prévus dans lebqueue.

Les requêtes peuvent avoir un nom deaàzetAàZ. Les files d’attente avec des lettres inférieures s’exécutent avec une plus faible gentillesse, ce qui signifie qu’elles ont priorité sur celles avec des lettres supérieures.

Vous pouvez spécifier la file d’attente avec le-qoption. Par exemple, pour définir un travail dans leLfile d’attente, vous exécuteriez:

at monday +2 hours -q L

Liste des travaux en attente #

Pour répertorier les travaux en attente de l’utilisateur, exécutez la commandeatqouat -lcommander:

atq

La sortie répertorie tous les travaux, un par ligne. Chaque ligne comprend le numéro de tâche, la date, l’heure, la lettre de file d’attente et le nom d’utilisateur.

9	  Tue May  5 12:22:00 2020 a linuxize
12	Wed Oct 21 12:30:00 2020 a linuxize
15	Tue May  5 09:00:00 2020 a linuxize
6	  Tue May  5 09:00:00 2020 a linuxize
13	Mon May  4 23:08:00 2020 a linuxize
11	Wed Jul  1 10:00:00 2020 a linuxize
4	  Tue May  5 09:00:00 2020 a linuxize

Quandatqest appelé en tant qu’administrateur, il répertorie les travaux en attente de tous les utilisateurs.

Suppression des travaux en attente #

Pour supprimer un travail en attente, appelez leatrmouat -rcommande suivie du numéro de travail. Par exemple, pour supprimer le travail avec le numéro neuf, vous devez exécuter:

atrm 9

Restriction d’utilisateurs #

le/etc/at.denyet/etc/at.allowles fichiers vous permettent de contrôler les utilisateurs qui peuvent créer des emplois avecatoubatchcommander. Les fichiers se composent d’une liste de noms d’utilisateurs, un nom d’utilisateur par ligne.

Par défaut, seul le/etc/at.denyexiste et est vide, ce qui signifie que tous les utilisateurs peuvent utiliser leatcommander. Si vous souhaitez refuser l’autorisation à un utilisateur spécifique, ajoutez le nom d’utilisateur à ce fichier.

Si la/etc/at.allowexiste que seuls les utilisateurs répertoriés dans ce fichier peuvent utiliser leatcommander.

Si aucun des fichiers n’existe, seuls les utilisateurs disposant de privilèges administratifs peuvent utiliser leatcommander.

Conclusion #

leatl’utilitaire lit les commandes à partir de l’entrée standard et les exécute ultérieurement. Contrairement à crontab, les emplois créés avecatsont exécutés une seule fois.

Pour plus d’informations sur toutes les options disponibles duattype de commandeman at

Comment supprimer un groupe sous Linux (commande groupdel)

Sous Linux, les groupes sont utilisés pour organiser et administrer les comptes d’utilisateurs. L’objectif principal des groupes est de définir un ensemble de privilèges tels que l’autorisation de lecture, d’écriture ou d’exécution pour une ressource donnée pouvant être partagée entre les utilisateurs du groupe.

Un nouveau groupe peut être créé à l’aide de la commande groupadd. Si un groupe n’est plus nécessaire et peut être supprimé du système.

Cet article explique comment supprimer un groupe sous Linux, à l’aide dugroupdelcommander.

groupdelSyntaxe de commande #

La syntaxe générale de lagroupdelest la suivante:

groupdel [OPTIONS] GROUPNAME

GROUPNAMEest le nom du groupe que vous souhaitez supprimer.

Seul le root ou un utilisateur avec des privilèges sudo peut supprimer des groupes.

Il n’est pas possible de supprimer le groupe principal d’un utilisateur existant sans supprimer l’utilisateur au préalable.

legroupdelLa commande n’accepte que quelques options rarement utilisées. Voir legroupdelpage de manuel pour plus d’informations sur les options de la commande.

Suppression d’un groupe sous Linux #

Pour supprimer (supprimer) un groupe donné du système, appelez legroupdelcommande suivie du nom du groupe.

Par exemple, pour supprimer un groupe nommémygroupvous courriez:

groupdel mygroup

La commande ci-dessus supprime l’entrée de groupe de la/etc/groupet/etc/gshadowdes dossiers.

En cas de succès, legroupdelLa commande n’imprime aucune sortie.

Vous pouvez vérifier que le groupe est supprimé, en répertoriant tous les groupes à l’aide de la commande suivante:

getent group | grep mygroup

Si le groupe que vous souhaitez supprimer n’existe pas, le système affichera un message d’erreur semblable au suivant:

groupdel: group 'mygroup' does not exist

Conclusion #

Sous Linux, vous pouvez supprimer des groupes à l’aide dugroupdel

Comment utiliser Rsync pour le transfert et la synchronisation de données locales et distantes

Rsync est un utilitaire de ligne de commande rapide et polyvalent qui synchronise les fichiers et les dossiers entre deux emplacements sur un shell distant ou depuis / vers un démon Rsync distant. Il permet un transfert de fichiers incrémentiel rapide en transférant uniquement les différences entre la source et la destination.

Rsync peut être utilisé pour la mise en miroir des données, les sauvegardes incrémentielles, la copie de fichiers entre les systèmes et en remplacement des commandes scp, sftp et cp pour une utilisation quotidienne.

Dans ce tutoriel, nous allons vous montrer comment utiliserrsyncà travers des exemples pratiques et des explications détaillées des plus courantesrsyncles options.

Installation de Rsync #

lersyncl’utilitaire est préinstallé sur la plupart des distributions Linux et macOS. Vous pouvez vérifier s’il est installé sur votre système en tapant:

rsync --version
rsync  version 3.1.2  protocol version 31

Si vous n’avez pasrsyncinstallé sur votre système, vous pouvez facilement l’installer à l’aide du gestionnaire de packages de votre distribution.

Installez Rsync sur Ubuntu et Debian #

sudo apt install rsync

Installez Rsync sur CentOS et Fedora #

sudo yum install rsync

Syntaxe de la commande Rsync #

Avant d’apprendre à utiliser lersyncCommençons par revoir la syntaxe de base.

lersyncLes expressions utilitaires prennent la forme suivante:

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [[email protected]]HOST:DEST
Remote to Local: rsync [OPTION]... [[email protected]]HOST:SRC... [DEST]
  • OPTION– Les options rsync.
  • SRC– Répertoire source.
  • DEST– Répertoire de destination.
  • USER– Nom d’utilisateur distant.
  • HOST– Nom d’hôte distant ou adresse IP.

rsyncfournit un certain nombre d’options qui contrôlent chaque aspect de son comportement. Les options les plus utilisées sont:

  • -a, --archive, mode archive, équivalent à-rlptgoD. Cette option indiquersyncpour synchroniser les répertoires de manière récursive, transférer des périphériques spéciaux et bloqués, conserver les liens symboliques, les heures de modification, le groupe, la propriété et les autorisations.
  • -z, --compress. Cette option forcerarsyncpour compresser les données lors de leur envoi vers la machine de destination. Utilisez cette option uniquement si la connexion à la machine distante est lente.
  • -P, équivalent à--partial --progress. Lorsque cette option est utiliséersyncaffichera une barre de progression pendant le transfert et pour conserver les fichiers partiellement transférés. Il est utile lors du transfert de fichiers volumineux sur des connexions réseau lentes ou instables.
  • --delete. Lorsque vous utilisez cette optionrsyncsupprimera les fichiers superflus de l’emplacement de destination. Il est utile pour la mise en miroir.
  • -q, --quiet. Utilisez cette option si vous souhaitez supprimer les messages non d’erreur.
  • -e. Cette option vous permet de choisir un autre shell distant. Par défaut,rsyncest configuré pour utiliser ssh.

Utilisation de base de Rsync #

Pour copier un seul fichier de l’un vers un autre emplacement local, vous devez exécuter la commande suivante:

rsync -a /opt/filename.zip /tmp/

L’utilisateur exécutant la commande doit avoir des autorisations de lecture sur l’emplacement de destination et des autorisations d’écriture sur la destination.

L’omission du nom de fichier de l’emplacement de destination copie le fichier avec le nom actuel. Si vous souhaitez enregistrer le fichier sous un nom différent, spécifiez le nouveau nom sur la partie de destination:

rsync -a /opt/filename.zip /tmp/newfilename.zip

Dans l’exemple ci-dessous, nous créons une sauvegarde locale de nos fichiers de site Web:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Si le répertoire de destination n’existe pasrsyncva le créer.

Il est à noter quersyncdonne un traitement différent aux répertoires source avec une barre oblique de fin/. Si vous ajoutez une barre oblique de fin sur le répertoire source, elle ne copiera que le contenu du répertoire dans le répertoire de destination. Lorsque la barre oblique de fin est omisersynccopiera le répertoire source dans le répertoire de destination.

Comment utiliser Rsync pour synchroniser des données depuis / vers une machine distante #

Lors de l’utilisationrsyncpour le transfert à distance, il doit être installé à la fois sur la machine source et sur la machine de destination. Les nouvelles versions dersyncsont configurés pour utiliser SSH comme shell distant par défaut.

Dans l’exemple suivant, nous transférons un répertoire d’un ordinateur local vers un ordinateur distant:

rsync -a /opt/media/ [email protected]_host_or_ip:/opt/media/
Si vous n’avez pas défini de connexion SSH sans mot de passe sur la machine distante, vous serez invité à saisir le mot de passe de l’utilisateur.

Si vous souhaitez transférer des données d’une télécommande vers une machine locale, vous devez utiliser l’emplacement distant comme source:

rsync -a [email protected]_host_or_ip:/opt/media/ /opt/media/

Si SSH sur l’hôte distant écoute sur un port autre que le port par défaut 22, vous pouvez spécifier le port à l’aide du-eoption:

rsync -a -e "ssh -p 2322" /opt/media/ [email protected]_host_or_ip:/opt/media/

Lors du transfert de grandes quantités de données, il est recommandé d’exécuterrsyncdans une session écran ou utilisez la commande-Poption:

rsync -a -P [email protected]_host_or_ip:/opt/media/ /opt/media/

Exclure des fichiers et des répertoires #

Lorsque vous excluez des fichiers ou des répertoires, vous devez utiliser leurs chemins d’accès relatifs à l’emplacement source.

Il existe deux options pour exclure des fichiers et des répertoires. La première option consiste à utiliser le--excludeet spécifiez les fichiers et répertoires que vous souhaitez exclure sur la ligne de commande.

Dans l’exemple suivant, nous excluons lenode_modulesettmprépertoires qui sont situés à l’intérieur dusrc_directory:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

La deuxième option consiste à utiliser le--exclude-fromet spécifiez les fichiers et répertoires que vous souhaitez exclure dans un fichier.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modules
tmp

Commande d’arrêt de Linux

Dans ce tutoriel, nous allons vous montrer comment utiliser leshutdowncommande à travers des exemples pratiques et des explications détaillées des plus courantesshutdownles options.

leshutdowncommande fait descendre le système de manière sécurisée. Quand leshutdownest lancé, tous les utilisateurs et processus connectés sont informés que le système est en panne et aucune autre connexion n’est autorisée. Vous pouvez arrêter votre système immédiatement ou à l’heure spécifiée.

Syntaxe de la commande d’arrêt #

Avant d’apprendre à utiliser leshutdownCommençons par revoir la syntaxe de base.

leshutdownles expressions de commande prennent la forme suivante:

shutdown [OPTIONS] [TIME] [MESSAGE]
  • options– Options d’arrêt telles que l’arrêt, la mise hors tension (l’option par défaut) ou le redémarrage du système.
  • time– L’argument time spécifie quand exécuter le processus d’arrêt.
  • message– L’argument message spécifie un message qui sera diffusé à tous les utilisateurs.

Sur les récentes distributions Linuxshutdownest un alias poursystemctlet il est disponible dans le système uniquement pour des raisons de compatibilité.

Comment utiliser leshutdownCommande n °

Seuls la racine et les utilisateurs avec des privilèges sudo peuvent utilisercrontabcommander.

Lorsqu’il est utilisé sans argument, leshutdownLa commande mettra la machine hors tension.

sudo shutdown

Le processus d’arrêt démarre après 1 minute, qui est l’intervalle de temps par défaut.

Comment arrêter le système à une heure spécifiée #

L’argument time peut avoir deux formats différents. Ce peut être une heure absolue au formathh:mmet temps relatif au format+moù m est le nombre de minutes à partir de maintenant.

L’exemple suivant planifie l’arrêt du système à 11 heures du matin:

sudo shutdown 11:00

L’exemple suivant planifie le systèmeshutdowndans 10 minutes:

sudo shutdown +10

Comment arrêter le système immédiatement #

Pour arrêter votre système immédiatement, vous pouvez utiliser+0ou son aliasnow:

sudo shutdown now

Comment diffuser un message personnalisé #

Pour diffuser un message personnalisé avec la normeshutdownnotification tapez votre message après l’argument time.

L’exemple suivant arrête le système dans 30 minutes et informe les utilisateurs qu’une mise à niveau matérielle sera effectuée:

sudo shutdown +30 "Hardware upgrade"

Il est important de mentionner que lorsque vous spécifiez un message de mur personnalisé, vous devez également spécifier un argument de temps.

Comment redémarrer le système #

Pour redémarrer le système, utilisez le-rargument:

sudo shutdown -r

Vous pouvez également spécifier un argument de temps et un message personnalisé:

shutdown -r +5 "Updating kernel"

La commande ci-dessus redémarrera le système après 5 minutes et diffuseraUpdating kernel.

Comment annuler un arrêt planifié #

Si vous avez programmé l’arrêt et que vous souhaitez l’annuler, vous pouvez utiliser le-cargument:

sudo shutdown -c

Lorsque vous annulez un arrêt planifié, vous ne pouvez pas spécifier un argument d’heure, mais vous pouvez toujours diffuser un message qui sera envoyé à tous les utilisateurs.

sudo shutdown -c "Canceling the reboot"

Conclusion #

leshutdownLa commande vous permet d’arrêter, d’éteindre et de redémarrer votre système Linux.

En apprendre davantage surshutdown