
Есть ли в Linux стандартный временный каталог для общего пользования, как папка Windows C:\Temp
? Если да, то где он находится? Я нашелвопрос SO о tmp
программном поиске каталога, но я хочу заранее задать временное местоположение в XML-файле конфигурации.
решение1
TheСтандарт иерархии файловой системыверсия 3.0 гласит:
/tmp : Временные файлы
Каталог
/tmp
должен быть доступен для программ, которым требуются временные файлы.Программы не должны предполагать, что какие-либо файлы или каталоги
/tmp
сохраняются между вызовами программы.Обоснование
Стандарт IEEE POSIX.1-2008 перечисляет требования, аналогичные приведенному выше разделу. Хотя данные, хранящиеся в ,
/tmp
могут быть удалены в зависимости от сайта, рекомендуется/tmp
удалять файлы и каталоги, расположенные в , при каждой загрузке системы.FHS добавила эту рекомендацию на основе исторического прецедента и общепринятой практики, но не сделала ее обязательным требованием, поскольку системное администрирование не входит в сферу действия этого стандарта.
/var/tmp : Временные файлы, сохраняемые между перезагрузками системы.
Каталог
/var/tmp
доступен для программ, которым требуются временные файлы или каталоги, сохраняемые между перезагрузками системы. Поэтому данные, хранящиеся в,/var/tmp
более устойчивы, чем данные в/tmp
.Файлы и каталоги, расположенные в ,
/var/tmp
не должны удаляться при загрузке системы. Хотя данные, хранящиеся в ,/var/tmp
обычно удаляются в зависимости от сайта, рекомендуется, чтобы удаления происходили с меньшей частотой, чем/tmp
.
Так жеСпецификации Open Group Base, выпуск 7, Переменные средыупоминает следующее:
TMPDIR
Эта переменная должна представлять собой путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.
системдтакже имеет свое мнение по этому поводу:
/tmp/
и/var/tmp/
два каталога, доступных для записи всем пользователям, которые Linux-системы предоставляют для временных файлов. Первый обычно находится наtmpfsи, таким образом, поддерживается RAM/swap и очищается при каждой перезагрузке. Последнее обычно является надлежащей, постоянной файловой системой и, таким образом, поддерживается физическим хранилищем. Это означает:
/tmp/
следует использовать только для небольших файлов с ограниченным размером;/var/tmp/
следует использовать для всего остального.Данные, которые должны сохраниться после цикла загрузки, не следует помещать в
/tmp/
.Если
$TMPDIR
переменная окружения установлена, используйте этот путь и не используйте/tmp/
напрямую/var/tmp/
.Видетьиерархия файлов(7)для получения подробной информации об этих двух (и большинстве других) каталогах системы Linux.
Пути можно запросить с помощьюsystemd-путь:
$ systemd-path temporary
/tmp
$ systemd-path temporary-large
/var/tmp
FreeBSD,NetBSD,OpenBSDиDragonFlyесть что-то похожее, описанное вздесь(7)страница руководства.
решение2
Это старый вопрос, поэтому сегодня доступен другой вариант. Дистрибутивы Linux, которые полагаются на systemd
(а это 90% из них), теперь могут использовать $XDG_RUNTIME_DIR
каталог (Спецификация базового каталога XDG) для хранения определенных типов временных файлов. Обычно он находится в /run/user/$uid
.
- Это каталог для каждого пользователя, в котором
700
файлы хранятся в тайне. - Это
tmpfs
крепление (он же RAM-диск) с отличной производительностью. - Он очищается автоматически.
Недостатком tmpfs
является то, что его следует использовать только для хранения небольших файлов (файлов PID, файлов блокировки, сокетов и т. д.).
решение3
решение4
Первоначальный вопрос был: есть ли в Linux стандартный временный каталог. Если да, то где он находится? Папка(и) tmp находятся по адресу: File System/tmp и File System/var/tmp Содержимое /tmp можно удалить, если вы знаете, какие файлы/папки требуются/не требуются различным приложениям по принципу «по мере необходимости». Необязательные файлы — это обычно те, которые загружаются приложением для облегчения работы самого приложения только в этот момент, поэтому они больше не требуются после того, как приложение завершит работу. Папку /var/tmp вообще не следует трогать.