В недавнем Ubuntus (в частности, меня больше всего интересует 12.04) /var/run
- это tmpfs, и поэтому я предполагаю, что он запускается пустым при каждой перезагрузке.
Тем не менее, я вижу там некоторые папки, как /var/run/mysqld
и многие другие. Как эти папки создаются при каждой перезагрузке? Есть ли какая-нибудь папка с шаблоном, в которую была скопирована /var/run/
(и если да, то какой скрипт это делает), или каждая папка mkdir
редактировалась отдельно, или как?
РЕДАКТИРОВАТЬ:
Пожалуйста, не отвечайте, что /var/run
является постоянным или /run
постоянным. Потому что это не так.
Даже если это так в вашей системе, это не так на обычной 12.04.
boot
filesystem
Sandman4
источник
источник
Ответы:
(Спасибо @Zulakis и ответу на Serverfault за указание на то, что этот ответ не поспевал за продолжающейся разработкой Ubuntu.)
С принятием
systemd
от 15.04 , в настоящее время существует централизованный механизм для создания временных файлов и каталогов , таких как они. Служба желающих использовать этот метод можно удалитьmkdir
команды в своем сценарии запуска и вместо того, чтобы поместить.conf
файл в/etc/tmpfiles.d
,/run/tmpfiles.d
или/usr/lib/tmpfiles.d
, с услугами Ubuntu кажущимися предпочитают последний вариант. Например, моя система теперь имеет:В
d
средство для создания каталога , если он уже не существует, после того, что это путь, а остальные являются права доступа, пользователь и группа. Эти каталоги будут созданы независимо от того, запущена ли соответствующая служба.Для полной документации см
man tmpfiles.d
.СТАРЫЙ ПРЕД-СИСТЕМНЫЙ ОТВЕТ:
Похоже, они динамически создаются отдельными службами при запуске:
Я считаю, что это тот, который обрабатывает mysqld:
man install
говорит, что форма -d "создаст все компоненты указанных каталогов".источник
Новая
/run
папка, монтируемая в tmpfs, позволяет таким программам, как udev, lvm и mdadm, сохранять данные времени выполнения от initrd до завершения работы./var
является стандартным каталогом любой системы Linux / UNIX - он обозначает «переменная» и является местом, где хранится множество журналов, файлов, НО также программируются файлы настроек переменных и даже некоторые базы данных конфигурации системы.Большинство вещей
/var
должно быть должным образом очищено и отрегулировано системой. Ваши файлы подкачки для виртуальной памяти также живут,/var
так что не связывайтесь с этим./var/run
также содержит много информации о состоянии и параметрах активно работающих демонов процессов.Этот каталог содержит данные системной информации, описывающие систему с момента ее загрузки. Файлы в этом каталоге должны быть очищены (удалены или усечены соответствующим образом) в начале процесса загрузки. Программы могут иметь подкаталог
/var/run
; это рекомендуется для программ, которые используют более одного файла времени выполнения.Хорошо, так
/var/run
как монтируется как tmpfs. Это означает, что когда ваша машина загружается, она полностью пуста и должна быть такой, чтобы предотвратить запуск таких вещей, как демоны, из-за оставшегося PID-файла.Скрипты запуска обычно создают нужные им каталоги перед их использованием. Если вы хотите сохранить PID-файл, поместите его
/var/run
непосредственно или создайте каталог перед созданием PID-файла. Это не место для хранения данных, которые должны оставаться там при перезагрузках.Источники: Pathname & Linux System Administrator's Guide.
источник
Для любого, кто сталкивается с этим потоком, потому что вы ищете решение о том, как вы можете настроить приложение так, чтобы оно создавало каталог,
/var/run
чтобы оно могло хранить свой файл sock или pid или что-то еще… вот пример. Я наткнулся на эту тему, потому что я хотел сохранить файл с носком MySQL/var/run/mysqld
. Итак, после того, как я наткнулся на эту тему, я начал искать в/etc/init
файлах примеры. дбус был хорошим. И я придумал эту конфигурацию запуска mysql:Предварительная часть сценария сделала свое дело.
источник
Как определено в файле Стандарт иерархии
/var/run
или/run
используется для хранения данных во время выполнения летучих.Все созданные там папки и файлы управляются соответствующей программой, создавшей файлы. Не существует такой вещи, как папка с шаблоном, которая копируется, каждая программа может использовать эту папку для хранения изменчивой информации. Сохраненные данные теряются при перезагрузке системы.
Обычно для использования этой
/run
папки хранятсяpid
запущенные демоны, файлы маркеров, которые содержат номер процесса. Они в основном используются для сценариев запуска / остановки, которые вы можете найти, например, в/etc/init.d/
Я надеюсь, что все прояснилось!
уш
источник
Ваше предположение не совсем верно. Местоположение
/var
папки является договорным, то есть вы можете использовать альтернативный раздел или том, на котором можно найти/var
папку. Независимо от того, где находится/var
папка,/var/run
папка является символической ссылкой на/run
папку, и ее содержимое остается после перезагрузки, хотя многие файлы в ней/run
создаются или изменяются при загрузке службами, запускающимися во время загрузки. Таким образом, именно службы, напримерmysqld
, вызывают загрузку файлов в/var/run
каталог и предназначены для создания подкаталогов, если они не существуют в настоящее время.источник
douggro абсолютно прав, / var / run монтируется как tmpfs, а / var / run является символической ссылкой на / run, которая постоянна при перезагрузках, поэтому все, что входит в / run, также будет отображаться в (и оставаться в) / var / запустить.
Поэтому любые загрузочные сервисы, такие как mysqld, который является демоном, запускаемым во время загрузки, который создает файлы в / run, также будут иметь файлы, видимые в / var / run (символическая ссылка на / run запомнить). Если вы хотите создать файл, который будет сохраняться после перезагрузки в / var / run, создайте его в / run и затем перезагрузите.
Надеюсь, что это ответ на ваш вопрос.
источник
tmpfs
изменчив и изменения потеряны.