Comment rendre votre matériel de scripts Bash compatible

Contenu

Bash Shell

Écrire des scripts à exécuter sur différents ordinateurs Linux est difficile. On ne peut pas assumer qu'ils auront les mêmes caractéristiques. Les getconf La commande vous permet de vérifier des centaines de paramètres de système d'exploitation et de système de fichiers.

Script avec accréditation matérielle

Si à tout moment vous avez écrit un script qui devrait s'exécuter sur une gamme de machines Linux, es factible que se haya enfrentado al dilema de “Étrange, fonctionne bien sur ma machine …”. Petites différences entre l'architecture informatique, les systèmes d'exploitation et les systèmes de fichiers sur les machines cibles peuvent empêcher vos scripts de fonctionner correctement.

Si vos scripts sont simples et qu'ils ne font rien, ou essayez de démarrer, dépend du matériel pris en charge ou de certaines capacités du système de fichiers, il est possible qu'il n'y ait jamais d'obstacle. Mais plus votre script devient complexe, plus critiques sont les détails de la machine exécutant le script. Il est également important de noter qu'un même ordinateur peut avoir plusieurs systèmes de fichiers installés, monté dans différentes parties de l'arborescence de répertoires. Ce n'est pas parce que quelque chose fonctionne dans un répertoire qu'il fonctionnera de la même manière dans un autre répertoire.

Les getconf La commande peut rapporter littéralement des centaines de systèmes d'exploitation et de fonctionnalités de système de fichiers différents. Certains d'entre eux prennent la forme de paires de valeurs, l'un avec le maximum du système et l'autre avec le minimum. Cela signifie que vous pouvez tester votre système de fichiers ou vos paramètres matériels pour vous assurer que votre script réagit en conséquence..

De toute façon, votre script ne peut pas utiliser getconf sur l'ordinateur cible s'il n'est pas installé sur cet ordinateur. Toutes les distributions qui ont été testées lors de la recherche de cet article avaient getconf déjà installé, y compris Ubuntu, Fedora et Manjaro. avec curiosité, ils avaient tous la même version de getconf en outre, la version 2.33.

Premiers pas avec la commande getconf

Vous pouvez vérifier ce que vous avez getconf installé sur votre ordinateur et découvrez de quelle version il s'agit, en utilisant le --version option.

getconf --version

Pour voir combien de messages getconf peut informer, Utilisez le -a (Tout le monde) et le canaliser à travers le wc commander. Cela comptera les lignes, mots et caractères dans la sortie.

getconf -a | toilettes

Il y a 320 lignes à la sortie. Pour afficher la liste complète d'une manière gérable, nous canaliserons la sortie vers less .

getconf -a | moins

Vous pouvez faire défiler la liste pour voir ce que getconf peut informer.

Getconv -une sortie dans la visionneuse de fichiers moins

Certains éléments sont des doublons. Beaucoup d'entre eux peuvent être appelés par un nom plus court ou un nom plus long compatible POSIX.

Signaler des valeurs uniques

Causer getconf rapporter sur une seule valeur, passer le nom de la valeur à getconf sur la ligne de commande. Notez que tous les noms alternatifs sont en majuscules.

getconf LONG_BIT

Les LONG_BIT L'option informe si le noyau, et ainsi, votre système d'exploitation, Il est 32 bits o de 64 morceaux. Aucun autre paramètre n'est requis pour cette commande, juste l'option LONG_BIT elle-même. Une autre valeur simple à signaler est LOGIN_NAME_MAX .

getconf LOGIN_NAME_MAX

C'est une longueur maximale étrangement élevée pour un nom d'utilisateur, mais c'est vrai. Si vous vouliez vraiment créer un compte utilisateur avec un nom d'utilisateur ridiculement long, pourrait le faire. Au contraire, Le nom d'hôte de cet ordinateur a une longueur maximale de 64 personnages:

getconf HOST_NAME_MAX

Pour voir combien de processus simultanés un compte utilisateur peut exécuter, Utilisez le CHILD_MAX option:

getconf CHILD_MAX

Les OPEN_MAX valeur renvoie le nombre maximum de fichiers qu'une procédure peut avoir ouverts.

getconf OPEN_MAX

Pour afficher un sous-ensemble de getconfvaleurs que nous pouvons utiliser le -a (tout) option pour générer toutes les valeurs et utiliser grep filtrer celles qui nous intéressent. Par exemple, para ver todos los valores que disponen “NOM” en su título, utilisation:

getconf -a | grep NOM

