Gdzie jest katalog tymczasowy w systemie Linux?

63

Czy Linux ma standardowy katalog tymczasowy do ogólnego użytku, na przykład C:\Tempfolder Windows ? Jeśli tak, to gdzie się znajduje? Znalazłem pytanie SO dotyczące znalezienia tmpkatalogu programowo , ale chcę wcześniej ustawić lokalizację tymczasową w pliku konfiguracyjnym XML.

Wyskakuje
źródło
1
Wiem, że to wygląda na bardzo łatwe pytanie, ale nie mogłem znaleźć jasnej, prostej odpowiedzi poprzez wyszukiwanie. Wiele wyników, które uzyskałem, dotyczyło katalogów / plików tymczasowych specyficznych dla programu. Widziałem wiele odniesień do /tmp, ale były one niejednoznaczne co do tego, czy jest to standard dla Linuksa, czy tylko zwykła konwencja.
Wyskakuje
5
Windows z C:\Temppewnością nie jest standardem. Windows 95 już %TEMP%wskazywał C:\WINDOWS\Temp.
grawity

Odpowiedzi:

91

Filesystem Hierarchy Standard wersja 3.0 mówi:

/ tmp: pliki tymczasowe

/tmpKatalog musi być udostępniony dla programów, które wymagają plików tymczasowych.

Programy nie mogą zakładać, że /tmpmiędzy wywołaniami programu są zachowane jakiekolwiek pliki lub katalogi .

Racjonalne uzasadnienie

Standard IEEE POSIX.1-2008 wymienia wymagania podobne do powyższej sekcji. Chociaż przechowywane dane /tmpmogą być usuwane w sposób specyficzny dla witryny, zaleca się, aby pliki i katalogi znajdujące się w nim /tmpbyły usuwane przy każdym uruchomieniu systemu.

FHS dodało to zalecenie na podstawie historycznej precedensu i powszechnej praktyki, ale nie uczyniło go wymogiem, ponieważ administracja systemem nie wchodzi w zakres tego standardu.

/ var / tmp: Pliki tymczasowe zachowane pomiędzy restartami systemu

/var/tmpKatalog jest udostępniony dla programów, które wymagają tymczasowe pliki lub katalogi, które są zachowane pomiędzy ponownym uruchomieniu systemu. Dlatego dane przechowywane w /var/tmpsą bardziej trwałe niż dane w /tmp.

/var/tmpNie można usuwać plików i katalogów znajdujących się w katalogu podczas uruchamiania systemu. Chociaż przechowywane dane /var/tmpsą zazwyczaj usuwane w sposób specyficzny dla witryny, zaleca się, aby usuwanie następowało rzadziej niż /tmp.

Również w Podstawowej specyfikacji Open Group, wydanie 7, Zmienne środowiskowe wymienia się następujące elementy:

TMPDIR Ta zmienna reprezentuje nazwę ścieżki do katalogu udostępnianego programom, które potrzebują miejsca do tworzenia plików tymczasowych.

Cristian Ciupitu
źródło
Trudno kłócić się ze standardem. Dzięki!
Wyskakuje
11

To stare pytanie, więc dziś dostępna jest inna opcja. Dystrybucje Linuksa, na systemdktórych się opiera (co stanowi 90%), mogą teraz używać $XDG_RUNTIME_DIRkatalogu ( specyfikacja katalogu podstawowego XDG ) do przechowywania określonych typów plików tymczasowych. Zazwyczaj znajduje się na /run/user/$uid. Jest to katalog dla poszczególnych użytkowników z 700uprawnieniami, który zapewnia większe bezpieczeństwo. To jest tmpfsmount, który zapewnia wydajność. Minusem tmpfsjest to, że należy go używać tylko do przechowywania małych plików i gniazd.

Patrzę na to jako na małżeństwo /tmpi /var/run.

oᴉɹǝɥɔ
źródło
Pewna technologia uległa poprawie od 5 lat
yass
10

Tak / tmp służy do ogólnego użytku. Zobacz tutaj i tutaj W standardowym systemie plików.

/ tmp / pliki tymczasowe (patrz także / var / tmp). Często nie są zachowywane między restartami systemu.

Z kilkoma szczegółami wymienionymi w pliku PDF.

OldWolf
źródło
2

Nie możesz wcześniej wybrać jednej nazwy katalogu tymczasowego, która będzie działać dla dowolnego systemu Linux. W rzeczywistości nie można tego zrobić w systemie Windows. Zgodnie z artykułem Wikipedii na temat folderów tymczasowych katalog tymczasowy w systemie Windows jest określany przez zmienną środowiskową TEMP. Jeśli po prostu używasz c:\Tempjako katalogu tymczasowego w systemie Windows, który ustawia TEMP na coś innego, wówczas dowolny program korzystający z pliku XML do wyboru katalogu tymczasowego zawiedzie.

Krótko mówiąc, systemowy katalog tymczasowy jest określany przez środowisko we wszystkich nowoczesnych systemach operacyjnych, które znam, w tym zarówno w systemie Windows, jak i dowolnym systemie podobnym do UNIX. Ustawienie pojedynczej ścieżki statycznej jako katalogu tymczasowego będzie działać tylko tak długo, jak długo wartości domyślne nie zostaną zmienione.

W każdym razie standardowy katalog tymczasowy w typowym systemie Linux to /tmp. Jest to odpowiednik C:\Tempw tym sensie, że jest to tylko domyślny katalog tymczasowy, a nie uniwersalny. Nawet jeśli /tmpjest dostępny, jeśli użytkownik (lub system) ustawił zmienną środowiskową TEMP, zamiast niej należy użyć wartości tej zmiennej.

Możesz spróbować wybrać katalog tymczasowy względem katalogu domowego użytkownika, który możesz utworzyć.

Ryan Thompson
źródło
W moim przypadku myślę, że jest to bezpieczne założenie, że wartości domyślne są nadal stosowane, ale zdecydowanie warto o tym pamiętać.
Wyskakuje
Niektóre programy, takie jak bash, gcc, inkscape lub lynx, używają TMPDIRzmiennej środowiskowej.
Cristian Ciupitu,
@ Ryan, Dlaczego /tmpprzewodniczy zmienna temp?
Pacerier
0

Początkowe pytanie brzmiało: czy Linux ma standardowy katalog tymczasowy. Jeśli tak, to gdzie się znajduje? Foldery tmp znajdują się w: File System / tmp & File System / var / tmp Zawartość / tmp może zostać usunięta - jeśli wiesz, które pliki / foldery są wymagane / nie są wymagane przez różne aplikacje w „zgodnie z wymaganiami” podstawa. Niepotrzebne pliki to zazwyczaj pliki pobrane przez aplikację, aby ułatwić samą aplikację tylko w tym momencie - dlatego nie są już wymagane po uruchomieniu aplikacji. Nie należy w ogóle dotykać folderu / var / tmp.

Franklyn A.
źródło
1
Ta odpowiedź nie zawiera więcej informacji niż odpowiedź zaakceptowana, więc jest całkiem bezużyteczna.
zx485