<Precedenti | Contenuti | Succ.>
Mantieni gli script in esecuzione
Durante lo sviluppo del nostro programma, è utile mantenerlo in uno stato eseguibile. In questo modo, e testandolo frequentemente, possiamo rilevare gli errori nelle prime fasi del processo di sviluppo. Questo renderà molto più semplice il debug dei problemi. Ad esempio, se eseguiamo il programma, apportiamo una piccola modifica, quindi lo eseguiamo di nuovo e troviamo un problema, è molto probabile che la modifica più recente sia la causa del problema. Aggiungendo le funzioni vuote, chiamate stub In termini di programmazione, possiamo verificare il flusso logico del nostro programma in una fase iniziale. Quando si costruisce uno stub, è una buona idea includere qualcosa che fornisca un feedback al programmatore, mostrando che il flusso logico viene eseguito correttamente. Se osserviamo ora l'output del nostro script:
[io@linuxbox~]$ pagina_info_sys
Rapporto informativo di sistema per twin2
[io@linuxbox~]$ pagina_info_sys
Rapporto informativo di sistema per twin2
Rapporto sulle informazioni di sistema per Linuxbox
Generato il 03/19/2009 04:02:10 EDT, da me
Rapporto sulle informazioni di sistema per Linuxbox
Generato il 03/19/2009 04:02:10 EDT, da me
Notiamo che ci sono alcune righe vuote nel nostro output dopo il timestamp, ma non possiamo esserne certi. Se modifichiamo le funzioni per includere un feedback:
report_uptime () {
echo "Funzione report_uptime eseguita."
ritorno
}
segnala_spazio_disco () {
echo "Funzione report_disk_space eseguita."
ritorno
}
segnala_spazio_domestico () {
echo "Funzione report_home_space eseguita."
ritorno
}
report_uptime () {
echo "Funzione report_uptime eseguita."
ritorno
}
segnala_spazio_disco () {
echo "Funzione report_disk_space eseguita."
ritorno
}
segnala_spazio_domestico () {
echo "Funzione report_home_space eseguita."
ritorno
}
ed esegui nuovamente lo script:
[io@linuxbox~]$ pagina_info_sys
Rapporto sulle informazioni di sistema per Linuxbox
Rapporto sulle informazioni di sistema per Linuxbox
Generato il 03/20/2009 05:17:26 AM EDT, da me Funzione report_uptime eseguita.
Funzione report_disk_space eseguita. Funzione report_home_space eseguita.
[io@linuxbox~]$ pagina_info_sys
Rapporto sulle informazioni di sistema per Linuxbox
Rapporto sulle informazioni di sistema per Linuxbox
Generato il 03/20/2009 05:17:26 AM EDT, da me Funzione report_uptime eseguita.
Funzione report_disk_space eseguita. Funzione report_home_space eseguita.
Mantieni gli script in esecuzione
ora vediamo che, di fatto, le nostre tre funzioni vengono eseguite.
Con il nostro framework di funzioni in atto e funzionante, è il momento di sviluppare parte del codice della funzione. Per prima cosa, il segnala_tempo_di_attività funzione:
report_uptime () {
gatto <<- _EOF_
Tempo di attività del sistema
$(tempo di attività)
_EOF_
ritorno
}
report_uptime () {
gatto <<- _EOF_
Tempo di attività del sistema
$(tempo di attività)
_EOF_
ritorno
}
È piuttosto semplice. Usiamo un documento here per generare un'intestazione di sezione e l'output del uptime comando, circondato da tag per preservare la formattazione del comando. Il segnala_spazio_disco la funzione è simile:
segnala_spazio_disco () {
gatto <<- _EOF_
Utilizzo dello spazio su disco
$(df -h)
_EOF_
ritorno
}
segnala_spazio_disco () {
gatto <<- _EOF_
Utilizzo dello spazio su disco
$(df -h)
_EOF_
ritorno
}
Questa funzione utilizza il df -h comando per determinare la quantità di spazio su disco. Infine, creeremo il segnala_spazio_domestico funzione:
segnala_spazio_domestico () {
gatto <<- _EOF_
Utilizzo dello spazio domestico
$(du -sh /home/*)
_EOF_
ritorno
}
segnala_spazio_domestico () {
gatto <<- _EOF_
Utilizzo dello spazio domestico
$(du -sh /home/*)
_EOF_
ritorno
}
Usiamo il du comando con il -SH opzioni per eseguire questa attività. Questa, tuttavia, non è una soluzione completa al problema. Mentre funzionerà su alcuni sistemi (Ubuntu, ad esempio), non funzionerà su altri. Il motivo è che molti sistemi impostano i permessi delle directory home per impedirne la lettura da parte di tutti, il che è una ragionevole misura di sicurezza. Su questi sistemi, segnala_spazio_domestico la funzione, come scritta, sarà
Funziona solo se il nostro script viene eseguito con privilegi di superutente. Una soluzione migliore sarebbe quella di far sì che lo script modifichi il suo comportamento in base ai privilegi dell'utente. Approfondiremo questo argomento nel prossimo capitolo.
Funzioni shell nel file .bashrc
Le funzioni shell sono ottimi sostituti degli alias e sono in realtà il metodo preferito per creare piccoli comandi per uso personale. Gli alias sono molto limitati nel tipo di comandi e nelle funzionalità shell che supportano, mentre le funzioni shell consentono qualsiasi cosa che possa essere programmata. Ad esempio, se ci piacesse il segnala_spazio_disco funzione shell che abbiamo sviluppato per il nostro script, potremmo creare una funzione simile denominata ds per il nostro .bashrc file:
ds () {
echo "Utilizzo dello spazio su disco per $HOSTNAME" df -h
}