Jak przechowywać dzienniki wszystkich prac wykonanych za pośrednictwem terminala? Na przykład chcę rejestrować całą pracę wykonaną w bazie danych przez terminal.
Jak przechowywać dzienniki wszystkich prac wykonanych za pośrednictwem terminala? Na przykład chcę rejestrować całą pracę wykonaną w bazie danych przez terminal.
Odpowiedzi:
Aby rozpocząć rejestrowanie pliku dziennika, wpisz:
script screen.log
Teraz, dopóki nie zatrzymasz skryptu, wszystkie dane wejściowe i wyjściowe w terminalu będą przechowywane w screen.log. Po zakończeniu wpisz:
exit
Twój plik screen.log zostanie zapisany w katalogu lokalnym. Jeśli chcesz go przekierować, użyj bezwzględnej nazwy ścieżki, takiej jak ~/screen.log
. To zrobi dokładnie to, czego szukasz.
Źródło: Przewodnik Ubuntu - jak rejestrować polecenia terminala
man script
) wspomina nawet vi
(redaktor) ...
Mam lepszy sposób na użycie syslog do rejestrowania każdego polecenia powłoki. Może się to różnić w zależności od dystrybucji linuksa, ale metoda pozostanie taka sama
Musisz wykonać kilka kroków:
Krok # 1 (Utwórz usługę Syslog)
# vim /etc/rsyslog.d/bash.conf
local6.* /var/log/commands.log
Krok # 2 (Otwórz bashrc i wpisz poniżej polecenie)
# 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 (Uruchom ponownie usługę Syslog)
# /etc/init.d/rsyslog
Oto przykładowy dziennik:
7 grudnia 22:13:00 validationdb2 mahasan: root @ export [13291]: tail -f /var/log/mysql/mysql.log [0] 7 grudnia 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0] 7 grudnia 22:13:27 validationdb2 mahasan: root @ export [13291]: touch test command [0]