저는 이 문제에 여러 번 부딪혔습니다. 현재 활성 세션의 기록에 액세스해야 합니다. 더 쉬운 방법이 없으면 대상 세션에서 이를 읽는 C 프로그램을 작성하겠습니다.
bash 세션의 세션 기록이 메모리에 보관되는 위치를 아는 사람이 있습니까? 환경 변수 또는 /proc 어딘가에 저장되어 있습니까? 나는 이것을 어디에서나 검색했고 내가 찾을 수 있는 가장 가까운 대답은 "어딘가 기억"이었습니다. 당연히 누군가가 명령을 실행할 때마다 세션 기록을 기록하도록 시스템을 구성할 수 있지만 이는 내 특정 용도에는 실용적이지 않습니다. (다른 활성 세션이 실행될 때 명령을 "history -a"할 수 있다면 이것으로 충분할 수 있습니다) .
누군가 이 정보를 찾을 수 있는 위치나 이 정보가 포함된 시작 메모리 주소(주어진 세션/TTY에 대한)를 찾을 수 있는 위치에 대한 건설적인 힌트나 포인터가 있는 경우.
이것은 현재 히스토리 세션을 메모리에 저장하는 방법이나 즉시 저장하도록 bash를 구성하는 방법을 묻는 일반적인 히스토리 질문의 반복이 아니라는 점을 명심하십시오(인터넷과 이 포럼에는 이미 이러한 질문이 가득합니다 :)).
이는 루트(또는 다른 사용자)로 로그인된 다른 세션의 현재 "메모리 기록"을 얻는 방법을 묻습니다.
당신의 도움을 주셔서 감사합니다,
제프
답변1
history -a FILE
기록 저장마지막 실행 이후history -a
내용을 메모리 히스토리에 FILE
로드 합니다 . 기본 구성으로 셸에서 사용해 보겠습니다.history -r FILE
FILE
$ PS1='parent\$ ' bash --noprofile --norc
이제 사용하려는 사용자 정의 기록 파일과 기본 Bash 기록 파일을 지워 보겠습니다.
parent$ > history.txt
parent$ > ~/.bash_history
그럼 시작하자다른저장 및 로드 기록을 보여주는 서브셸:
parent$ PS1='child\$ ' bash --noprofile --norc
그런 다음 다음 명령을 실행합니다.
child$ echo foo
foo
특정 파일에 기록을 저장합니다.
child$ history -a history.txt
기본 파일에 기록을 추가합니다.
child$ cat history.txt >> ~/.bash_history
셸을 종료합니다.
child$ exit
exit
사용자 정의 기록 파일에 예상한 내용이 포함되어 있는지 확인하세요.
parent$ cat history.txt
echo foo
history -a history.txt
Bash 기록 파일에 예상한 내용이 포함되어 있는지 확인하세요.
parent$ cat ~/.bash_history
echo foo
history -a history.txt
cat history.txt >> ~/.bash_history
exit