(Terima kasih kepada @Zulakis dan jawaban pada Serverfault karena menunjukkan bahwa jawaban ini tidak mengikuti perkembangan Ubuntu yang sedang berlangsung.)
Dengan adopsi systemd
pada 15.04 , sekarang ada mekanisme terpusat untuk penciptaan file-file sementara dan direktori seperti ini. Sebuah layanan yang ingin menggunakan metode ini dapat menghapus mkdir
perintah dalam skrip startup sendiri dan bukannya menempatkan .conf
file dalam /etc/tmpfiles.d
, /run/tmpfiles.d
atau /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 d
sarana 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".