명령어 기록을 보관하고 명령어별로 검색하거나 그룹화할 수 있는 방법이 있나요?
즉, 지난 3개월 동안 실행한 모든 grep 명령을 나열하고 싶습니다. 이 기능이 어떻게든 가능할까요?
답변1
가장 일반적인 쉘 bash를 사용한다고 가정합니다.
history
.bash_history 파일에 저장된 기록이 표시됩니다. 다음을 추가하여 기록 크기를 늘리고 날짜를 추가할 수 있습니다.
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %T "
.bashrc 파일에. 그럼 넌 할 수 있어
history | grep " 2019/0[1-3]"
Bash는 대화형 세션에서 선택한 명령의 기록만 유지합니다. 모든 것을 추적하려면 사용자 정의 셸 래퍼, 원격 로깅 및 시스템 전체 버전 제어를 사용하는 것이 좋습니다.
답변2
각 명령을 완료하기 위해 여러 가지 이유로 bash 기록에 의존하지 않습니다. 이러한 명령을 syslog 서비스/데몬에 보낼 수 있습니다.
나는 한때 안전한 중앙 syslog 서버에 저장된 200개 이상의 Debian 서버에서 1년 넘게 실행된 명령 로그를 가지고 있었습니다.
/etc/bash.bashrc
나는 모든 사용자를 추가하거나 추가하기 위해 간단한 "트릭"을 사용했습니다. bash_profile은 다음 줄에만 사용자에게 적용됩니다.
readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'