'Script' ve 'scriptreplay' Komutlarını Kullanarak Linux Terminal Oturumlarını Kaydetme ve Yeniden Oynatma


Bu kılavuzda, Linux'ta belirli bir süre boyunca komutları ve terminalinizde yazdırılan çıktılarını kaydetmenize yardımcı olabilecek bir script ve scriptreplay komutlarının nasıl kullanılacağına bakacağız. oturum.

History komutu, bir komutun çıktısını saklamasa da, kullanıcıların kullanılan önceki komutu saklamasına yardımcı olan harika bir komut satırı yardımcı programıdır.

Kaçırmayın: Showterm.io – Bir Linux Terminal Kayıt Aracı

Kaçırmayın: Linux için En İyi 8 Masaüstü Ekran Kaydedici

Bu nedenle script komutu, terminalinizde yazdırılan her şeyi bir log_file'a kaydetmenize yardımcı olan güçlü bir işlevsellik sağlamak açısından kullanışlıdır. Daha sonra log_file'dan geçmişteki bir komutun çıktısını görüntülemek isterseniz bu dosyaya başvurabilirsiniz.

Ayrıca scriptreplay komutunu kullanarak kaydettiğiniz komutları bir zamanlama bilgisi kullanarak yeniden oynatabilirsiniz.

Komut Dosyasını Kullanarak Linux Terminali Nasıl Kaydedilir

script komutu, terminal etkinliklerini kullanıcı tarafından adlandırılabilecek bir günlük dosyasında saklar; kullanıcı tarafından bir ad sağlanmadığında varsayılan dosya adı olan typescript kullanılır. .

Betiğin Temel Sözdizimi Komut

script [options] - -timing=timing_file log_filename

Linux terminalinin kaydını başlatmak için script yazın ve gösterildiği gibi dosya adını günlüğüne ekleyin.


tecmint@tecmint ~ $ script history_log.txt

Script started, file is history_log.txt

Script'i durdurmak için exit yazın ve [Enter] tuşuna basın.


tecmint@tecmint ~ $ exit

Script done, file is history_log.txt

Komut dosyası, adlandırılmış günlük dosyasına yazamıyorsa, bir hata gösterir.

Örneğin aşağıdaki çıktıda typescript dosyasının izinleri, dosyanın hiçbir kullanıcı veya grup tarafından okunmasına, yazılmasına ve çalıştırılmasına izin vermiyor. script komutunu bir günlük dosyası adı olmadan çalıştırdığınızda, varsayılan dosyaya yazmaya çalışır, bu nedenle typescript bir hata gösterir.


tecmint@tecmint ~ $ ls -l typescript

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

tecmint@tecmint ~ $ script

script: open failed: typescript: Permission denied
Terminated

Komut dosyası komutunu kullanma örnekleri

Aşağıdaki örnekte log dosyama script.log ismini verdim, siz dosyanıza farklı bir isim verebilirsiniz.


tecmint@tecmint ~ $ script script.log

Şimdi komut dosyasının terminalde yürütülen komutları kaydetmesine izin vermek için birkaç komut yürütmeyi deneyin.


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

Şimdi kayıtlı tüm komutlar için 'script.log' günlük dosyasını görüntülemeyi deneyin; günlüğü görüntülerken, komut dosyasının aynı zamanda satır beslemelerini ve geri boşlukları da sakladığını fark edeceksiniz.


tecmint@tecmint ~ $ vi script.log
Örnek Çıktı

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

Önceki içerikleri koruyarak günlük dosyasını veya daktilo metnini eklemek için -a seçeneğini kullanabilirsiniz.


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

Komut dosyasının içeriğini görüntüleyin, eklemek için -a seçeneğini kullandıktan sonra oturum açın.


tecmint@tecmint ~ $ vi script.log
Örnek Çıktı

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

Etkileşimli kabuk oturumu dışındaki tek bir komutun sonuçlarını günlüğe kaydetmek için -c seçeneğini kullanın.


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

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

Komut dosyasının sessiz modda çalışmasını istiyorsanız -q seçeneğini kullanabilirsiniz. Komut dosyasının başladığını veya çıktığını gösteren bir mesaj görmezsiniz.


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)

Zamanlama bilgilerini standart hataya veya bir dosyaya ayarlamak için –timing seçeneğini kullanın. Log_file'da saklanan çıktıyı yeniden görüntülemek istediğinizde zamanlama bilgisi kullanışlıdır.

Komut dosyasını başlatalım ve kaydedilecek w, uptime ve cal komutlarını çalıştıralım.


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    

Yukarıdaki zamanlama komutuna ilişkin script.log ve time.txt dosyasını görüntüleyebilirsiniz.


tecmint@tecmint ~ $ vi script.log
Örnek Çıktı

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

Şimdi time.txt dosyasını görüntüleyin.


tecmint@tecmint ~ $ vi time.txt
Örnek Çıktı

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 dosyası iki sütuna sahiptir; ilk sütun, son görüntülemeden bu yana ne kadar zaman geçtiğini, ikinci sütun ise bu sefer görüntülenen karakter sayısını gösterir.

Komut dosyası komut satırı yardımcı programının kullanımıyla ilgili daha fazla seçenek ve yardım aramak için kılavuz sayfasını ve –help'i kullanın.

Zamanlama bilgilerini kullanarak komut dosyalarını yeniden oynatmak için komut dosyası oynatmayı kullanma

scriptreplay komutu, log_file'inizde script komutu tarafından kaydedilen bilgilerin yeniden oynatılmasına yardımcı olur.

Zamanlama bilgisi, script komutuyla kullanılan -timing=file seçeneğiyle tanımlanır ve bu durumda file, file.txt'tir. script komutuyla kullanıldı.

script komutuyla kullandığınız log_file dosyasını belirtmeniz gerektiğini unutmayın.

Şimdi çalıştırdığımız son üç komutu w, uptime ve cal'i aşağıdaki gibi tekrar oynatalım.


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

log_file zamanlama bilgisi kullanılarak yeniden oynatıldığında, kaydedilen komutlar çalıştırılır ve çıktıları, kaydedilirken orijinal çıktının görüntülenmesiyle aynı anda görüntülenir.

Özet

Bu iki komut, script ve scriptreplay'in kullanımı kolaydır ve aynı komut grubunu birkaç kez çalıştırmanız gerektiğinde çok yardımcı olur. Sisteminizle etkileşim için yalnızca komut satırı arayüzüne sahip sunucuların yönetilmesinde çok yardımcı olurlar. Bu kılavuzun faydalı olduğunu umarız. Eklemek istediğiniz bir şey varsa veya bunları kullanırken zorlukla karşılaşırsanız yorum yazmaktan çekinmeyin.