A volte gli amministratori di sistema e gli sviluppatori devono utilizzare molti comandi complessi e lunghi per eseguire un'attività critica. La maggior parte degli utenti copierà quei comandi e l'output generato da quei rispettivi comandi in un file di testo per la revisione o un riferimento futuro. Ovviamente, la funzione "storia" della shell ti aiuterà a ottenere l'elenco dei comandi utilizzati in passato, ma non ti aiuterà a ottenere l'output generato per quei comandi.
Fortunatamente esiste un'utilità semplice e che consente di risparmiare tempo nota come script che fa questo lavoro per te. Il comando di script fa il suo lavoro tranquillamente eseguendo in background. Questa utilità è un must quando solo l'interfaccia della riga di comando è disponibile per i server che gestisci. Questo articolo ne esplora l'utilizzo con esempi.
Avvio delle attività di registrazione di una sessione terminale
Basta digitare "script" sulla riga di comando:
$ script
Viene visualizzato un messaggio di avvio "Script avviato, file dattiloscritto" come segue:
$ script Script started, file is typescript $
Ora il comando script inizia a registrare i comandi dell'utente in background fino a quando un utente non immette "exit" o premi Control-D per interrompere la registrazione.
$ exit
Tutto ciò che si trova tra il comando "script" e il comando "exit" viene registrato in un file nella directory corrente per impostazione predefinita. Eseguiamo alcuni comandi e vediamo come lo script memorizza i comandi e l'output corrispondente come segue:
Nella schermata sopra, il comando di script viene eseguito con i comandi "free –h" e "vmstat". Una volta che l'utente esce dalla registrazione digitando “exit” o Ctrl+D, tutti i comandi eseguiti e il rispettivo output vengono registrati nel file “typescript” nella directory di lavoro attuale. Così semplice ma sorprendente!
Registrazione delle attività in un file
È buona norma memorizzare la sessione di registrazione dello script in un file definito dall'utente con un timestamp in modo che sia utile farvi riferimento in un secondo momento. Per questo, il comando script deve essere eseguito fornendo il nome del file desiderato come argomento seguente:$ script
Di seguito lo screenshot cattura il modo in cui la registrazione viene archiviata nel file di registro fornito dall'utente:
Aggiungere le attività di registrazione in un file esistente
Potrebbe essere necessario aggiungere la cronologia delle registrazioni in un file di registro esistente. Per questo, il comando script deve essere eseguito fornendo il nome del file con l'opzione "-a" che indica l'operazione di aggiunta.
$ script –a <existing_file_name>
Più opzioni possono essere ottenute dalla pagina man dello script.
Conclusione
Non è consigliabile eseguire il comando script in shell non interattive. Il comando script memorizza tutto (caratteri di controllo come linefeed) nel file di registro. Se la variabile di ambiente SHELL è impostata, la shell viene biforcuta dallo script. Se non è impostata, la shell Bourne viene assunta come predefinita. Se non viene fornito alcun nome file di registro allo script, verrà utilizzato un file predefinito, dattiloscritto. Il comando script si lamenta se non è possibile creare il file di registro fornito. Se il file di registro specificato esiste già e l'opzione "–a" non viene utilizzata, il vecchio file verrà sovrascritto.