/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
. 이 기사의 요점은 어떤 프로그램도 공유 메모리 세그먼트를 나타내는 의사 파일을 직접 관리해서는 안 되며, 대신 적절한 기능을 사용하여 공유 메모리 세그먼트를 생성, 연결 및 삭제해야 한다는 것입니다.