로컬 컴퓨터를 통해서든 SSH를 통해서든 터미널 세션이 시작될 때 .profile/.bash_profile이 로드된다는 것을 알고 있습니다. 세션이 종료되면 파일이 로드/호출됩니까?
이유: 특정 사용자에게 연결된 터미널 세션의 날짜와 IP 주소를 기록하도록 .profile을 설정했습니다.
답변1
~/.bash_logout
로그인 쉘이 종료될 때 bash에 의해 실행됩니다. 하지만 을 사용하여 IP 주소 및 날짜 세부정보를 얻을 수도 있습니다 lastlog
. 시도해 보셨나요?
~/.bash_logout
하지만 세션이 실행되지 않거나 kill -9 $$
강제로 닫힐 수 있습니다.
답변2
모든 쉘에는 쉘이 종료될 때 일부 코드를 실행하는 방법이 있습니다: 트랩. "trap"은 쉘 단어입니다.신호 처리기. 특별한 값을 사용하거나 쉘 이 정상적으로 종료될 때(입력 끝에 도달하거나 호출되는 경우) INT
신호의 이름( , , ...) 또는 번호를 나열하여 신호 트랩을 설정할 수 있습니다 .HUP
0
EXIT
exit
trap 'echo "$IP_ADDRESS logged out at $(date)" >>"$LOG_FILE"' EXIT HUP INT TERM
함정이나 정전에 빠질 수 없습니다 kill -KILL
.
나는 당신이 하고 있는 일이 실제로 효과가 있는지 의심스럽습니다. 이 정보는 시스템 로그에 기록됩니다. kill -KILL
거기도 들어갈 수 있어서 더 믿음이 가더라구요 . 이 명령은 last
마지막 로그 교체 이후 모든 과거 및 현재 세션의 시작 날짜, 종료 날짜 및 소스(엔드포인트 또는 IP 주소)를 표시합니다.