(Terima kasih kepada @Zulakis dan jawaban pada Serverfault karena menunjukkan bahwa jawaban ini tidak mengikuti perkembangan Ubuntu yang sedang berlangsung.)
Dengan adopsi systemdpada 15.04 , sekarang ada mekanisme terpusat untuk penciptaan file-file sementara dan direktori seperti ini. Sebuah layanan yang ingin menggunakan metode ini dapat menghapus mkdirperintah dalam skrip startup sendiri dan bukannya menempatkan .conffile dalam /etc/tmpfiles.d, /run/tmpfiles.datau /usr/lib/tmpfiles.d, dengan layanan Ubuntu seakan lebih memilih opsi terakhir. Misalnya, sistem saya sekarang memiliki:
$ egrep -r /var/run /usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/var.conf:L /var/run - - - - ../run
/usr/lib/tmpfiles.d/sudo.conf:d /var/run/sudo 0711 root root
/usr/lib/tmpfiles.d/sudo.conf:D /var/run/sudo/ts 0700 root root
/usr/lib/tmpfiles.d/postgresql.conf:d /var/run/postgresql 2775 postgres postgres - -
/usr/lib/tmpfiles.d/sshd.conf:d /var/run/sshd 0755 root root
/usr/lib/tmpfiles.d/screen-cleanup.conf:d /var/run/screen 0775 root utmp
The dsarana untuk membuat direktori jika tidak sudah ada, setelah itu adalah jalan, dan sisanya adalah hak akses, pengguna, dan kelompok. Direktori ini akan dibuat terlepas dari apakah layanan yang sesuai pernah dimulai.
Untuk dokumentasi lengkap, lihat man tmpfiles.d.
JAWABAN PRE-SYSTEMD LAMA:
Sepertinya mereka dibuat secara dinamis oleh layanan individual saat mereka mulai:
$ sudo egrep -r 'mkdir.*/var/run' /etc
/etc/init.d/ssh: mkdir /var/run/sshd
/etc/init.d/bind9: mkdir -p /var/run/named
/etc/init.d/timidity: mkdir -p /var/run/timidity
/etc/init.d/bzflag: mkdir -p /var/run/bzflag
/etc/init.d/dns-clean:mkdir /var/run/pppconfig >/dev/null 2>&1 || true
/etc/init/winbind.conf: mkdir -p /var/run/samba/winbindd_privileged
/etc/init/dbus.conf: mkdir -p /var/run/dbus
/etc/init/ssh.conf: mkdir -p -m0755 /var/run/sshd
/etc/init/libvirt-bin.conf: mkdir -p /var/run/libvirt
/etc/init/cups.conf: mkdir -p /var/run/cups/certs
Saya percaya ini adalah yang menangani mysqld:
[ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
/lib/init/apparmor-profile-load usr.sbin.mysqld
man install mengatakan bahwa bentuk -d akan "membuat semua komponen dari direktori yang ditentukan".