In questa guida vedremo come utilizzare uno script e sceneggiatura comandi in Linux che possono aiutarti a registrare i comandi e il loro output stampato sul tuo terminale durante una determinata sessione.


Il comando history è un'ottima utility da riga di comando che aiuta gli utenti a memorizzare il comando precedente utilizzato, sebbene non memorizzi l'output di un comando.
Don' t Signorina: Showterm.io – Uno strumento di registrazione del terminale Linux
Don' t Signorina: 8 migliori registratori di schermo desktop per Linux
Quindi lo script comando è utile per fornirti una potente funzionalità che ti aiuta a registrare tutto ciò che viene stampato sul tuo terminale in un file_log . Puoi quindi fare riferimento a questo file in seguito nel caso in cui desideri visualizzare l'output di un comando nella cronologia dal file_log .
Puoi anche riprodurre i comandi che hai registrato utilizzando scriptreplay comando utilizzando un'informazione di temporizzazione.
Come registrare un terminale Linux usando il comando script
Il script comando memorizza le attività del terminale in un file di registro che può essere nominato da un utente, quando un nome non è fornito da un utente, il nome del file predefinito, dattiloscritto viene utilizzato.
Sintassi di base del comando script
# script [options] - -timing=timing_file log_filename
Per avviare la registrazione del terminale Linux, digita script e aggiungi il log nomefile come mostrato.
[email protected] ~ $ script history_log.txt Script started, file is history_log.txt
Per interrompere script , digita esci e premi [Invio] .
[email protected] ~ $ exit Script done, file is history_log.txt
Se lo script non può scrivere nel file di registro denominato, mostra un errore.
Ad esempio, nell'output seguente, i permessi del file dattiloscritto non consente la lettura, la scrittura e l'esecuzione del file da parte di nessun utente o gruppo. Quando esegui il comando script senza un nome di file di registro, tenta di scrivere nel file predefinito, dattiloscritto quindi mostrando un errore.
[email protected] ~ $ ls -l typescript --------- 1 ubuntu ubuntu 144 Sep 15 00:00 typescript [email protected] ~ $ script script: open failed: typescript: Permission denied Terminated
Esempi di utilizzo del comando script
Ho chiamato il mio file di registro script.log nell'esempio seguente, puoi assegnare al tuo file un nome diverso.
[email protected] ~ $ script script.log
Ora prova a eseguire alcuni comandi per consentire allo script di registrare i comandi eseguiti sul terminale.
[email protected] ~ $ cal September 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [email protected] ~ $ w 14:49:40 up 4:06, 2 users, load average: 1.37, 1.56, 1.62 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT tecmint tty8 :0 10:45 4:06m 7:40 0.36s x-session-manager tecmint pts/5 :0 13:42 4.00s 0.07s 0.00s script script.log [email protected] ~ $ uptime 14:49:43 up 4:06, 2 users, load average: 1.37, 1.56, 1.62 [email protected] ~ $ whoami tecmint [email protected] ~ $ echo 'using script' using script [email protected] ~ $ exit exit Script done, file is script.log
Ora prova a visualizzare il file di registro "script.log ' per tutti i comandi registrati, mentre visualizzi il log ti accorgi che lo script memorizza anche avanzamenti di riga e backspace.
[email protected] ~ $ vi script.log
Risultato campione
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M September 2015 ^M Su Mo Tu We Th Fr Sa ^M 1 2 3 4 5 ^M 6 7 8 9 10 11 12 ^M 13 14 15 ^[[7m16^[[27m 17 18 19 ^M 20 21 22 23 24 25 26 ^M 27 28 29 30 ^M ^M ^[[01;[email protected]^[[01;34m ~ $^[[00m w^M 14:49:40 up 4:06, 2 users, load average: 1.37, 1.56, 1.62^M USER TTY FROM [email protected] IDLE JCPU PCPU WHAT^M tecmint tty8 :0 10:45 4:06m 7:40 0.36s x-session-manager^M tecmint pts/5 :0 13:42 4.00s 0.07s 0.00s script script.log^M ^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M 14:49:43 up 4:06, 2 users, load average: 1.37, 1.56, 1.62^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whoami^M tecmint^M ^[[01;[email protected]^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M using script^M ^[[01;[email protected]^[[01;34m ~ $^[[00m exit^M exit^M Script done on Wednesday 16 September 2015 02:49:59 PM IST ~
Puoi usare il -a opzione per aggiungere il file di registro o dattiloscritto, mantenendo i contenuti precedenti.
[email protected] ~ $ script -a script.log Script started, file is script.log [email protected] ~ $ date Wed Sep 16 14:59:36 IST 2015 [email protected] ~ $ pwd /home/tecmint [email protected] ~ $ whereis script script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz [email protected] ~ $ whatis script script (1) - make typescript of terminal session
Visualizza il contenuto dello script, accedi dopo aver utilizzato -a opzione per aggiungerlo.
[email protected] ~ $ vi script.log
Risultato campione
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m date^M Wed Sep 16 14:59:36 IST 2015^M ^[[01;[email protected]^[[01;34m ~ $^[[00m pwd^M /home/tecmint^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whre^H^[[K^H^[[Kereis script^M script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whatis script^M script (1) - make typescript of terminal session^M ^[[01;[email protected]^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M exit^M
Per registrare i risultati di un singolo comando diverso da una sessione di shell interattiva, usa -c opzione.
[email protected] ~ $ script -c 'hostname' script.log Script started, file is script.log tecmint.com Script done, file is script.log
Se desideri che lo script venga eseguito in modalità non interattiva, puoi utilizzare -q opzione. Non vedrai un messaggio che mostra l'avvio o la chiusura dello script.
[email protected] ~ $ script -c 'who' -q script.log tecmint tty8 2015-09-16 10:45 (:0) tecmint pts/5 2015-09-16 13:42 (:0)
Per impostare le informazioni sui tempi su un errore standard o su un file, usa il –tempo opzione. Le informazioni sui tempi sono utili quando si desidera visualizzare nuovamente l'output memorizzato nel file_log.
Avviamo lo script ed eseguiamo i seguenti comandi w , tempo di attività e cal da registrare.
[email protected] ~ $ script --timing=time.txt script.log Script started, file is script.log [email protected] ~ $ w 15:09:31 up 4:26, 2 users, load average: 1.38, 1.39, 1.47 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT tecmint tty8 :0 10:45 4:26m 8:15 0.38s x-session-manager tecmint pts/5 :0 13:42 3.00s 0.09s 0.00s script --timing=time.txt script.log [email protected] ~ $ uptime 15:09:36 up 4:26, 2 users, load average: 1.43, 1.40, 1.48 [email protected] ~ $ cal September 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Puoi visualizzare script.log e time.txt file per il comando di temporizzazione sopra.
[email protected] ~ $ vi script.log
Risultato campione
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m w^M 15:12:05 up 4:28, 2 users, load average: 1.31, 1.37, 1.45^M USER TTY FROM [email protected] IDLE JCPU PCPU WHAT^M tecmint tty8 :0 10:45 4:28m 8:20 0.38s x-session-manager^M tecmint pts/5 :0 13:42 5.00s 0.09s 0.00s script --timing=time.txt script.log^M ^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M 15:12:07 up 4:28, 2 users, load average: 1.29, 1.36, 1.45^M ^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M September 2015 ^M Su Mo Tu We Th Fr Sa ^M 1 2 3 4 5 ^M 6 7 8 9 10 11 12 ^M 13 14 15 ^[[7m16^[[27m 17 18 19 ^M 20 21 22 23 24 25 26 ^M 27 28 29 30 ^M ^M
Ora visualizza time.txt file.
[email protected] ~ $ vi time.txt
Risultato campione
0.259669 306 0.037680 829 0.000006 2 0.000002 100 0.000002 2 0.000002 102 0.000019 202 0.000004 2 0.000002 102 0.000015 100 0.000002 2 0.000003 2 0.000002 99 0.000011 2 0.000003 82 ...
Il time.txt il file ha due colonne, la prima colonna mostra quanto tempo è trascorso dall'ultima visualizzazione e la seconda colonna mostra il numero di caratteri che sono stati visualizzati questa volta.
Usa la pagina man e –help per cercare più opzioni e aiuto nell'uso dell'utilità della riga di comando dello script.
Utilizzo di scriptreplay per riprodurre gli script utilizzando le informazioni sui tempi
La sceneggiatura comando aiuta a riprodurre le informazioni nel tuo file_registro registrato dallo script comando.
Le informazioni sui tempi sono definite da -timing=file opzione utilizzata con lo script comando e file in questo caso è file.txt che è stato utilizzato con il comando script .
Ricorda che devi specificare il file_log hai usato con il comando script.
Riproduciamo ora gli ultimi tre comandi w , tempo di attività e cal che avevamo eseguito come segue.
[email protected] ~ $ scriptreplay --timing=time.txt script.log


Quando il file_registro riprodotti utilizzando le informazioni di temporizzazione, i comandi registrati vengono eseguiti e il loro output viene visualizzato nello stesso momento in cui è stato visualizzato l'output originale durante la registrazione.
Riepilogo
Questi due comandi, script e sceneggiatura facile da usare e di grande aiuto quando è necessario eseguire lo stesso batch di comandi più volte. Aiutano molto nella gestione dei server che hanno solo un'interfaccia a riga di comando per l'interazione con il tuo sistema. Spero che questa guida sia stata utile e se hai qualcosa da aggiungere o affronti una sfida durante l'utilizzo, non esitare a pubblicare un commento.