Где временный каталог в 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.

oᴉɹǝɥɔ
источник
Конечно, технологии улучшились с 5 лет
Ясс
10

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

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

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

OldWolf
источник
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 не должна быть затронута вообще.

FranklynA
источник
1
Этот ответ не дает больше информации, чем принятый ответ, поэтому он совершенно бесполезен.
zx485