Kuinka tallentaa ja toistaa Linux-pääteistuntoja käyttämällä script- ja scriptreplay-komentoja


Tässä oppaassa tarkastellaan, kuinka voit käyttää script- ja scriptreplay-komentoja Linuxissa, jotka voivat auttaa sinua tallentamaan komentoja ja niiden tulosteita, jotka tulostetaan päätteeseesi tietyn ajan. istunto.

Historia-komento on loistava komentorivityökalu, joka auttaa käyttäjiä tallentamaan aiemman käytetyn komennon, vaikka se ei tallenna komennon tulosta.

Älä missaa: Showterm.io – Linux-päätteen tallennustyökalu

Älä missaa: 8 parasta työpöytänäytön tallenninta Linuxille

Siksi script-komento on hyödyllinen tarjoamaan sinulle tehokkaan toiminnon, jonka avulla voit tallentaa kaiken päätelaitteellesi tulostetun log_file-tiedostoon. Voit sitten viitata tähän tiedostoon myöhemmin, jos haluat tarkastella historiassa olevan komennon tulosta log_file-tiedostosta.

Voit myös toistaa scriptreplay-komennolla tallentamasi komennot käyttämällä ajoitustietoja.

Kuinka tallentaa Linux-pääte komentosarjakomennolla

script-komento tallentaa päätetoiminnot lokitiedostoon, jonka käyttäjä voi nimetä. Kun käyttäjä ei ole antanut nimeä, käytetään oletustiedoston nimeä, konekirjoitus. .

Komentosarjakomennon perussyntaksi

script [options] - -timing=timing_file log_filename

Aloita Linux-päätteen tallentaminen kirjoittamalla script ja lisäämällä lokin tiedostonimi kuvan mukaisesti.


tecmint@tecmint ~ $ script history_log.txt

Script started, file is history_log.txt

Pysäytä skripti kirjoittamalla exit ja painamalla [Enter].


tecmint@tecmint ~ $ exit

Script done, file is history_log.txt

Jos komentosarja ei voi kirjoittaa nimettyyn lokitiedostoon, se näyttää virheen.

Esimerkiksi alla olevassa tulosteessa tiedoston typescript käyttöoikeudet eivät salli tiedoston lukemista, kirjoittamista ja suorittamista muiden käyttäjien tai ryhmien toimesta. Kun suoritat komentosarjakomennon ilman lokitiedoston nimeä, se yrittää kirjoittaa oletustiedostoon, kirjoituskirjoitus, mikä näyttää virheen.


tecmint@tecmint ~ $ ls -l typescript

--------- 1 ubuntu ubuntu 144 Sep 15 00:00 typescript

tecmint@tecmint ~ $ script

script: open failed: typescript: Permission denied
Terminated

Esimerkkejä script-komennon käytöstä

Olen nimennyt lokitiedostolleni script.log alla olevassa esimerkissä, voit antaa tiedostollesi toisen nimen.


tecmint@tecmint ~ $ script script.log

Yritä nyt suorittaa muutamia komentoja, jotta skripti voi tallentaa suoritetut komennot terminaaliin.


tecmint@tecmint ~ $ 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           
                      
tecmint@tecmint ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             LOGIN@   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

tecmint@tecmint ~ $ uptime

 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62

tecmint@tecmint ~ $ whoami

tecmint

tecmint@tecmint ~ $ echo 'using script'

using script
tecmint@tecmint ~ $ exit
exit
Script done, file is script.log

Yritä nyt tarkastella kaikkien tallennettujen komentojen lokitiedostoa script.log. Kun tarkastelet lokia, huomaat, että komentosarja tallentaa myös rivinsiirrot ja askelpalautit.


tecmint@tecmint ~ $ vi script.log
Näytelähtö

