É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.
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 getconf
valeurs 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 con “GRUPO” en su título, utilisation:
getconf -a | GROUPE de préhension
Para ver los valores que disponen “INT_” 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 llama “PINK” y 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/else
clá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.