Где временный каталог в Linux?


63

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


1
Я знаю, что это выглядит как очень простой вопрос, но я не мог найти ясный, простой ответ через поиск. Многие из результатов, которые я получил, были для программных временных каталогов / файлов. Я видел несколько ссылок на них /tmp, но они были неоднозначны относительно того, является ли это стандартом для Linux или просто общим соглашением.
— Pops

5
Windows, C:\Tempбезусловно, не является стандартным. Windows 95 уже %TEMP%указывал на C:\WINDOWS\Temp.
— Гравитация

Ответы:


91

Стандарт Иерархии Файловой Системы версии 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 Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.


Сложно спорить со стандартом. Спасибо!
— Pops

11

Это старый вопрос, поэтому сегодня есть еще один вариант. Дистрибутивы Linux, на systemdкоторые полагается (а это 90%), теперь могут использовать $XDG_RUNTIME_DIRкаталог ( спецификация XDG Base Directory ) для хранения определенных типов временных файлов. Обычно он находится по адресу /run/user/$uid. Это каталог для пользователя с 700разрешениями, которые обеспечивают лучшую безопасность. Это tmpfsкрепление, которое обеспечивает производительность. Недостатком tmpfsявляется то, что он должен использоваться только для хранения небольших файлов и сокетов.

Я смотрю на это как на брак /tmpи /var/run.


Конечно, технологии улучшились с 5 лет
— Ясс

10

Да / TMP для общего пользования. Смотрите здесь и здесь О стандарте иерархии файловой системы.

/ tmp / Временные файлы (см. также / var / tmp). Часто не сохраняется между перезагрузками системы.

С некоторыми подробностями, перечисленными в PDF.


2

Вы не можете заранее выбрать одно временное имя каталога, которое будет работать для любой системы Linux. На самом деле, вы не можете сделать это и в Windows. Согласно статье Википедии о временных папках , временный каталог в Windows определяется переменной среды TEMP. Если бы вы просто использовали c:\Tempв качестве временного каталога в системе Windows, в котором для TEMP установлено другое значение, любая программа, использующая ваш XML-файл для выбора временного каталога, потерпит неудачу.

Короче говоря, системный временный каталог определяется средой во всех известных мне современных операционных системах, включая как Windows, так и любую UNIX-подобную систему. Установка одного статического пути в качестве временного каталога будет работать только до тех пор, пока значения по умолчанию не будут изменены.

Во всяком случае, стандартный временный каталог в типичной системе Linux есть /tmp. Это эквивалент C:\Tempв том смысле, что это только временный каталог по умолчанию, а не универсальный. Даже если /tmpдоступно, если пользователь (или система) установил переменную среды TEMP, вместо нее следует использовать значение этой переменной.

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


В моем случае, я думаю, это безопасное предположение, что значения по умолчанию все еще в силе, но это, безусловно, хорошо иметь в виду.
— Pops

Некоторые программы, такие как bash, gcc, inkscape или lynx, используют TMPDIRпеременную окружения.
— Кристиан Чиупиту

@Ryan, почему /tmpпредседательствует над временной переменной?
— Pacerier

0

Первоначальный вопрос был: есть ли в Linux стандартный временный каталог. Если да, где он находится? Папки (ы) tmp находятся по адресу: Файловая система / tmp & Файловая система / var / tmp Содержимое / tmp может быть удалено - если вы знаете, какие файлы / папки требуются / не требуются различными приложениями в «по мере необходимости» основа. К необязательным файлам обычно относятся файлы, загруженные приложением, чтобы упростить само приложение только в этот момент, и, следовательно, больше не требуется после выполнения приложения. Папка / var / tmp не должна быть затронута вообще.


1
Этот ответ не дает больше информации, чем принятый ответ, поэтому он совершенно бесполезен.
— zx485
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.