^[[0m^[[255D^[[01;32mtecmint@tecmint^[[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;32mtecmint@tecmint^[[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             LOGIN@   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;32mtecmint@tecmint^[[01;34m ~ $^[[00m uptime^M
 14:49:43 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62^M
^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m whoami^M
tecmint^M
^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M
using script^M
^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m exit^M
exit^M

Script done on Wednesday 16 September 2015 02:49:59 PM IST
~                                                              

Voit käyttää -a-vaihtoehtoa lokitiedoston tai konekirjoituksen liittämiseen säilyttäen aiemman sisällön.


tecmint@tecmint ~ $ script -a script.log
Script started, file is script.log

tecmint@tecmint ~ $ date
Wed Sep 16 14:59:36 IST 2015


tecmint@tecmint ~ $ pwd
/home/tecmint


tecmint@tecmint ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz


tecmint@tecmint ~ $ whatis script
script (1)           - make typescript of terminal session

Tarkastele komentosarjan sisältöä, kirjaudu sisään, kun olet lisännyt sen käyttämällä -a-vaihtoehtoa.


tecmint@tecmint ~ $ vi script.log
Näytelähtö

^[[0m^[[255D^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m date^M
Wed Sep 16 14:59:36 IST 2015^M
^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m pwd^M
/home/tecmint^M
^[[01;32mtecmint@tecmint^[[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;32mtecmint@tecmint^[[01;34m ~ $^[[00m whatis script^M
script (1)           - make typescript of terminal session^M
^[[01;32mtecmint@tecmint^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M
exit^M

Jos haluat kirjata tulokset yksittäisestä komennosta, joka ei ole interaktiivinen komentotulkkiistunto, käytä -c-vaihtoehtoa.


tecmint@tecmint ~ $ script -c 'hostname' script.log

Script started, file is script.log
linux-console.net
Script done, file is script.log

Jos haluat skriptin toimivan hiljaisessa tilassa, voit käyttää -q-vaihtoehtoa. Et näe viestiä siitä, että skripti alkaa tai lopettaa.


tecmint@tecmint ~ $ script -c 'who'  -q  script.log

tecmint  tty8         2015-09-16 10:45 (:0)
tecmint  pts/5        2015-09-16 13:42 (:0)

Aseta ajoitustiedot vakiovirheiksi tai tiedostoksi –ajoitus-vaihtoehdolla. Ajoitustiedot ovat hyödyllisiä, kun haluat näyttää uudelleen lokitiedostoon tallennetun tulosteen.

Aloitetaan komentosarja ja suoritetaan seuraavat komennot w, uptime ja cal, jotka tallennetaan.


tecmint@tecmint ~ $ script --timing=time.txt script.log
Script started, file is script.log

tecmint@tecmint ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             LOGIN@   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

tecmint@tecmint ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

tecmint@tecmint ~ $ 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    

Voit tarkastella yllä olevan ajoituskomennon script.log- ja time.txt-tiedostoja.


tecmint@tecmint ~ $ vi script.log
Näytelähtö

^[[0m^[[255D^[[01;32mtecmint@tecmint^[[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             LOGIN@   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;32mtecmint@tecmint^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;32mtecmint@tecmint^[[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

Näytä nyt time.txt-tiedosto.


tecmint@tecmint ~ $ vi time.txt
Näytelähtö

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
...

time.txt-tiedostossa on kaksi saraketta. Ensimmäinen sarake näyttää, kuinka paljon aikaa on kulunut edellisestä näytöstä, ja toinen sarake näyttää tällä kertaa näytettyjen merkkien määrän.

Käytä man-sivua ja –help-toimintoa etsiäksesi lisää vaihtoehtoja ja ohjeita skriptin komentorivityökalun käyttöön.

Skriptien uudelleentoiston käyttäminen ajoitustietojen avulla

scriptreplay-komento auttaa toistamaan script-komennolla tallennettuja log_file-tietoja.

Ajoitustiedot määrittää -timing=file-vaihtoehto, jota käytetään script-komennon kanssa, ja tiedosto on tässä tapauksessa file.txt jota käytettiin komentosarjakomennon kanssa .

Muista, että sinun on määritettävä log_file, jota käytit komentosarjakomennon kanssa.

Toistetaan nyt kolme viimeisintä komentoa w, uptime ja cal, jotka olimme suorittaneet seuraavasti.


tecmint@tecmint ~ $ scriptreplay --timing=time.txt script.log

Kun log_file toistetaan uudelleen ajoitustietojen avulla, tallennetut komennot suoritetaan ja niiden tulos näytetään samalla, kun alkuperäinen tulos näytettiin tallennuksen aikana.

Yhteenveto

Nämä kaksi komentoa, script ja scriptreplay ovat helppokäyttöisiä ja auttavat paljon, kun sinun täytyy suorittaa sama komentosarja useita kertoja. Ne auttavat paljon sellaisten palvelimien hallinnassa, joissa on vain komentorivikäyttöliittymä vuorovaikutukseen järjestelmän kanssa. Toivottavasti tämä opas oli hyödyllinen, ja jos sinulla on jotain lisättävää tai jos sinulla on haasteita käyttäessäsi niitä, älä epäröi kommentoida.