bash 기록을 정기적으로 저장

bash 기록을 정기적으로 저장

기록을 파일에 저장하도록 bash를 설정했습니다. bash가 [제대로] 종료될 때마다 이 작업을 수행합니다. 때때로 bash가 제대로 종료되지 않아 기록이 손실됩니다.

그래서 질문은 기록을 더 정기적으로 저장하기 위해 bash를 설정할 수 있습니까?


저는 Linux 커널과 함께 Debian Gnu(버전 6, Squeeze)를 실행하고 있습니다.

bash 버전: GNU bash, 버전 4.1.5(1)-릴리스(i486-pc-linux-gnu)

답변1

이것을 bash_profile 또는 bashrc에 저장하세요.

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

답변2

나는 export PROMPT_COMMAND='history -a'모든 프롬프트에서 메모리의 기록 목록을 기록 파일에 쓰는 .bash_aliases를 사용하기로 결정했습니다. 중복 제거에 몇 가지 문제가 있었지만 해결되었습니다. 나는 또한 파일을 백업하기 위해 cron.daily 및 Monthly를 사용했습니다. 터미널이 종료되지 않고 중단되면 저장되지 않습니다. 출구를 가두어도 작동하지 않습니다. 불행하게도 cron 작업은 메모리에 저장되는 기록 목록도 저장할 수 없습니다. history -w목록에서 파일로 쓰기 위해 현재 실행 중인 셸에 명령을 보내는 방법을 찾을 수 없습니다 . 이를 사용할 수 있지만 작업을 별도로 유지하려면 탭에 열려 있는 각 셸마다 별도의 작업이 있어야 합니다. 그렇지 않은 경우 중복 제거와 동시에 모든 프롬프트에 작성하는 방법을 설명하는 또 다른 링크가 있습니다.

https://unix.stackexchange.com/questions/697314/any-way-to-resolve-export-prompt-command-history-a-and-histcontrol-ignored/720637#720637

답변3

$HISTFILE이 루트 소유일 가능성이 있습니다. bash를 로그인 쉘로 사용한다고 가정합니다. 확인 방법은 다음과 같습니다.

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

HISTFILE의 기본값은 ~/.bash_history여야 합니다. "HISTFILE 설정 필요" 오류가 표시되거나 $HISTFILE이 ~/.bash_history가 아닌 경우 ~/.profile, ~/.bash_profile 또는 ~/를 확인해야 합니다. bashrc를 실행하여 잘못 설정되거나 재설정되지 않았는지 확인하세요.

일반적으로 루트가 소유하므로 재설정하면 됩니다.

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

로그아웃 후 로그인하세요.

$ history

루트가 파일을 소유하기 전에 입력한 마지막 명령 세트를 표시하고 파일 소유권이 변경된 후에 입력한 명령을 표시해야 합니다.

관련 정보