51

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

4 ответа4

80

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

9

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

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

9

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .