그놈 터미널 스크롤백 라인?

그놈 터미널 스크롤백 라인?

현재 gnome 터미널의 스크롤백 설정(편집 -> 프로필 기본 설정 -> 스크롤)을 10000줄로 설정했습니다. Unlimited를 선택하고 싶지만 이로 인해 메모리 충돌이 발생할 수 있는 것이 두렵습니다(밤새 많은 출력이 실행되는 프로그램을 남겨두면 이로 인해 충돌이 발생하는 것을 원하지 않습니다).

내 질문은 다음과 같습니다

  1. 이러한 스크롤백 행은 메모리에 저장되어 있습니까, 아니면 디스크의 파일에 캐시되어 있습니까?

  2. 10000에서 100000 또는 100만으로 변경해도 여전히 안전한가요? 고려해야 할 매개변수(RAM, 여유 디스크 공간, 열린 터미널 수)는 무엇입니까? 무제한을 선택하는 것이 안전한가요?

답변1

매우 흥미로운 연구에 따르면 디스크의 삭제된 파일에 저장되어 있는 것으로 보입니다.블로그 게시물:

gnome-terminal나는 어떤 파일이 열려 있는지 볼 수 있었기 때문에 lsof구조되었습니다. 그런 다음 나는 그것이 교활하다는 것을 알았습니다. open이라는 파일이 많이 있었지만 /tmp/vteXYZ1tv이미 삭제했습니다. 따라서 탐색할 때 해당 항목을 볼 수 없으며 프로그램을 닫으면 제거됩니다. 이것은 의미가 있습니다. 프로세스가 닫힐 때 파일 공간을 어떻게 회수할 수 있는지는 중요하지 않습니다. 즉, 프로그램 충돌 시 남은 파일을 얻지 못하거나 (적어도 제 생각에는) kill -9. 하지만 내 방식(아마도 다른 방식도 있을 수 있음)은 복원할 수 있으며, ls -l /proc/<gnome-terminal pid>/fd그들이 가리키는 내용을 확인하는 것이었습니다. 그런 다음 cat이를 사용하여 새 파일을 만들 수 있습니다. 이는 터미널 출력의 축어적 복사본일 뿐입니다. 압축이 없습니다. 더 아무것도. 알고 보니 내 터미널 기록 중 하나가 거의 900MB였습니다! 그러나 그것은 일반적인 사용에서는 거의 발생하지 않는 임의의 데이터가 꽤 오랫동안 매우 빠르게 생성된 후에만 발생했습니다.

그리고 이것을 다시 강조하겠습니다. 포스터는 base64 < /dev/urandom메모리나 디스크 사용량의 증가를 찾기 위해 한동안 실행되었습니다. 900MB는 예외적인 사용량일 것입니다.

답변2

gnome-terminal(실제로는 vte) 실제로 즉시 삭제된 파일에 스크롤백을 저장합니다 /tmp(더 정확하게는 다음의 영향을 받는 표준 임시 파일 위치 $TMPDIR및 아마도 몇 가지 유사한 파일 위치 아래).

이 디자인은 주로 OOM 오류가 발생하지 않도록 무제한 스크롤백을 위해 선택되었습니다. 디스크가 가득 찰 가능성이 훨씬 적으며, 그런 일이 발생하더라도 메모리가 부족해지는 것보다 전체 시스템에 덜 해롭습니다.

vte-0.40(Ubuntu 15.10 WW에 나타날 가능성이 높음)은 이러한 파일을 압축하고 암호화합니다. 이렇게 하면 필요한 저장소가 크기의 약 3~4분의 1로 줄어듭니다(앱이 X/4 .. X/3 사이의 X/3 양의 데이터를 일반 텍스트로 생성하는 경우 필요한 저장소에 대한 합리적인 추정치입니다). , 또한 누군가가 하드 드라이브에 대한 원시 액세스 권한을 얻는 경우 개인 정보 보호/보안 문제를 제거합니다.

우리는 마치 /tmp에 있는 것처럼 스크롤백을 메모리에 저장하는 옵션을 추가할 계획입니다 tmpfs. 모든 것이 계획대로 진행되면 vte-0.42Ubuntu 16.04 XX LTS에 차례로 나타납니다 . 하지만 약속할 수는 없습니다.

관련 정보