Kuinka tallentaa ja toistaa Linux-pääteistuntoja komentosarjojen ja komentosarjojen komentojen avulla


Tässä oppaassa aiomme tutkia kuinka käyttää komentosarjaa ja komentosarjan toistokomentoja Linuxissa, jotka voivat auttaa sinua tallentamaan komentoja ja niiden lähtöä päätelaitteeseesi tietyn istunnon aikana.

Historia-komento on loistava komentorivin apuohjelma, joka auttaa käyttäjiä tallentamaan aiemmin käytetyn komennon, vaikka se ei tallenna komennon lähtöä.

Siksi komentokomento on kätevä tarjoamaan sinulle tehokkaan toiminnallisuuden, joka auttaa sinua tallentamaan kaiken päätelaitteeseesi tulostetun lokitiedostoon. Voit sitten viitata tähän tiedostoon myöhemmin, jos haluat tarkastella komennon lähtöä historiassa lokitiedostosta.

Voit myös toistaa komentoja, jotka nauhoitit komentosarjan komennolla, käyttämällä ajoitustietoja.

Kuinka tallentaa Linux-pääte komentokomennolla

Komentosarjakomento tallentaa pääteoperaatiot lokitiedostoon, jonka käyttäjä voi nimetä. Jos käyttäjä ei anna nimeä, käytetään oletustiedostonimeä, konekirjoitusta.

# script [options] - -timing=timing_file log_filename

Aloita Linux-päätelaitteen tallennus kirjoittamalla komentosarja ja lisäämällä lokitiedoston nimi kuvan osoittamalla tavalla.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

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

[email  ~ $ exit

Script done, file is history_log.txt

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

Esimerkiksi alla olevassa lähdössä tiedostotyyppikirjoituksen käyttöoikeudet eivät salli tiedoston lukemista, kirjoittamista ja suorittamista kenenkään käyttäjän tai ryhmän toimesta. Kun suoritat komentokomennon ilman lokitiedoston nimeä, se yrittää kirjoittaa oletustiedostoon, jolloin konekirjoitus näyttää virheen.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

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

[email  ~ $ script script.log

Yritä nyt suorittaa muutama komento, jotta skripti voi tallentaa suoritetut komennot päätelaitteeseen.

[email  ~ $ 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  ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 1.37, 1.56, 1.62
USER     TTY      FROM             [email    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  ~ $ uptime

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

[email  ~ $ whoami

tecmint

[email  ~ $ echo 'using script'

using script
[email  ~ $ exit
exit
Script done, file is script.log

Yritä nyt tarkastella kaikkien tallennettujen komentojen lokitiedostoa "script.log", kun taas tarkastelet lokia, huomaat, että komentosarja tallentaa myös rivin syötteet ja askelpalautin.

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

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

Voit käyttää -vaihtoehtoa lisätäksesi lokitiedoston tai konekirjoituksen säilyttäen aiemman sisällön.

[email  ~ $ script -a script.log
Script started, file is script.log

[email  ~ $ date
Wed Sep 16 14:59:36 IST 2015


[email  ~ $ pwd
/home/tecmint


[email  ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz


[email  ~ $ whatis script
script (1)           - make typescript of terminal session

Tarkastele komentosarjan sisältöä ja kirjaudu sen jälkeen, kun olet lisännyt -a-vaihtoehdon.

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

Voit kirjata yksittäisen komennon, joka ei ole vuorovaikutteinen komentoistunto, tulokset -c-vaihtoehdon avulla.

[email  ~ $ script -c 'hostname' script.log

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

Jos haluat komentosarjan suorittavan hiljaisessa tilassa, voit käyttää -q-vaihtoehtoa. Et näe viestiä, joka osoittaa komentosarjan alkavan tai poistuvan.

[email  ~ $ script -c 'who'  -q  script.log

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

Jos haluat asettaa ajoitustiedoksi vakiovirheen tai tiedoston, käytä –ajastusvaihtoehtoa. Ajoitustiedoista on hyötyä, kun haluat näyttää lokitiedostoon tallennetun tuotoksen uudelleen.

Aloitetaan komentosarja ja suoritetaan seuraavat tallennettavat komennot w, käyttöaika ja cal.

[email  ~ $ script --timing=time.txt script.log
Script started, file is script.log

[email  ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 1.38, 1.39, 1.47
USER     TTY      FROM             [email    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  ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 1.43, 1.40, 1.48

[email  ~ $ 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 script.log- ja time.txt-tiedostoja yllä olevalle ajoituskomennolle.

[email  ~ $ vi script.log
^[[0m^[[255D^[[01;[email ^[[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    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 ^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 1.29, 1.36, 1.45^M
^[[01;[email ^[[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

Katsele nyt time.txt-tiedostoa.

[email  ~ $ vi time.txt
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äisessä sarakkeessa näkyy, kuinka paljon aikaa on kulunut viimeisestä näytöstä, ja toisessa sarakkeessa näytetään tällä kertaa näytettyjen merkkien määrä.

Käytä man-sivua ja –help etsiäksesi lisää vaihtoehtoja ja apua komentosarjan komentorivin apuohjelman käytöstä.

Komentosarjojen toistaminen skriptien toistamiseksi ajoitustietojen avulla

Scriptreplay-komento auttaa toistamaan skriptikomennolla tallentamasi lokitiedoston tiedot.

Ajoitustiedot määritetään komentokomennon kanssa käytetyllä -timing = tiedosto -vaihtoehdolla, ja tiedosto tässä tapauksessa on tiedosto.txt, jota käytettiin komentokomennon kanssa.

Muista, että sinun on määritettävä komentokomennolla käyttämäsi lokitiedosto.

Toistetaan nyt viimeiset kolme käskyä w, uptime ja cal, jotka olemme suorittaneet, seuraavasti.

[email  ~ $ scriptreplay --timing=time.txt script.log

Kun lokitiedosto toistetaan uudelleen ajoitustietojen avulla, tallennetut komennot suoritetaan ja niiden lähtö näytetään samalla kun alkuperäinen lähtö näytettiin tallennuksen aikana.

Yhteenveto

Nämä kaksi komentoa, komentosarja ja komentosarjan toisto ovat helppokäyttöisiä ja auttavat paljon, kun joudut suorittamaan saman komentojoukon useita kertoja. Ne auttavat paljon sellaisten palvelimien hallinnassa, joilla on vain komentoriviliitäntä vuorovaikutuksessa järjestelmän kanssa. Toivottavasti tämä opas oli hyödyllinen, ja jos sinulla on jotain lisättävää tai haastetta niiden käytön aikana, älä epäröi lähettää kommenttia.