De la même manière, para ver todos los valores conGRUPOen su título, utilisation:

getconf -a | GROUPE de préhension

Para ver los valores que disponenINT_en su título, utilisation:

getconf -a | grep _INT

Cela montre les valeurs maximales et minimales qu'une variable entière peut contenir sur cet ordinateur.

EN RELATION: Comment chercher avec “grep” Comment chercher avec

Utiliser getconf avec les valeurs du système de fichiers

Lorsque vous utilisez l'une des alternatives associées aux fonctionnalités du système de fichiers, doit indiquer getconf sur quel système de fichiers générer un rapport. Vous devez le faire même si vous n'avez qu'un seul disque dur et un seul système de fichiers installés. Les getconf La commande ne supposera rien. Pour indiquer le système de fichiers getconf doit informer, vous devez fournir un chemin vers un répertoire sur ce système de fichiers.

Pour afficher la longueur maximale d'un nom de fichier pour le système de fichiers monté à la racine de l'arborescence des répertoires du système de fichiers, scribe:

getconf NAME_MAX /

Pour afficher la sortie d'un autre système de fichiers, pointer vers un répertoire situé sur l'autre système de fichiers. Même si vous n'avez pas différents systèmes de fichiers montés en permanence dans votre arborescence de répertoires, vous pouvez vous retrouver avec un autre système de fichiers temporairement attaché à votre arborescence de répertoires.

C'est exactement ce qui se passe lorsque vous insérez une clé USB, comme dans cet exemple. La tarjeta de memoria se llamaPINKy está montada en “/ médias / dave /”.

getconf NAME_MAX /media/dave/PINK/

Nous pouvons vérifier quel système de fichiers se trouve sur la clé USB en utilisant le df commande pour voir à quel périphérique de bloc il est connecté. Plus tard, nous utilisons le lsblk commande avec le -f (Système de fichiers) option.

df /media/dave/ROSE
lsblk -f /dev/sdb1

La carte mémoire est un dispositif de verrouillage. /dev/sdb1 et le système de fichiers est FAT32. C'est pourquoi nous obtiendrons des résultats différents pour deux répertoires dans la même arborescence de répertoires.. Ils sont dans la même arborescence de répertoires, mais ont des systèmes de fichiers sous-jacents différents.

EN RELATION: Quel système de fichiers dois-je utiliser pour ma clé USB?

Utilisation de getconf dans les scripts

Nous pouvons facilement incorporer la sortie de getconf dans les décisions au sein de nos scripts shell.

Par exemple, d'effectuer différentes actions selon que le script s'exécute sur un système d'exploitation de 32 bits o de 64 morceaux, puede usar una sección de secuencia de comandos como esta.

#!/poubelle/bash

# are we on a 32 ou 64 bit OS?
si [ $(getconf LONG_BIT) = "64" ]
alors
  # 64 bit
  echo "64-bit machine."
autre
  # 32 bit
  echo "32-Bit machine."
être

Les if declaración compara la salida de la getconf LONG_BIT comando con el valor de “64”. Si coinciden, les then la cláusula se ejecuta caso contrario el else se ejecuta la cláusula. Puede realizar acciones específicas de la versión en el then/elsecláusulas o establezca indicadores de variables que se pueden verificar en otra parte de su secuencia de comandos.

Copie el texto del script en un editor y guarde su archivo como “test-hw.sh”. Nous allons rendre le script exécutable avec le chmod commande et le -x (exécutable) option.

chmod +x hw-test.sh

Lorsque nous exécutons le script, nous dit lesquelles des clauses ont été activées. En utilisant cette technique, vous pouvez utiliser l'un des getconf valeurs pour diriger votre script pour prendre l'action appropriée.

./test-hw.sh

Excès d'alternatives

Le grand nombre de valeurs qui getconf ça peut être écrasant. Les man La page est étonnamment courte. Si vous attendez de moi que je liste les alternatives et que je vous explique chacune, tu seras déçu.

Vous trouverez quelques descriptions dans le man pages pour sysconf et confstr. Vous devrez peut-être découper certains caractères du devant de la confstr billets. Par exemple, cela ne fonctionne pas:

getconf _CS_GNU_LIBC_VERSION

mais cela a fait:

getconf GNU_LIBC_VERSION

Vous trouverez également quelques descriptions dans le fichier “limites.h”. Si vous ne savez pas où se trouve ce fichier sur votre système, utilisation:

où est limts.h 

Ensuite, Vous pouvez utiliser less pour vérifier ce fichier.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.