En ubuntus reciente (específicamente, lo que más me interesa es 12.04) /var/run
es tmpfs y, por lo tanto, supongo que comienza vacío con cada reinicio.
Sin embargo, veo allí algunas carpetas, como /var/run/mysqld
y 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 mkdir
editó por separado, o qué?
EDITAR:
Por favor, no responda que /var/run
es persistente o que /run
es 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
systemd
partir 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 eliminarmkdir
comandos en su propio fichero de arranque y en su lugar colocar un.conf
archivo en/etc/tmpfiles.d
,/run/tmpfiles.d
o/usr/lib/tmpfiles.d
, con servicios de Ubuntu que parece preferir la última opción. Por ejemplo, mi sistema ahora tiene:Los
d
medios 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 install
dice que el formulario -d "creará todos los componentes de los directorios especificados".fuente
La nueva
/run
carpeta montada en tmpfs permite que programas como udev, lvm y mdadm mantengan los datos de tiempo de ejecución desde initrd hasta el apagado./var
es 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
/var
deben ser purgadas y reguladas adecuadamente por el sistema. Sus archivos de intercambio para memoria virtual también viven,/var
así que no se meta con eso./var/run
tambié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/run
está 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/run
directamente 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/run
y 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/init
ejemplos 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/run
o/run
se 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
/run
carpeta es almacenar lospid
demonios 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
/var
carpeta es negociable, es decir, puede usar una partición o volumen alternativo para ubicar la/var
carpeta. Independientemente de dónde/var
se encuentre la/var/run
carpeta , la carpeta es un enlace simbólico a la/run
carpeta y su contenido permanece después del reinicio, aunque muchos de los archivos/run
se 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/run
directorio 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
tmpfs
es volátil y se pierden los cambios.