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