Cum să vă faceți scripturile Bash hardware conștiente – CloudSavvy IT

Tripon Alin
By Tripon Alin 10 Min Read

Bash Shell

Scrierea de scripturi pentru a rula pe diferite computere Linux este dificilă. Nu poți presupune că vor avea aceleași caracteristici. getconf comanda vă permite să verificați sute de valori ale sistemului de operare și ale sistemului de fișiere.

Scripturi hardware conștiente

Dacă ați scris vreodată un script care trebuie să ruleze pe o varietate de mașini Linux, s-ar putea să vă fi găsit cu fața la situația „Ciudat, funcționează foarte bine pe mașina mea …”. Diferențe mici între arhitectura computerului, sistemele de operare și sistemele de fișiere de pe mașinile țintă pot împiedica scripturile să funcționeze corect.

Dacă scripturile dvs. sunt simple și nimic din ceea ce fac – sau încearcă să lanseze – depinde de hardware compatibil sau de anumite capacități ale sistemului de fișiere, este posibil să nu aveți niciodată probleme. Dar cu cât scriptul dvs. devine mai complicat, cu atât sunt mai critice detaliile mașinii pe care rulează scriptul. De asemenea, merită menționat faptul că un singur computer poate avea mai multe sisteme de fișiere instalate pe acesta, montate pe diferite părți ale arborelui de directoare. Deoarece ceva funcționează într-un director nu înseamnă că va funcționa la fel în alt director.

getconf comanda poate raporta literalmente sute de caracteristici diferite ale sistemului de operare și ale sistemului de fișiere. Unele dintre acestea iau forma unor perechi de valori, una păstrând sistemul maxim și cealaltă menținând minimul. Aceasta înseamnă că puteți testa hardware-ul sau valorile sistemului de fișiere pentru a vă asigura că scriptul dvs. va reacționa în consecință.

Desigur, scriptul dvs. nu poate fi folosit getconf pe computerul țintă dacă nu este instalat pe acel computer. Toate distribuțiile care au fost testate la cercetarea acestui articol au avut getconf deja instalate, inclusiv Ubuntu, Fedora și Manjaro. Interesant este că toți aveau aceeași versiune a getconf de asemenea, versiunea 2.33.

Citeste si  Cum să vizionați Borat 2 online: acum puteți vedea filmele lui Borat de oriunde

Primii pași cu Comanda getconf

Puteți verifica dacă aveți getconf instalat pe computerul dvs. și aflați ce versiune este, utilizând --version opțiune.

getconf --version

Pentru a vedea câte articole getconf poate raporta despre, utilizați -a (all) opțiune și treceți-o prin wc comanda. Aceasta va număra liniile, cuvintele și caracterele din ieșire.

getconf -a | wc

În ieșire există 320 de linii. Pentru a vedea întreaga listă într-un mod ușor de gestionat, vom introduce ieșirea în less .

getconf -a | less

Puteți derula înainte și înapoi până la listă pentru a vedea ce getconf poate raporta asupra.

Ieșire din getconv -a în vizualizatorul de fișiere mai puțin

Unele dintre elemente sunt duplicate. Multe dintre ele pot fi apelate printr-un nume mai scurt sau printr-un nume mai lung conform cu POSIX.

Raportarea valorilor unice

A cauza getconf pentru a raporta o singură valoare, treceți numele valorii către getconf pe linia de comandă. Rețineți că toate numele opțiunilor sunt cu majuscule.

getconf LONG_BIT

LONG_BIT opțiunea raportează dacă kernelul dvs. – și, prin urmare, sistemul dvs. de operare – este pe 32 de biți sau pe 64 de biți. Nu există alți parametri necesari pentru această comandă, ci doar opțiunea LONG_BIT în sine. O altă valoare simplă de raportat este LOGIN_NAME_MAX .

getconf LOGIN_NAME_MAX

Aceasta este o lungime maximă ciudat de mare pentru un nume de utilizator, dar este adevărat. Dacă doriți cu adevărat să creați un cont de utilizator cu un nume de utilizator absurd de lung, ați putea. În schimb, numele gazdei acestui computer are o lungime maximă de 64 de caractere:

getconf HOST_NAME_MAX

Pentru a vedea câte procese simultane poate rula un cont de utilizator, utilizați CHILD_MAX opțiune:

getconf CHILD_MAX

OPEN_MAX value returnează numărul maxim de fișiere deschise de un proces.

getconf OPEN_MAX

Pentru a vedea un subset al fișierului getconfvalorile pe care le putem folosi -a (toate) opțiune pentru a genera toate valorile și utilizați grep pentru a le filtra pe cele care ne interesează. De exemplu, pentru a vedea fiecare valoare care are „NAME” în ​​titlu, utilizați:

getconf -a | grep NAME

