Scrivere script da eseguire su diversi computer Linux è difficile. Non si può presumere che avranno le stesse caratteristiche. il getconf
Il comando consente di controllare centinaia di impostazioni del sistema operativo e del file system.
Scripting con accreditamento hardware
Se in qualsiasi momento hai scritto uno script che dovrebbe essere eseguito su una gamma di macchine Linux, es factible que se haya enfrentado al dilema de “Strano, funziona bene sulla mia macchina …”. Piccole differenze tra l'architettura del computer, i sistemi operativi e i file system sui computer di destinazione possono impedire il corretto funzionamento degli script.
Se i tuoi script sono semplici e non fanno nulla, o prova ad iniziare, dipende dall'hardware supportato o da determinate capacità del file system, è possibile che non abbia mai un ostacolo. Ma più il tuo script diventa complesso, più critici sono i dettagli della macchina che esegue lo script. È anche importante notare che un singolo computer può avere diversi file system installati, montato in diverse parti dell'albero delle directory. Solo perché qualcosa funziona in una directory non significa che funzionerà allo stesso modo in un'altra directory.
il getconf
Il comando può segnalare letteralmente centinaia di diversi sistemi operativi e funzionalità del filesystem. Alcuni di questi assumono la forma di coppie di valori, uno con il massimo del sistema e l'altro con il minimo. Ciò significa che puoi testare il tuo file system o le impostazioni hardware per assicurarti che il tuo script reagisca di conseguenza..
In ogni caso, il tuo script non può essere utilizzato getconf
sul computer di destinazione se non è installato su quel computer. Tutte le distribuzioni che sono state testate durante la ricerca di questo post avevano getconf
già installato, incluso Ubuntu, Fedora e Manjaro. curiosamente, avevano tutti la stessa versione di getconf
Cosa c'è di più, la versione 2.33.
Iniziare con il comando getconf
Puoi controllare quello che hai getconf
installato sul tuo computer e scopri di che versione si tratta, usando il --version
opzione.
getconf --version
Per vedere quanti post getconf
può informare, Utilizzare il -a
(tutti) e incanalarlo attraverso il wc
comando. Questo conterà le linee, parole e caratteri nell'output.
getconf -a | WC
Ci sono 320 file all'uscita. Per visualizzare l'elenco completo in modo gestibile, canalizzeremo l'output su less
.
getconf -a | meno
Puoi scorrere avanti e indietro nell'elenco per vedere cosa getconf
può informare.
Alcuni degli articoli sono duplicati. Molti di loro possono essere chiamati con un nome più breve o con un nome più lungo conforme a POSIX.
Segnala valori univoci
Causa getconf
riferire su un unico valore, passa il nome del valore a getconf
sulla riga di comando. Nota che tutti i nomi alternativi sono in maiuscolo.
getconf LONG_BIT
il LONG_BIT
L'opzione informa se il kernel, e così, il tuo sistema operativo, è 32 pezzi di 64 bit. Non sono richiesti altri parametri per questo comando, solo l'opzione LONG_BIT stessa. Un altro semplice valore da segnalare è LOGIN_NAME_MAX
.
getconf LOGIN_NAME_MAX
È una lunghezza massima stranamente alta per un nome utente, ma è vero. Se volevi davvero creare un account utente con un nome utente ridicolmente lungo, potrebbe farlo. al contrario, Il nome host di questo computer ha una lunghezza massima di 64 caratteri:
getconf HOST_NAME_MAX
Per vedere quanti processi simultanei può eseguire un account utente, Utilizzare il CHILD_MAX
opzione:
getconf CHILD_MAX
il OPEN_MAX
value restituisce il numero massimo di file che una procedura può avere aperti.
getconf OPEN_MAX
Per visualizzare un sottoinsieme di getconf
valori possiamo usare il -a
(Tutto quanto) opzione per generare tutti i valori e utilizzare grep
per filtrare quelli che ci interessano. Come esempio, para ver todos los valores que disponen “NOME” nel tuo titolo, utilizzo:
getconf -a | grep NOME
Nello stesso modo, para ver todos los valores con “GRUPO” nel tuo titolo, utilizzo:
getconf -a | GRUPPO grip
Para ver los valores que disponen “INT_” nel tuo titolo, utilizzo:
getconf -a | grep _INT
Questo mostra i valori massimo e minimo che una variabile intera può contenere su questo computer.
IMPARENTATO: Come cercare con “grep” usando le stringhe in un file
Usa getconf con i valori del file system
Quando si utilizza una delle alternative associate alle funzionalità del file system, deve indicare getconf
su quale file system segnalare. Devi farlo anche se hai solo un singolo disco rigido e un singolo filesystem installato. il getconf
Il comando non assumerà nulla. Per indicare il file system getconf
deve informare, devi fornire un percorso a una directory su quel filesystem.
Per visualizzare la lunghezza massima di un nome file per il file system montato alla radice dell'albero delle directory del file system, scriba:
getconf NAME_MAX /
Per visualizzare l'output per un file system diverso, puntare a una directory situata nell'altro file system. Anche se non hai diversi file system montati in modo permanente nella tua struttura di directory, potresti ritrovarti con un altro filesystem temporaneamente allegato al tuo albero di directory.
Questo è esattamente ciò che accade quando inserisci una chiavetta USB, come in questo esempio. La tarjeta de memoria se llama “PINK” y está montada en “/ media / dave /”.
getconf NOME_MAX /media/dave/ROSA/
Possiamo controllare quale file system è sulla chiavetta USB usando il df
comando per vedere a quale dispositivo a blocchi è connesso. Successivamente usiamo il lsblk
comando con il -f
(File System) opzione.
df /media/dave/ROSA
lsblk -f /dev/sdb1
La scheda di memoria è un dispositivo di blocco. /dev/sdb1
e il file system è FAT32
. Ecco perché otterremo risultati diversi per due directory nello stesso albero di directory.. Sono nello stesso albero di directory, ma hanno file system sottostanti diversi.
IMPARENTATO: Quale file system dovrei usare per la mia unità USB?
Utilizzo di getconf negli script
Possiamo facilmente incorporare l'output di getconf
nelle decisioni all'interno dei nostri script di shell.
Come esempio, per eseguire azioni diverse a seconda che lo script sia in esecuzione su un sistema operativo di 32 pezzi di 64 bit, puede usar una sección de secuencia de comandos como esta.
#!/cestino/bash # are we on a 32 o 64 bit OS? Se [ $(getconf LONG_BIT) = "64" ] poi # 64 bit echo "64-bit machine." altro # 32 bit echo "32-Bit machine." essere
il if
declaración compara la salida de la getconf LONG_BIT
comando con el valor de “64”. Si coinciden, il 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 “hw-test.sh”. Renderemo eseguibile lo script con il chmod
comando e il -x
(eseguibile) opzione.
chmod +x hw-test.sh
Quando eseguiamo lo script, ci dice quale delle clausole è stata attivata. Usando questa tecnica, puoi usare uno qualsiasi dei getconf
valori per indirizzare il tuo script a intraprendere l'azione appropriata.
./hw-test.sh
Eccesso di alternative
Il gran numero di valori che getconf
può essere travolgente. il man
La pagina è sorprendentemente corta. Se ti aspetti che elenchi le alternative e le spieghi ciascuna, rimarrai deluso.
Troverai alcune descrizioni nel man
pagine per sysconf
e confstr
. Potrebbe essere necessario ritagliare alcuni caratteri dalla parte anteriore del confstr
Biglietti. Come esempio, questo non funziona:
getconf _CS_GNU_LIBC_VERSION
ma questo lo ha fatto:
getconf GNU_LIBC_VERSION
Además encontrará algunas descripciones en el archivo “limits.h”. Se non sai dove si trova quel file sul tuo sistema, utilizzo:
dove è limts.h
Prossimo, Puoi usare less
per controllare quel file.