각 프로세스의 임시 디렉터리

각 프로세스의 임시 디렉터리

"standard"프로세스 자체와 함께 사라지는 단일 프로세스에 할당된 임시 디렉터리가 있습니까 ? /proc/$pid/tmp또는 처럼 보이는 것 /proc/self/tmp. 시스템 전역 임시 디렉터리, 사용자별 임시 디렉터리, 영구 디렉터리, 재부팅 시 지워지는 임시 디렉터리 tmpfs등 많은 임시 디렉터리가 있습니다.

각 프로세스에 대한 임시 디렉토리를 갖는 것은 상식처럼 들리지만 찾을 수 없습니다.

답변1

아니요, 각 프로세스의 임시 파일에 대한 표준 위치나 모호한 범용 위치는 없습니다. 그 이유는 프로세스별 임시 파일이 매우 드물기 때문입니다. 임시 파일의 목적은 거의 항상 프로세스 간에 데이터를 교환하는 것입니다. 프로세스가 다른 프로세스와 통신할 필요가 없으면 데이터를 메모리에 보관할 수 있습니다.

더 의미 있는 것은 다른 프로세스에서도 파일에 액세스할 수 있지만 프로세스가 종료되면 삭제되는 프로세스별 임시 디렉터리입니다. 그러나 이는 구현 복잡성 측면에서 다소 비용이 많이 드는 작업입니다. 종료 프로세스는 재귀적인 파일 및 디렉터리 삭제를 수행해야 하며, 이는 마운트 지점이 사라지는 등 매우 복잡한 작업을 수행할 수 있습니다. 몇 줄의 셸로 구현할 수 있는 것의 경우 이점은 상당히 작습니다.

#!/bin/sh
tmpdir=$(mktemp -d) || exit
the_real_program; ret=$?
rm -rf -- "$tmpdir"
exit $ret

기술적으로 원하는 것은 다음을 통해 수행될 수 있습니다.퓨즈: 프로세스가 FUSE 드라이버를 통해 임시 파일 시스템을 구현하도록 합니다. 그러나 다시 말하지만 효과가 거의 없기에는 너무 복잡합니다.

답변2

간단히 말해서 : 아니요. /proc 항목은 메모리 기반이므로 /tmp oir /usr/tmp(또는 이와 유사한 항목)를 mktmp 또는 유사한 명령과 함께 사용하면 더 잘 작동합니다.

앞서 언급했듯이 커널 매핑 공간은 매우 비싸며 시스템의 메모리가 매우 빨리 부족해집니다.

임시 파일을 사용하는 모든 응용 프로그램은 일부 관리 작업을 수행하고 자체적으로 정리해야 합니다.

관련 정보