La fel, pentru a vedea toate valorile cu „GROUP” în titlul lor, utilizați:

getconf -a | grep GROUP

Pentru a vedea valorile care au „INT_” în titlu, utilizați:

getconf -a | grep _INT

Aceasta arată valorile maxime și minime pe care o variabilă întreagă le poate deține pe acest computer.

Citeste si  Cum se folosește Compunerea inteligentă în Google Docs

LEGATE DE: Cum să căutați cu „grep” folosind șiruri într-un fișier

Utilizarea getconf cu valori ale sistemului de fișiere

Când utilizați oricare dintre opțiunile legate de caracteristicile sistemului de fișiere, trebuie să spuneți getconf despre ce sistem de fișiere ar trebui să raporteze. Trebuie să faceți acest lucru chiar dacă aveți doar un singur hard disk și un singur sistem de fișiere instalat pe el. getconf comanda nu va presupune nimic. Pentru a indica sistemul de fișiere getconf ar trebui să raportați, trebuie să furnizați o cale către un director în acel sistem de fișiere.

Pentru a vedea lungimea maximă pentru un nume de fișier pentru sistemul de fișiere montat la rădăcina arborelui directorului sistemului de fișiere, tastați:

getconf NAME_MAX /

Pentru a vedea rezultatul pentru un alt sistem de fișiere, indicați spre un director situat în celălalt sistem de fișiere. Chiar dacă nu aveți diferite sisteme de fișiere montate permanent în arborele de directoare, vă puteți găsi cu un alt sistem de fișiere atașat temporar la arborele de directoare.

Exact acest lucru se întâmplă când introduceți un stick de memorie USB, ca în acest exemplu. Memory stick-ul se numește „PINK” și este montat la „/ media / dave /.”

getconf NAME_MAX /media/dave/PINK/

Putem verifica ce sistem de fișiere este pe stick-ul de memorie USB folosind df comanda pentru a vedea la ce dispozitiv bloc este conectat. Apoi folosim lsblk comanda cu -f (sistem de fișiere) opțiune.

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

Memory Stick-ul este un dispozitiv bloc /dev/sdb1 iar sistemul de fișiere este FAT32. Acesta este motivul pentru care obținem rezultate diferite pentru două directoare din același arbore de directoare. Sunt în același arbore de directoare, dar au sisteme de fișiere subiacente diferite.

Citeste si  Cum se dezactivează „amintirile” nedorite în Apple Photos, Google Photos și Facebook

LEGATE DE: Ce sistem de fișiere ar trebui să folosesc pentru unitatea mea USB?

Utilizarea getconf în Scripturi

Putem încorpora cu ușurință ieșirea din getconf în deciziile din scripturile noastre shell.

De exemplu, pentru a efectua diferite acțiuni în funcție de faptul dacă scriptul rulează pe un sistem de operare pe 32 sau 64 de biți, puteți utiliza o secțiune de script ca aceasta.

#!/bin/bash

# are we on a 32 or 64 bit OS?
if [ $(getconf LONG_BIT) = "64" ]
then
  # 64 bit
  echo "64-bit machine."
else
  # 32 bit
  echo "32-Bit machine."
fi

if declarația compară rezultatul getconf LONG_BIT comandă cu valoarea „64”. Dacă se potrivesc, then clauza este executată în caz contrar else clauza este executată. Puteți efectua acțiuni specifice versiunii în then/elseclauze sau setați steaguri variabile care pot fi verificate în altă parte a scriptului.

Copiați textul scriptului într-un editor și salvați fișierul ca „hw-test.sh”. Vom face scriptul executabil cu chmod comandă și -x (executabil) opțiune.

chmod +x hw-test.sh

Când rulăm scriptul, ne spune care dintre clauze au fost declanșate. Folosind această tehnică, puteți utiliza oricare dintre getconf valori pentru a vă direcționa scriptul să ia măsurile corespunzătoare.

./hw-test.sh

Opțiune Overkill

Numărul mare de valori care getconf poate raporta poate fi copleșitor. man pagina este surprinzător de scurtă. Dacă vă așteptați să enumere opțiunile și să le explice pe fiecare, veți fi dezamăgiți.

Veți găsi câteva descrieri în man pagini pentru sysconf și confstr. S-ar putea să fie nevoie să tăiați câteva caractere de pe partea din față a confstr intrări. De exemplu, acest lucru nu a funcționat:

getconf _CS_GNU_LIBC_VERSION

dar acest lucru a făcut:

getconf GNU_LIBC_VERSION

Veți găsi, de asemenea, câteva descrieri în fișierul „limits.h”. Dacă nu știți unde se află acel fișier în sistemul dvs., utilizați:

unde este limită.h 

You can then use less pentru a revizui acel fișier.

Share This Article
Leave a comment

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *