
/tmp
내부의 파일에 쓰기 전에 확인하고 생성해야 합니까 ? sudo rm -rf /tmp
매우 드문 경우이기 때문에 아무도 도망치지 않았다고 가정합니다.
답변1
그만큼FHS존재 하는 명령은 /tmp
다음과 같습니다.POSIX그래서 당신은 그것이 거기에 있다는 것을 믿을 수 있습니다 (적어도 호환 시스템에서는 그러나 실제로는 Unix 계열 시스템에 존재한다는 것이 거의 보장됩니다). 그러나 그렇게 해서는 안 됩니다. 시스템 관리자나 사용자는 임시 파일을 위한 다른 위치를 선호할 수 있습니다. 보다여러 플랫폼에서 올바른 tmp 디렉토리 찾기상세 사항은.
답변2
실제로는 /tmp
존재가 거의 보장됩니다. 그러나 존재한다고 해서 임시 파일을 거기에 넣어야 한다는 의미는 아닙니다.
그만큼기준관례는 환경 변수를 사용하는 것입니다 TMPDIR
. 존재하는 경우 임시 파일용 디렉터리를 가리킵니다. 존재하지 않는 경우 임시 파일을 /tmp
.
쉘 스크립트에서는 "${TMPDIR:-/tmp}"
임시 파일 위치로 사용할 수 있습니다. 이는 TMPDIR
설정된 경우의 값으로 확장되고, /tmp
그렇지 않은 경우의 값으로 확장됩니다. 또는 TMPDIR
설정되지 않은 경우 다음 명령을 사용하여 조건부로 설정할 수 있습니다.
: "${TMPDIR:=/tmp}"
그런 다음 내부에 임시 파일을 만듭니다 "$TMPDIR"
.
모든 응용 프로그램은 /tmp
또는 아래에 파일을 만들 수 있습니다 $TMPDIR
. 또한 이 디렉터리는 사용자 간에 공유될 수 있으므로 파일을 만들 때 권한에 주의해야 합니다. 많은 시스템(Linux, *BSD)에는 다음 명령이 있습니다.mktemp
올바른 디렉토리에 안전하게 파일을 생성합니다. 일반적으로 임시 파일 및 디렉토리를 생성하는 데 사용하는 것이 좋습니다 mktemp
. 특히 심볼릭 링크 공격 가능성으로 인해 공유 디렉토리에 안전하게 파일을 생성하는 것이 불가능한 쉘 스크립트의 경우( mkdir
오류를 올바르게 처리하면 괜찮습니다).
¹ 및 비어 있지 않음 - 변수가 비어 있으면 그대로 사용할 수 없으며 일반적으로 비어 있거나 설정되지 않은 변수에 파일 이름이 포함되어야 하는 경우 동일한 방식으로 처리하는 것이 좋습니다.
답변3
존재할 가능성이 매우 높더라도 다른 이유를 확인해야 합니다. 보장되지는 않습니다.큰. 많은 시스템에서 /tmp
디스크가 아닌 RAM으로 지원되며 몇 GB로 제한될 수 있습니다. (Fedora 시스템에서는 기본적으로 RAM의 절반입니다.) 따라서 존재 여부뿐만 아니라 거기에 넣으려는 것을 넣을 공간이 있는지 확인해야 합니다.
큰 것이 있으면 를 사용하십시오 /var/tmp/
.