내 서버에 루트 SSH를 사용합니다. 때로는 기록을 뒤로 스크롤할 때 이전 세션의 기록이 표시되지만 마지막 세션의 기록은 표시되지 않습니다. 동일한 사용자 계정에서 이런 일이 발생하는 이유는 무엇입니까? 내가 사용하고 있는 tty와 관련이 있나요? 강타 4
답변1
셸이 닫힐 때마다 해당 특정 셸의 기록 내용이 이전 셸에서 작성된 기록 파일을 덮어씁니다.
쉘 기록의 내용은 이 파일에 저장됩니다 $HOME/.bash_history
. 일반 텍스트 파일이므로 볼 수 있습니다. 동작을 향상시키기 위해 설정할 수 있는 다양한 기록 옵션이 있습니다. 보세요배쉬 매뉴얼 페이지. 대부분은 hist*
또는 으로 명명됩니다 HIST*
. 그냥 찾아보세요.
특히 shopt -s histappend
bash가 기록 파일을 덮어쓰는 대신 현재 세션 기록을 기록 파일에 추가하도록 합니다.
답변2
이는 다양한 이유로 발생할 수 있습니다.
history -a
첫째, 마지막 세션이 여전히 활성 상태인 경우 history -w
쉘에서 (새 기록 추가) 또는 (기록 덮어쓰기) 명령을 실행하지 않는 한 해당 기록을 기록 파일에 저장하지 않습니다.
또한 쉘이 비정상적으로 종료되는 경우(예: 다음으로 인해) kill -9
최후의 수단으로만 사용해야 하며 , 이로 인해 기록이 저장되지 않습니다.
내가 본 또 다른 문제는 script
명령 사용과 관련된 것입니다. 비록 이것이 단지 작업 순서와 내 자신의 예측/희망적 생각일 뿐이라고 생각합니다. 새 셸 세션은 script
파일을 다시 읽기 때문에 최신 기록 없이 실행됩니다. 또한 기존 이후에는 script
상위 셸이 생성된 기록으로 업데이트되지 않습니다. 이 history
명령을 사용하면 이 문제를 쉽게 해결할 수 있습니다.