En ubuntus reciente (específicamente, lo que más me interesa es 12.04) /var/runes tmpfs y, por lo tanto, supongo que comienza vacío con cada reinicio.
Sin embargo, veo allí algunas carpetas, como /var/run/mysqldy muchas otras. ¿Cómo se crean esas carpetas en cada reinicio? ¿Hay alguna carpeta de plantilla que se copió /var/run/(y si es así, qué script hace eso), o cada carpeta se mkdireditó por separado, o qué?
EDITAR:
Por favor, no responda que /var/runes persistente o que /runes persistente. Porque no lo es.
Incluso si es así en su sistema, no es así en un 12.04 normal.
boot
filesystem
Sandman4
fuente
fuente

Respuestas:
(Gracias a @Zulakis y una respuesta en Serverfault por señalar que esta respuesta no se había mantenido al día con el desarrollo continuo de Ubuntu).
Con la adopción a
systemdpartir del 15.04 , ahora existe un mecanismo centralizado para la creación de archivos y directorios temporales como estos. Un servicio que deseen utilizar este método puede eliminarmkdircomandos en su propio fichero de arranque y en su lugar colocar un.confarchivo en/etc/tmpfiles.d,/run/tmpfiles.do/usr/lib/tmpfiles.d, con servicios de Ubuntu que parece preferir la última opción. Por ejemplo, mi sistema ahora tiene:Los
dmedios para crear un directorio si aún no existe, después de eso es la ruta, y el resto son los permisos, el usuario y el grupo. Estos directorios se crearán independientemente de si alguna vez se inició el servicio correspondiente.Para la documentación completa, ver
man tmpfiles.d.ANTIGUA RESPUESTA PRE-SISTEMA:
Parece que fueron creados dinámicamente por servicios individuales cuando comienzan:
Creo que este es el que maneja mysqld:
man installdice que el formulario -d "creará todos los componentes de los directorios especificados".fuente
La nueva
/runcarpeta montada en tmpfs permite que programas como udev, lvm y mdadm mantengan los datos de tiempo de ejecución desde initrd hasta el apagado./vares un directorio estándar de cualquier sistema Linux / UNIX: significa "variable" y es un lugar donde muchos registros, cahces, PERO también programan archivos de configuración variable e incluso algunas bases de datos de configuración del sistema.La mayoría de las cosas
/vardeben ser purgadas y reguladas adecuadamente por el sistema. Sus archivos de intercambio para memoria virtual también viven,/varasí que no se meta con eso./var/runtambién contiene mucha información sobre el estado y los parámetros de los daemans de proceso que se ejecutan activamente.Este directorio contiene datos de información del sistema que describen el sistema desde que se inició. Los archivos de este directorio deben borrarse (eliminarse o truncarse según corresponda) al comienzo del proceso de arranque. Los programas pueden tener un subdirectorio de
/var/run; Esto se recomienda para los programas que utilizan más de un archivo de tiempo de ejecución.Bueno ya que
/var/runestá montado como tmpfs. Eso significa que está totalmente vacío cuando su máquina arranca y está destinado a ser así para evitar que cosas como los demonios no se inicien debido a un archivo PID sobrante.Los scripts de inicio generalmente crean los directorios que necesitan antes de usarlos. Si desea almacenar un archivo PID, póngalo
/var/rundirectamente o cree un directorio antes de crear el archivo PID. Este no es un lugar para almacenar datos que deben permanecer allí durante los reinicios.Fuentes: Nombre del camino y Guía del administrador del sistema Linux
fuente
Para cualquiera que se encuentre con este hilo porque está buscando una solución a cómo puede configurar una aplicación para que cree el directorio
/var/runy pueda almacenar su archivo sock o pid o lo que sea ... aquí hay un ejemplo. Encontré este hilo porque quería almacenar el archivo de calcetín MySQL/var/run/mysqld. Entonces, después de encontrar este hilo, comencé a buscar/etc/initejemplos en los archivos. dbus fue bueno. Y se me ocurrió esta configuración de inicio de MySQL:La parte del guión previo al inicio hizo el truco.
fuente
Como se define en la jerarquía de archivos estándar de la
/var/runo/runse utiliza para almacenar los datos de tiempo de ejecución volátiles.Todas las carpetas y archivos creados allí son administrados por el programa respectivo que creó los archivos. No existe una carpeta de plantillas que se copie, cada programa puede usar esa carpeta para almacenar información volátil. Los datos almacenados se pierden cuando el sistema se reinicia.
Una cosa común para usar la
/runcarpeta es almacenar lospiddemonios en ejecución, archivos de marcador que contienen el número de proceso de un proceso. Se utilizan principalmente para los scripts de inicio / detención que puede encontrar, por ejemplo, en/etc/init.d/¡Espero que esto te haya aclarado las cosas!
br
fuente
Su suposición no es absolutamente correcta. La ubicación de la
/varcarpeta es negociable, es decir, puede usar una partición o volumen alternativo para ubicar la/varcarpeta. Independientemente de dónde/varse encuentre la/var/runcarpeta , la carpeta es un enlace simbólico a la/runcarpeta y su contenido permanece después del reinicio, aunque muchos de los archivos/runse generan o modifican en el arranque por los servicios que comienzan durante el arranque. Por lo tanto, son los servicios, como por ejemplomysqld, los que requieren cargar archivos en el/var/rundirectorio y están configurados para crear subdirectorios si no existen actualmente.fuente
douggro tiene toda la razón, / var / run está montado como tmpfs y / var / run es un enlace simbólico a / run que es persistente en todos los reinicios, por lo que todo lo que entra / ejecuta también aparecerá en (y permanecerá) / var / correr.
Por lo tanto, cualquier servicio de arranque como mysqld, que es un demonio que se inicia en el momento del arranque, que crea archivos en / run, también tendrá archivos visibles en / var / run (enlace simbólico a / run remember). Si desea crear un archivo que persista durante un reinicio en / var / run, créelo en / run y luego reinicie.
Espero que esto responda a su pregunta.
fuente
tmpfses volátil y se pierden los cambios.