ວິທີການບັນທຶກແລະ Replay Linux Terminal Sessions ໂດຍໃຊ້ script ແລະ scriptreplay Commands


ໃນຄູ່ມືນີ້ພວກເຮົາຈະມາເບິ່ງວິທີການໃຊ້ ຄຳ ສັ່ງ script ແລະ scriptreplay ໃນ Linux ເຊິ່ງສາມາດຊ່ວຍທ່ານໃນການບັນທຶກ ຄຳ ສັ່ງແລະຜົນໄດ້ຮັບຂອງມັນທີ່ຖືກພິມໄວ້ໃນປາຍຂອງທ່ານໃນຊ່ວງທີ່ ກຳ ນົດໃຫ້.

ຄຳ ສັ່ງປະຫວັດສາດແມ່ນ ຄຳ ສັ່ງທີ່ມີປະໂຫຍດສູງທີ່ຊ່ວຍໃຫ້ຜູ້ໃຊ້ສາມາດເກັບຮັກສາ ຄຳ ສັ່ງທີ່ເຄີຍໃຊ້ມາກ່ອນ, ເຖິງແມ່ນວ່າມັນຈະບໍ່ເກັບຜົນຜະລິດຂອງ ຄຳ ສັ່ງ.

ດັ່ງນັ້ນ ຄຳ ສັ່ງ script ຈະມີປະສິດຕິພາບທີ່ຈະຊ່ວຍໃຫ້ທ່ານສາມາດບັນທຶກທຸກສິ່ງທຸກຢ່າງທີ່ພິມຢູ່ປາຍຍອດຂອງທ່ານໄປຍັງ log_file. ຈາກນັ້ນທ່ານສາມາດອ້າງອີງໃສ່ເອກະສານນີ້ໃນພາຍຫລັງໃນກໍລະນີທີ່ທ່ານຕ້ອງການເບິ່ງຜົນຂອງ ຄຳ ສັ່ງໃນປະຫວັດສາດຈາກ log_file.

ທ່ານຍັງສາມາດຂຽນ ຄຳ ສັ່ງທີ່ທ່ານໄດ້ບັນທຶກໂດຍໃຊ້ ຄຳ ສັ່ງ scriptreplay ໂດຍໃຊ້ຂໍ້ມູນກ່ຽວກັບເວລາ.

ວິທີການບັນທຶກ Linux Terminal ໂດຍໃຊ້ script Command

ຕົວອັກສອນ ຄຳ ສັ່ງເກັບກິດຈະ ກຳ ຢູ່ປາຍທາງໃນແຟ້ມ log ທີ່ສາມາດຕັ້ງຊື່ໂດຍຜູ້ໃຊ້, ໃນເວລາທີ່ຊື່ຜູ້ໃຊ້ບໍ່ຖືກສະ ໜອງ ໃຫ້, ຊື່ແຟ້ມຕົ້ນ, ຊື່ເອກະສານປະເພດຖືກ ນຳ ໃຊ້.

# script [options] - -timing=timing_file log_filename

ເພື່ອເລີ່ມຕົ້ນການບັນທຶກ Linux terminal, ພິມ script ແລະເພີ່ມ logename ດັ່ງທີ່ສະແດງໄວ້.

