Kaip įrašyti ir pakartoti „Linux“ terminalo seansus naudojant scenarijų ir scenarijų atkūrimo komandas


Šiame vadove mes nagrinėsime, kaip naudoti scenarijus ir scenarijų atkūrimo komandas sistemoje „Linux“, kurie gali padėti įrašyti komandas ir jų išvestį, išspausdintą jūsų terminale per tam tikrą sesiją.

„History“ komanda yra puikus komandinės eilutės įrankis, padedantis vartotojams išsaugoti ankstesnę komandą, nors ji nesaugo komandos išvesties.

Todėl scenarijaus komanda yra naudinga ir suteikia jums galingą funkciją, padedančią įrašyti viską, kas atspausdinta jūsų terminale, į log_file. Vėliau galite kreiptis į šį failą vėliau, jei norite peržiūrėti komandos išvestį istorijoje iš log_file.

Taip pat galite pakartoti komandas, kurias įrašėte naudodami komandą „scriptreplay“, naudodami laiko informaciją.

Kaip įrašyti „Linux“ terminalą naudojant scenarijaus komandą

Scenarijaus komanda terminalo veiklą saugo žurnalo faile, kurį gali įvardyti vartotojas, kai vartotojo nepateikia vardo, naudojamas numatytasis failo pavadinimas, mašinraštis.

# script [options] - -timing=timing_file log_filename

Norėdami pradėti įrašyti „Linux“ terminalą, įveskite scenarijų ir pridėkite žurnalo failo pavadinimą, kaip parodyta.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

Norėdami sustabdyti scenarijų, įveskite exit ir paspauskite [Enter].

[email  ~ $ exit

Script done, file is history_log.txt

Jei scenarijus negali rašyti į pavadintą žurnalo failą, tai rodo klaidą.

Pvz., Žemiau esančiame išvestyje failo mašinraščio leidimai neleidžia skaityti, rašyti ir vykdyti failą jokiam vartotojui ar grupei. Kai vykdote scenarijaus komandą be žurnalo failo pavadinimo, ji bando rašyti į numatytąjį failą, todėl mašinraštis rodo klaidą.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

Toliau pateiktame pavyzdyje aš pavadinau savo žurnalo failą script.log. Savo failui galite suteikti kitą pavadinimą.

[email  ~ $ script script.log

Dabar pabandykite įvykdyti keletą komandų, kad scenarijus galėtų įrašyti įvykdytas komandas terminale.

[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

Dabar pabandykite peržiūrėti visų įrašytų komandų žurnalo failą „script.log“, o peržiūrėdami žurnalą suprantate, kad scenarijus taip pat saugo eilučių tiekimą ir atgalinį klavišą.

[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
~                                                              

Galite naudoti parinktį -a, norėdami pridėti žurnalo failą arba mašinraštį, išlaikydami ankstesnį turinį.

[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

Peržiūrėkite scenarijaus turinį, prisijunkite naudodami -a parinktį, kad jį pridėtumėte.

[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

Norėdami užregistruoti vienos komandos, išskyrus interaktyvią apvalkalo sesiją, rezultatus naudokite parinktį -c.

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

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

Jei norite, kad scenarijus veiktų ramiuoju režimu, galite naudoti -q parinktį. Nematysite pranešimo, rodančio, kad scenarijus pradedamas arba baigiamas.

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

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

Norėdami nustatyti laiko informacijos standartinę klaidą arba failą, naudokite parinktį –timing. Laiko informacija yra naudinga, kai norite iš naujo parodyti išvestį, saugomą „log_file“.

Pradėkime scenarijų ir vykdykime šias komandas w, uptime ir cal, kurias reikia įrašyti.

[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    

Galite peržiūrėti aukščiau esančią laiko komandos komandą script.log ir time.txt.

[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

Dabar peržiūrėkite time.txt failą.

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

Failas „time.txt“ turi du stulpelius, pirmas stulpelis rodo, kiek laiko praėjo nuo paskutinio rodymo, o antrasis stulpelis rodo simbolių, kurie buvo parodyti šį kartą, skaičių.

Norėdami ieškoti daugiau parinkčių ir pagalbos naudodami scenarijaus komandinės eilutės įrankį, naudokitės vadovo puslapiu ir –help.

Scenarijų atkūrimo naudojimas norint atkurti scenarijus naudojant laiko informaciją

„Scriptreplay“ komanda padeda atkurti informaciją „log_file“, įrašytą scenarijaus komandos.

Laiko informaciją apibrėžia parinktis -timing = file, naudojama kartu su scenarijaus komanda, o failas šiuo atveju yra file.txt, kuris buvo naudojamas kartu su scenarijaus komanda.

Atminkite, kad turite nurodyti žurnalo failą, kurį naudojote naudodami scenarijaus komandą.

Dabar pakartokime paskutines tris komandas w, uptime ir cal, kurias vykdėme, taip.

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

Kai „log_file“ atkuriama naudojant laiko informaciją, įrašytos komandos vykdomos ir jų išvestis rodoma tuo pačiu metu, kai įrašant buvo rodoma pradinė išvestis.

Santrauka

Šios dvi komandos, scenarijus ir scenarijų grojimas yra lengvai naudojami ir labai padeda, kai jums reikia kelis kartus paleisti tą pačią komandų grupę. Jie labai padeda tvarkant serverius, kurie turi tik komandinės eilutės sąsają sąveikai su jūsų sistema. Tikimės, kad šis vadovas buvo naudingas. Jei juos naudodami turite ką pridėti ar susidurti su iššūkiu, nedvejodami paskelbkite komentarą.