Де знаходиться тимчасовий каталог у Linux?


63

Чи має Linux стандартний тимчасовий каталог для загального використання, як-от C:\Tempпапка Windows ? Якщо так, то де він знаходиться? Я знайшов питання про те, як tmpпрограмно знайти каталог , але я хочу встановити тимчасове розташування у файлі конфігурації XML достроково.


1
Я знаю, що це виглядає як справді просте запитання, але я не зміг знайти чітку, просту відповідь шляхом пошуку. Багато результатів, які я отримав, стосувалися тимчасових каталогів / файлів, характерних для програми. Я бачив кілька посилань на це /tmp, але вони були неоднозначними щодо того, чи це стандарт для Linux чи просто загальна умова.
Попс

5
Вікна, C:\Tempзвичайно, не є стандартними. Windows 95 вже %TEMP%вказував C:\WINDOWS\Temp.
grawity

Відповіді:


91

Filesystem Hierarchy Standard версії 3.0 говорить:

/ tmp: Тимчасові файли

Програми /tmpповинні бути доступними для програм, які потребують тимчасових файлів.

Програми не повинні припускати, що будь-які файли чи каталоги в /tmpних зберігаються між викликами програми.

Обґрунтування

Стандарт IEEE POSIX.1-2008 перераховує вимоги, подібні до вищевказаного розділу. Хоча дані, що зберігаються у, /tmpможуть бути видалені в залежності від конкретного сайту, рекомендується, щоб файли та каталоги, що знаходяться в ньому, /tmpвидалялися під час завантаження системи.

FHS додав цю рекомендацію на основі історичного прецеденту та звичної практики, але не зробив це вимогою, оскільки адміністрування системи не входить у сферу застосування цього стандарту.

/ var / tmp: Тимчасові файли, що зберігаються між перезавантаженнями системи

/var/tmpКаталог доступний для програм , які потребують тимчасові файли або каталоги , які повинні зберігатися між перезавантаженнями системи. Тому дані, що зберігаються в, /var/tmpє більш стійкими, ніж дані в /tmp.

Файли та каталоги, розташовані в, /var/tmpне повинні видалятися під час завантаження системи. Хоча дані, що зберігаються, /var/tmpяк правило, видаляються в залежності від конкретного сайту, рекомендується, щоб видалення відбувалися з менш частим інтервалом, ніж інтервал /tmp.

Також у Технічних характеристиках бази відкритої групи, випуск 7, змінні середовища згадуються наступні:

TMPDIR Ця змінна повинна представляти ім'я довідника, доступного для програм, яким потрібне місце для створення тимчасових файлів.


Важко сперечатися зі стандартом. Дякую!
Попс

11

Це старе питання, тому сьогодні є інший варіант. Дистрибутиви Linux, на systemdякі покладається (що становить 90%), тепер можуть використовувати $XDG_RUNTIME_DIRкаталог ( специфікація базового каталогу XDG ) для зберігання певних типів тимчасових файлів. Зазвичай він знаходиться за адресою /run/user/$uid. Це каталог для користувачів з 700дозволами, який забезпечує кращу безпеку. Це tmpfsкріплення, яке забезпечує продуктивність. Мінусом tmpfsє те, що його слід використовувати лише для збереження невеликих файлів та сокетів.

Я дивлюся на це як на шлюб /tmpі /var/run.


Звичайно, технологія вдосконалюється з 5 років
1717 року

10

Так / tmp - для загального використання. Дивіться тут і тут Про стандарт ієрархії файлової системи.

/ tmp / Тимчасові файли (див. також / var / tmp). Часто не зберігається між перезавантаженнями системи.

З додатковими деталями, переліченими у PDF.


2

Ви не можете достроково вибрати одне ім’я тимчасового каталогу, яке буде працювати для будь-якої системи Linux. Насправді, ви не можете цього зробити і в Windows. Відповідно до статті Wikipedia про тимчасові папки , тимчасовий каталог у Windows визначається змінною середовища TEMP. Якщо ви просто використовували c:\Tempяк тимчасовий каталог у системі Windows, яка встановила TEMP на щось інше, то будь-яка програма, що використовує ваш XML-файл для вибору тимчасового каталогу, не змогла б.

Коротше кажучи, системний тимчасовий каталог визначається середовищем для всіх сучасних мені операційних систем, включаючи Windows та будь-яку систему, схожу на UNIX. Встановлення єдиного статичного шляху як вашого тимчасового каталогу буде працювати лише до тих пір, поки параметри за замовчуванням не будуть змінені.

У всякому разі, стандартний тимчасовий каталог у типовій системі Linux є /tmp. Це еквівалент C:\Tempу тому сенсі, що це лише тимчасовий каталог за замовчуванням, а не універсальний. Навіть якщо /tmpвін доступний, якщо користувач (або система) встановив змінну середовища TEMP, замість цього слід використовувати значення цієї змінної.

Ви можете спробувати вибрати тимчасовий каталог відносно домашнього каталогу користувача, який ви можете створити.


У моєму випадку я вважаю, що це безпечне припущення, що типові параметри все ще існують, але це, безумовно, добре пам’ятати.
Попс

Деякі програми, такі як bash, gcc, inkscape або lynx, використовують TMPDIRзмінну середовища.
Крістіан Цюпіту

@ Райан, Чому /tmpголовує тимчасова змінна?
Pacerier

0

Початкове запитання було: чи має Linux стандартний тимчасовий каталог. Якщо так, то де він знаходиться? Папки (типи) tmp можна знайти за адресою: Файлова система / tmp та файлова система / var / tmp Вміст / tmp можна буде видалити - якщо ви знаєте, які файли / папки потрібні / не потрібні різним програмам на "як потрібно" основа. Непотрібні файли, як правило, завантажуються програмою, щоб полегшити роботу самого додатка лише в цей момент, тому додатково не потрібно після їх виконання. Папку / var / tmp не слід взагалі торкатися.


1
Ця відповідь не дає більше інформації, ніж прийнята відповідь, тому цілком марна.
zx485
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.