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.

    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.

    Citeste si  Fără ID apelant: Cum să știi cine a sunat

    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  Cele mai bune 5 instrumente de analiză comparativă pentru Windows - Review Geek

    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 să creați un folder nou în Gmail

    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.

    Alin Tripon Fondator NewIT.ro, pasionat de tehnologie, maşini, divertisment, ştiinţa şi jocuri video, am creat acest portal de ştiri it, tutoriale, ghiduri şi alte informații utile. Pasionat de lumea digitală și cultura tech, în timpul liber îmi îmbogățesc cunoștințele ce țin de marketing digital, în special SEO.

    Leave A Reply