왜 터미널 자체를 제거 할 수 있습니까?


25

스크린 샷

어떻게 apt-get remove xterm됩니까? 제거 된 후에도 xterm닫히지 않고 계속 정상적으로 작동합니다.

는 IS xterm가 실행되는 동안 프로세스가 RAM에 캐시?


6
정확히 말해서, 그것은 실제로 스스로 apt-get를 제거 xterm하는 것이 아닙니다. 제거 하고 있으며, 어떻게 든 xterm프로세스에 의존하고 있는지 전혀 모릅니다. 그래서 "실행 중에 xterm을 왜 제거 할 수 있습니까?"에 관한 것입니다. 좋은 질문.
Volker Siegel 2016 년

2
OS를 실행하는 동안 하드 디스크를 삭제하는 방법과 비슷합니다.
jkd

답변:


53

좀 빠지는. 파일이 이미 프로그램에 의해 열려 있습니다. 파일을 삭제 한 다음 다른 버전으로 교체해도 프로그램이 완료 될 때까지 원본 파일은 디스크에 이름이 없어도 파일이 열려 있지 않기 때문에 실행중인 프로그램에 영향을 미치지 않습니다. 파일에 대한 모든 핸들이 닫힐 때만 디스크의 데이터 블록이 해제됩니다. 그때까지 열린 파일을 평상시처럼 읽고 쓸 수 있습니다. 유일한 변경 사항은 이름이 제거 된 이후로 다른 사람이 파일을 열 수 없다는 것입니다.

프로그램이 삭제 될 때 프로그램의 일부는 이미 램으로 읽혀졌지만 나중에 폐기되고 나중에 다시 읽거나 이전에 실행되지 않은 프로그램의 새 부분은 여전히 ​​삭제 된 파일에서로드 될 수 있습니다.


4
이것이 실제적인 이유입니다. .... 이것이 또한 작용하는 이유이기도 rm -rf /합니다 .....
heemayl

6
"works"라는 단어를 사용하여 모든 것을 완전히 조이는 것을 설명하려면 ;) 흥미롭게도, rm -rf /바로 다음에 두 번째로 실행하면 작동하지 않습니다.)
thomasrutter

1
나는 종종 출력에서 ​​"/ some / file / name (삭제됨)"을 보았는데 lsof그것이 '좀비'파일이 어떻게 생겼는지 알고 있지만 그러한 파일의 내용을 사라지지 않도록 저장할 수있는 방법이 있습니까? 마지막 파일 핸들이 언제 죽습니까?
Kilian Foth

1
@KilianFoth, 여전히 파일이 열린 프로세스를 찾을 수 있으면 / proc / $ PID / fd / $ ID에서 다른 파일로 복사 할 수는 있지만 파일을 복구하는 방법을 찾지 못하는 것 같습니다 파일을 하드 링크하려는 모든 시도가 실패함에 따라
psusi

3
@KilianFoth 파일 핸들이있는 경우 시스템 호출 root을 사용하여 이름을 만들 수 있으므로 삭제를 방지 할 수 있습니다 linkat. 그러나 실행 파일과 라이브러리는 메모리로 매핑되므로 파일 핸들이 필요하지 않습니다. 메모리 매핑이기 때문에 존재하는 파일에 대한 핸들을 얻는 방법을 모르겠습니다. 실행 파일은 실행되는 /proc동안 액세스 할 수 있지만 복구 할 수없는 라이브러리 및 기타 메모리 매핑 파일 일뿐입니다. 그것에 대한 자세한 내용을 원한다면 별도의 질문으로 요청해야합니다.
kasperd

8

는 IS xterm가 실행되는 동안 프로세스가 RAM에 캐시?

정확하게. 충돌없이 실행되는 동안 업데이트를 설치할 수있는 프로세스와 유사합니다. 또한 업데이트 후 서비스를 다시 시작해야하는 이유도 있습니다. 무언가가 실행되면 바이너리는 메모리에 있습니다.

제거되거나 교체 된 다른 파일 (보류 된 "열린"상태가 아닌 파일)에 의존하는 경우 문제가 발생할 수 있지만 이산과 같은 xterm문제는 문제가되지 않습니다.


6
프로그램의 일부는 필요할 때만 메모리로 읽히고 다른 용도로 메모리를 확보하기 위해 언제든지 버릴 수 있으므로 나중에 다시 읽어야합니다 (프로그램이 해당 파트에 액세스하려고 할 때) 다시).
psusi

17
반드시 RAM에있는 것은 아닙니다. 그러나 xterm 실행 파일을 포함하여 파일이 열리지 않을 때까지 파일은 실제로 삭제되지 않습니다.
user253751

@immibis, 따라서 내 대답;)
psusi

2

실제로 컴퓨터 작동 방식의 특징입니다. 프로그램을 호출하면 실제로 메모리에로드되어 거기서 작동합니다.

파일은 실제로 같은 방식으로 작동합니다. 문제점을 피하기 위해 UNIX 시스템에서 많은 파일이 잠금을 작성합니다.

실제 수수께끼는 Windows에서 이와 유사한 작업을 수행 할 수없는 이유입니다.

이 기능은 실제로 시스템에서 활성화 된 프로그램을 포함하여 전체 시스템을 업데이트 할 수있는 기능입니다. ;)


"실제 수수께끼는 Windows에서 이와 유사한 작업을 수행 할 수없는 이유입니다"
arielf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.