터미널 세션에서 모든 입력 및 출력을 어떻게 기록합니까?


46

터미널을 통해 수행 된 모든 작업에 대한 로그를 유지하려면 어떻게합니까? 예를 들어, 터미널을 통해 데이터베이스에서 수행 된 모든 작업에 대한 기록을 원합니다.


이것은 또한 sudo에 내장되어 있습니다.
빌헬름 에라스무스

나는 당신이 검토 할 수있는 답변을 추가했습니다
Mansur Ali

답변:


66

로그 파일 기록을 시작할 준비가되면 다음을 입력하십시오.

script screen.log

이제 스크립트를 중지 할 때까지 터미널의 모든 입력 및 출력이 screen.log에 저장됩니다. 완료되면 다음을 입력하십시오.

exit

screen.log 파일은 로컬 디렉토리에 저장됩니다. 리디렉션하려는 경우와 같은 절대 경로 이름을 사용하십시오 ~/screen.log. 이것은 당신이 찾고있는 것을 정확하게 할 것입니다.

출처 : Ubuntu Guide-터미널 명령을 기록하는 방법


안녕, 답변 주셔서 감사합니다. 그러나 다음 순서를 사용하여 쉘에서 mysql 데이터베이스에 로그인하면이 기능이 작동합니까? screen.log 파일이 생성되었지만 데이터베이스에 대한 로그가 포함되어 있지 않습니다. 최대한 빨리 파일을 공유하겠습니다. 감사합니다 Ankt
Ankit

2
"표준 입력"(보통 키보드)에서 읽은 다음 표준 출력 (보통 터미널 창)에 쓰는 콘솔에서 실행되는 모든 작업에서 작동합니다. 따라서 mysql 명령 행 클라이언트가 포함되어야합니다. 맨 페이지 ( man script)는 심지어 vi(편집자)를 언급합니다 .
Izzy

10

Asciinema 를 사용해보십시오 . 녹음을하는 것 외에도이를 공유하고 블로그, 기사 또는 컨퍼런스 토크에 플레이어를 포함시킬 수 있습니다.


6

모든 셸 명령을 기록하기 위해 syslog를 사용하는 더 좋은 방법이 있습니다 .Linux 배포판에 따라 다를 수 있지만 방법은 동일합니다.

몇 가지 단계를 수행해야합니다.

1 단계 (Syslog 서비스 작성)

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

local6.*    /var/log/commands.log

2 단계 (bashrc를 열고 아래 명령을 입력하십시오)

# 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 서비스 재시작)

# /etc/init.d/rsyslog

다음은 로그 샘플입니다.

12 월 7 일 22:13:00 validationdb2 mahasan : root @ export [13291] : tail -f /var/log/mysql/mysql.log [0]
12 월 7 일 22:13:09 validationdb2 mahasan : root @ export [13291] : ls -lh [0]
12 월 7 일 22:13:27 validationdb2 mahasan : root @ export [13291] : 터치 테스트 명령 [0]

건방진 전술 !!!
Tom H

안녕하세요 만수르, 당신이 그 명령으로 무엇을하고 있는지 이해하기 어려운 것을 설명해 주시겠습니까?
Jasser

1 단계에서 로그를 "local6"으로 보내기 위해 프로세스에서 사용할 명령 로깅 서비스 이름을 지정합니다. 2 단계에서 실제로 "PROMPT_COMMAND = 'RETRN_VAL 원하는 항목을 설정합니다. = $? " 이 부분은 사용자의 입력과 "logger -p local6.debug"를 기록합니다. 이것은 syslog 프로세스로 로그 데이터를 기록하는 서비스로 로그 파일을 전송합니다
Mansur Ali
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.