Tüm giriş ve çıkışları bir terminal oturumunda nasıl kaydederim?


46

Terminal üzerinden yapılan tüm işlerin kayıtlarını nasıl tutarım? Örneğin, veritabanında terminal üzerinden yapılan tüm çalışmaların bir kaydını istiyorum.


Bu aynı zamanda sudo içine de yerleştirilmiştir.
Wilhelm Erasmus

Cevabımı ekleyebileceğiniz cevabı ekledim
Mansur Ali

Yanıtlar:


66

Bir günlük dosyasını kaydetmeye hazır olduğunuzda, şunu yazın:

script screen.log

Şimdi, senaryoyu durdurana kadar Terminal'deki tüm giriş ve çıkışlar screen.log dosyasında saklanır. İşiniz bittiğinde, sadece şunu yazın:

exit

Screen.log dosyanız yerel dizinde depolanacaktır. Yeniden yönlendirmek istiyorsanız, gibi mutlak bir yol adı kullanın ~/screen.log. Bu tam olarak aradığınızı yapacak.

Source: Ubuntu Guide - Terminal Komutlarının Günlüğü


Merhaba, Cevabınız için teşekkürler. Ancak, aşağıdaki sırayı kullanarak kabuktan mysql veritabanına giriş yaparsam bu işe yarar: - 1) script screen.log 2) mysql -u <kullanıcı> -p <veri tabanı> 3) bazı işler 4) veritabanı üzerinde çalışır; Screen.log dosyasının oluşturulduğunu ancak veritabanı için günlükler içermediğini görüyorum. Dosyayı en kısa zamanda paylaşacağım. Thanks Ankt
Ankit

2
Konsolda çalışan her şeyin "standart giriş" den (genellikle klavyenizden) okunması ve standart çıkışa yazılması (genellikle terminal pencereniz) ile çalışması gerekir. Bu nedenle, mysql komut satırı istemcisini içermelidir. Adam sayfası ( man script) bile vi(editör) bahseder ...
Izzy,

10

Asciinema'yı denemek isteyebilirsiniz . Sadece bir kayıt yapmanın yanı sıra, onu paylaşma ve oynatıcıyı blogunuza, makalenize veya bir konferans görüşmesine gömme olanağına sahip olursunuz.


6

Linux dağıtımına göre değişiklik gösterebilecek her kabuk komutunu günlüğe kaydetmek için syslog kullanmak için daha iyi bir yolum var ancak yöntem aynı kalacak

Bazı adımları izlemeniz gerekir:

Adım # 1 (Syslog servisi oluştur)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

Adım # 2 (bashrc açın ve aşağıdaki komutu girin)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste # 3 (Syslog Hizmetini Yeniden Başlatın)

# /etc/init.d/rsyslog

İşte bir günlük örneği:

Dec 7 22:13:00 validationdb2 mahasan: root @ export [13291]: kuyruk-f /var/log/mysql/mysql.log [0]
7 Aralık 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0]
Dec 7 22:13:27 validationdb2 mahasan: root @ export [13291]: dokunma testi komutu [0]

arsız taktik !!!
Tom H

Merhaba Mansur, Lütfen bu komutlarla ne yaptığınızı, anlaması zor olan, en azından bana anlatır mısınız?
Jasser,

1. Adımda, "local6" günlüklerini göndermek için işlem tarafından kullanılacak komut günlüğü hizmetini adlandıracağım, günlüğe kaydetme hizmetinin bitiş noktası olur 2. Adımda gerçekten istediğim şeyleri ayarlıyorum "PROMPT_COMMAND = 'RETRN_VAL = $?" bu kısım kullanıcının girişini ve "logger -p local6.debug" kaydını kaydedecek, bu log dosyasını yardım syslog işlemi ile kaydeden verileri kaydeden servise gönderecek
Mansur Ali,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.