[email  ~ $ script history_log.txt

Script started, file is history_log.txt

ເພື່ອຢຸດສະຄຣິບ, ພິມການອອກແລະກົດ [Enter].

[email  ~ $ exit

Script done, file is history_log.txt

ຖ້າສະຄິບບໍ່ສາມາດຂຽນໃສ່ແຟ້ມ log ທີ່ມີຊື່ແລ້ວມັນຈະສະແດງຂໍ້ຜິດພາດ.

ຍົກຕົວຢ່າງ, ໃນຜົນໄດ້ຮັບຂ້າງລຸ່ມ, ການອະນຸຍາດຂອງເອກະສານປະເພດເອກະສານບໍ່ອະນຸຍາດໃຫ້ອ່ານ, ຂຽນແລະປະຕິບັດເອກະສານບໍ່ໄດ້ໂດຍຜູ້ໃຊ້ຫລືກຸ່ມໃດ ໜຶ່ງ. ໃນເວລາທີ່ທ່ານດໍາເນີນການຄໍາສັ່ງ script ໂດຍບໍ່ມີຊື່ໄຟລ໌ບັນທຶກ, ມັນພະຍາຍາມຂຽນກັບແຟ້ມຄ່າເລີ່ມຕົ້ນ, typecript ດັ່ງນັ້ນຈຶ່ງສະແດງຂໍ້ຜິດພາດ.

[email  ~ $ ls -l typescript

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

[email  ~ $ script

script: open failed: typescript: Permission denied
Terminated

ຂ້ອຍໄດ້ຕັ້ງຊື່ log file ຂອງຂ້ອຍ script.log ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ເຈົ້າສາມາດຕັ້ງຊື່ແຟ້ມຂອງເຈົ້າໃສ່ຊື່ອື່ນ.

[email  ~ $ script script.log

ຕອນນີ້ພະຍາຍາມປະຕິບັດ ຄຳ ສັ່ງ ຈຳ ນວນ ໜຶ່ງ ເພື່ອອະນຸຍາດໃຫ້ຂຽນບັນທຶກ ຄຳ ສັ່ງທີ່ປະຕິບັດຢູ່ໃນປາຍ.

[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

ດຽວນີ້ພະຍາຍາມເບິ່ງເອກະສານບັນທຶກ 'script.log' ສຳ ລັບ ຄຳ ສັ່ງທີ່ບັນທຶກໄວ້ທັງ ໝົດ, ໃນຂະນະທີ່ທ່ານເບິ່ງບັນທຶກທີ່ທ່ານຮູ້ວ່າສະຄິບຍັງເກັບຂໍ້ມູນເສັ້ນແລະພື້ນຫຼັງ.

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

ທ່ານອາດຈະໃຊ້ຕົວເລືອກ -a ເພື່ອເພີ່ມເອກະສານບັນທຶກຫຼື typecript, ເກັບຮັກສາເນື້ອໃນກ່ອນ ໜ້າ ນີ້.

[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

ເບິ່ງເນື້ອໃນຂອງຕົວ ໜັງ ສື, ລົງຫຼັງຈາກໃຊ້ຕົວເລືອກ -A ເພື່ອເພີ່ມເຕີມ

[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

ເພື່ອເຂົ້າສູ່ລະບົບຜົນໄດ້ຮັບຂອງຄໍາສັ່ງດຽວນອກ ເໜືອ ຈາກກອງປະຊຸມແບບໂຕ້ຕອບ, ໃຫ້ໃຊ້ຕົວເລືອກ -c.

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

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

ຖ້າທ່ານຕ້ອງການໃຫ້ script ດຳ ເນີນການໃນຮູບແບບທີ່ງຽບສະຫງົບແລ້ວທ່ານສາມາດໃຊ້ຕົວເລືອກ -q. ທ່ານຈະບໍ່ເຫັນຂໍ້ຄວາມທີ່ສະແດງໃຫ້ເຫັນວ່າຕົວອັກສອນ ກຳ ລັງເລີ່ມຫລືອອກ.

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

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

ເພື່ອ ກຳ ນົດຂໍ້ມູນກ່ຽວກັບການ ກຳ ນົດເວລາໃຫ້ເປັນຂໍ້ຜິດພາດມາດຕະຖານຫຼືແຟ້ມຂໍ້ມູນໃຊ້ຕົວເລືອກ –timing. ຂໍ້ມູນກ່ຽວກັບເວລາແມ່ນເປັນປະໂຫຍດເມື່ອທ່ານຕ້ອງການສະແດງຜົນຜະລິດທີ່ເກັບໄວ້ໃນ log_file.

ໃຫ້ພວກເຮົາເລີ່ມຕົ້ນສະຄິບແລະ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ w, uptime ແລະ 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    

ທ່ານສາມາດເບິ່ງເອກະສານ script.log ແລະ 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

ຕອນນີ້ເບິ່ງເອກະສານ time.txt.

[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 ມີສອງຄໍ ລຳ, ຄໍ ລຳ ທຳ ອິດສະແດງເວລາຫຼາຍປານໃດນັບຕັ້ງແຕ່ການສະແດງຄັ້ງສຸດທ້າຍແລະຖັນທີສອງສະແດງ ຈຳ ນວນຕົວອັກສອນທີ່ຖືກສະແດງໃນຄັ້ງນີ້.

ໃຊ້ ໜ້າ man ແລະ –help ເພື່ອຊອກຫາຕົວເລືອກເພີ່ມເຕີມແລະຊ່ວຍໃນການ ນຳ ໃຊ້ຜົນປະໂຫຍດໃນການຂຽນ ຄຳ ສັ່ງ.

ການໃຊ້ scriptreplay ເພື່ອສະແດງຕົວອັກສອນໂດຍໃຊ້ຂໍ້ມູນກ່ຽວກັບເວລາ

ຄຳ ສັ່ງ scriptreplay ຊ່ວຍໃນການ replay ຂໍ້ມູນໃນ log_file ຂອງທ່ານທີ່ບັນທຶກໂດຍ ຄຳ ສັ່ງ script.

ຂໍ້ມູນກ່ຽວກັບເວລາຖືກ ກຳ ນົດໂດຍຕົວເລືອກ file -timing = ໃຊ້ກັບ ຄຳ ສັ່ງ script ແລະ file ໃນກໍລະນີນີ້ແມ່ນ file.txt ທີ່ໃຊ້ກັບ ຄຳ ສັ່ງ script.

ຈື່ໄວ້ວ່າທ່ານ ຈຳ ເປັນຕ້ອງລະບຸ log_file ທີ່ທ່ານເຄີຍໃຊ້ກັບ ຄຳ ສັ່ງ script.

ຕອນນີ້ໃຫ້ພວກເຮົາຫຼີ້ນອີກສາມ ຄຳ ສັ່ງສຸດທ້າຍ w, ເວລາຂຶ້ນແລະ cal ທີ່ພວກເຮົາເຄີຍ ດຳ ເນີນການດັ່ງຕໍ່ໄປນີ້.

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

ເມື່ອ log_file ປະກອບຄືນ ໃໝ່ ໂດຍໃຊ້ຂໍ້ມູນກ່ຽວກັບໄລຍະເວລາ, ຄຳ ສັ່ງທີ່ບັນທຶກຖືກ ດຳ ເນີນການແລະຜົນຜະລິດຂອງມັນຖືກສະແດງໃນເວລາດຽວກັນຜົນຜະລິດຕົ້ນສະບັບຖືກສະແດງໃນຂະນະທີ່ຖືກບັນທຶກ.

ບົດສະຫຼຸບ

ຄຳ ສັ່ງສອງຢ່າງນີ້, script ແລະ scriptreplay ໃຊ້ງ່າຍແລະຊ່ວຍໄດ້ຫຼາຍເມື່ອທ່ານຕ້ອງການໃຊ້ ຄຳ ສັ່ງດຽວກັນຫຼາຍຄັ້ງ. ພວກເຂົາຊ່ວຍຫຼາຍໃນການຈັດການເຊີຟເວີທີ່ມີພຽງແຕ່ອິນເຕີເຟດເສັ້ນ ຄຳ ສັ່ງ ສຳ ລັບການພົວພັນກັບລະບົບຂອງທ່ານ. ຫວັງວ່າຄູ່ມືນີ້ຈະເປັນປະໂຫຍດແລະຖ້າທ່ານມີຫຍັງເພີ່ມເຕີມຫຼືປະເຊີນກັບສິ່ງທ້າທາຍໃນຂະນະທີ່ ນຳ ໃຊ້ພວກມັນ, ຢ່າລັງເລທີ່ຈະລົງ ຄຳ ເຫັນ.