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