`/run/shm`(이전 `/dev/shm`)을 임시 디렉토리로 사용

`/run/shm`(이전 `/dev/shm`)을 임시 디렉토리로 사용

/run/shm(이전의 ) 에 디렉토리를 생성 /dev/shm하고 이를 애플리케이션의 임시 디렉토리처럼 사용하는 것이 좋은 습관입니까?

배경: 저는 파일과 디렉토리에 대해 많은 작업을 수행하는 프로그램에 대한 블랙박스 테스트를 작성하고 있습니다. 모든 테스트에서 나는 많은 파일과 디렉터리를 생성한 다음 프로그램을 실행하고 예상되는 파일과 디렉터리 세트를 생성한 다음 diff를 실행하여 비교합니다. 이제 약 40개의 테스트가 있는데 실행하는 데 이미 2초 이상이 걸립니다. 작업 속도를 높이기 위해 일종의 램디스크에 있는 디렉토리에서 테스트를 실행하고 싶습니다.

램 디스크에 대해 조사하다가 우연히 발견했습니다.질문/dev/shm디렉토리를 생성 하고 이를 임시 디렉토리처럼 사용해도 괜찮다는 대답과 함께 . 좀 더 조사하다가 우연히 발견했습니다.위키 페이지데비안에서 직접 사용하는 것은 오류라고 말합니다 /dev/shm. 기능 을 활용해야겠네요 shm_*. 불행하게도 이 shm_*함수는 쉘 스크립트에서 사용할 수 없는 것 같습니다.

이제 나는 혼란스러워졌습니다. 임시 디렉토리처럼 /run/shm(이전의 ) 을 사용하는 것이 괜찮은가요, 아니면 사용하지 않는 것이 좋은가요 ?/dev/shm

답변1

/run적절한 권한이 있는 한 일부 디렉토리를 사용하는 것은 전혀 문제가 되지 않습니다 . 일부 최신 배포판에서는 /tmp이미 메모리의 가상 파일 시스템이거나 내부 디렉터리에 대한 심볼릭 링크입니다 /run. 이러한 경우( 에서 확인하거나 를 /etc/fstab입력 할 수 있음 mtab) /tmp임시 디렉토리로 사용할 수 있습니다.

또한 데비안의 기사와 혼동하지 마십시오. shm_*함수는 프로세스 간 통신을 위한 공유 메모리 세그먼트를 생성하는 데 사용됩니다. 이러한 기능을 사용하면 두 개 이상의 프로세스 간에 메모리 조각을 공유하여 동일한 데이터를 사용하여 통신하거나 협업할 수 있습니다. 프로세스는 자체 주소 공간에 메모리 세그먼트가 연결되어 있으며 평소처럼 그곳에서 읽고 쓸 수 있습니다. 커널은 복잡성을 처리합니다. 이러한 함수는 쉘 함수로 사용할 수 없습니다(그리고 쉘 컨텍스트에서는 그다지 유용하지 않습니다). 자세한 내용은 을 참조하세요 man 7 shm_overview. 기사의 요점은 어떤 프로그램도 공유 세그먼트를 나타내는 의사 파일을 직접 관리해서는 안 되며 대신 적절한 기능을 사용하여 공유 메모리 세그먼트를 생성, 연결 및 삭제해야 한다는 것입니다.

관련 정보