디렉토리에 /run/shm
(이전 /dev/shm
) 디렉토리를 만들어서 임시 디렉토리처럼 사용하는 것이 좋은 습관 입니까?
배경 : 파일과 디렉토리로 많은 일을하는 프로그램에 대한 블랙 박스 테스트를 작성하고 있습니다. 모든 테스트에 대해 많은 파일과 디렉토리를 작성한 다음 프로그램을 실행 한 다음 예상되는 파일과 디렉토리 세트를 작성한 후 diff를 실행하여 비교하십시오. 나는 지금 약 40 테스트를 가지고 있으며 그들은 이미 실행하는 데 2 초 이상이 걸렸습니다. 속도를 높이기 위해 일종의 램 디스크 디렉토리에서 테스트를 실행하고 싶습니다.
램 디스크에 대한 연구에서 나는 디렉토리를 만들고 임시 디렉토리처럼 사용하는 것이 좋다는 대답 으로 질문에 걸려 넘어 졌습니다 /dev/shm
. 그러나 좀 더 연구 하면 데비안 의 위키 페이지 를 우연히 발견하여 /dev/shm
직접 사용하는 것이 오류라고 주장했습니다 . shm_*
기능을 사용해야합니다 . 불행히도이 shm_*
기능은 쉘 스크립트에서 사용할 수없는 것 같습니다.
이제 혼란 스러워요. 임시 디렉토리처럼 /run/shm
(이전 /dev/shm
) 사용 하는 것이 좋습니까?
답변
/run
적절한 권한이있는 한 일부 디렉토리를 사용 하는 것이 좋습니다. 일부 최신 배포판에서는 /tmp
이미 메모리에 가상 파일 시스템이거나 내부 디렉토리에 대한 심볼릭 링크 /run
입니다. 이 경우 (에서 확인 /etc/fstab
하거나 입력 mtab
할 수 있음) /tmp
임시 디렉토리로 사용할 수 있습니다 .
또한 데비안 기사와 혼동하지 마십시오. shm_*
기능은 프로세스 간 통신을위한 공유 메모리 세그먼트를 작성하는 데 사용됩니다. 이러한 기능을 사용하면 둘 이상의 프로세스간에 메모리 조각을 공유하여 동일한 데이터를 사용하여 통신하거나 공동 작업 할 수 있습니다. 프로세스는 자신의 주소 공간에 메모리 세그먼트가 연결되어 있으며 평소처럼 읽고 쓸 수 있습니다. 커널은 복잡성을 처리합니다. 이러한 함수는 쉘 함수로 사용할 수 없으며 쉘 컨텍스트에서는 그다지 유용하지 않습니다. 자세한 내용은를 참조하십시오 man 7 shm_overview
. 이 기사의 요점은 어떤 프로그램도 공유 세그먼트를 나타내는 의사 파일을 직접 관리하지 말고 적절한 기능을 사용하여 공유 메모리 세그먼트를 작성, 첨부 및 삭제해야한다는 것입니다.