USB 드라이브가 분리되었지만(마운트 해제되지 않음) 여전히 그 안에 있는 파일에 액세스할 수 있습니다. 프로그래밍 방식으로 이 상황을 어떻게 감지할 수 있나요?

USB 드라이브가 분리되었지만(마운트 해제되지 않음) 여전히 그 안에 있는 파일에 액세스할 수 있습니다. 프로그래밍 방식으로 이 상황을 어떻게 감지할 수 있나요?

저는 cubie 보드(Raspberry Pi와 같은 단일 보드 컴퓨터)에서 cubian이라는 Debian 파생 제품을 실행하고 있습니다.

Linux Cubian 3.4.79-sun4i #1 PREEMPT Wed Feb 25 08:50:31 UTC 2015 armv7l GNU/Linux

USB 드라이브는 /media 하위 디렉터리에 자동으로 마운트됩니다 udevil.

이것을 키오스크(사용자가 창구 시스템에 접근할 수 없는 등)로 관리하려고 하므로 프로그래밍 방식으로 상황에 대응해야 합니다. 최근 테스트 중에 내 코드에서 /media에 여러 디렉터리가 있음을 나타내는 오류가 발생했습니다. SSH를 통해 로그인했는데 실제로 거기에는 두 개의 디렉토리가 있었습니다. 나는 스스로에게 "그래, 하지만 그 중 하나는 제대로 마운트 해제되지 않은 드라이브의 오래된 잔재일 뿐이므로 디렉토리는 비어 있을 것이다. [이런 일이 이전에 일어나는 것을 본 적이 있다], 확인하려면 코드를 추가하면 된다"고 생각했습니다. 이를 위해."

놀랍게도 디렉터리는 비어 있지 않았고 목록을 가져올 수 있을 뿐만 아니라 파일의 내용을 열고 읽을 수도 있었습니다.이 문제비슷한 상황이 설명됩니다.

나는 이것이 내가 접근하고 있는 일종의 캐시라고 생각한다. 프로그래밍 방식으로 이 상황을 감지할 수 있는 방법이 있나요?

어떤 디렉토리가 실제로 물리적으로 마운트된 드라이브에 해당하는지 알기 때문에 디렉토리 정리에 대해 걱정하지 않습니다.

그리고 안타깝게도 이것을 재현하는 방법을 모르겠습니다. udevil을 죽이고 수동으로 설치를 시도한 mount다음 꺼내서 파일이 사라졌습니다.

이를 재현할 수 있는 신뢰할 수 있는 방법이 있다면 뭔가 테스트할 수 있으므로(예: 명령이 touch실패했지만 중단되지 않는지 확인하는 등) 유용한 답변이 될 것입니다.

답변1

이런 일이 발생할 수 있는 유일한 방법은 드라이브가 마운트 해제되었을 때 파일에 무언가가 기록된 경우입니다. 아무 것도 설치되지 않은 경우 Linux 시스템은 /media의 폴더를 일반 파일이 포함된 일반 폴더로 처리합니다.

Linux에서는 디렉토리를 일반 디렉토리로 사용하거나 디스크나 네트워크 드라이브의 마운트 지점으로 한 번에 하나씩 사용하는 것이 완벽하게 가능합니다.

편집하다:

다른 글에서 언급한 캐싱 부작용은 $ sync제거하기 전에 캐싱을 수행하여 해결할 수 있습니다. 그들이 설명하는 것은 제거 후 캐시를 플러시하는 것으로, 이전에 설명한 것처럼 일반 폴더에 파일을 쓰는 효과가 있습니다.

이유를 설명하지 않고 반대표를 던지지 마십시오.

관련 정보