(ขอบคุณ @Zulakis และคำตอบเกี่ยวกับ Serverfaultสำหรับการชี้ให้เห็นว่าคำตอบนี้ไม่ได้รับการพัฒนาอย่างต่อเนื่องของ Ubuntu)
ด้วยการนำไปใช้systemd
ณ15.04ขณะนี้มีกลไกแบบรวมศูนย์สำหรับการสร้างไฟล์ชั่วคราวและไดเรกทอรีเช่นนี้ มีบริการที่ประสงค์จะใช้วิธีการนี้สามารถลบmkdir
คำสั่งในบทเริ่มต้นของตัวเองและแทนที่จะวาง.conf
แฟ้มใน/etc/tmpfiles.d
, /run/tmpfiles.d
หรือ/usr/lib/tmpfiles.d
ด้วยการให้บริการ Ubuntu ดูเหมือนจะต้องการตัวเลือกสุดท้าย ตัวอย่างเช่นระบบของฉันมี:
$ 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
d
หมายถึงการสร้างไดเรกทอรีถ้ามันไม่ได้อยู่แล้วหลังจากนั้นเป็นเส้นทางและส่วนที่เหลือเป็นสิทธิ์ของผู้ใช้และกลุ่ม ไดเรกทอรีเหล่านี้จะถูกสร้างขึ้นไม่ว่าจะมีการให้บริการที่เกี่ยวข้องหรือไม่
man tmpfiles.d
สำหรับเอกสารเต็มรูปแบบให้ดู
คำตอบก่อนระบบก่อนหน้า:
ดูเหมือนว่าพวกเขาสร้างขึ้นแบบไดนามิกโดยบริการส่วนบุคคลที่พวกเขาเริ่มต้น:
$ 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
ฉันเชื่อว่านี่คือสิ่งที่จัดการ 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
ระบุว่ารูปแบบ -d จะ "สร้างส่วนประกอบทั้งหมดของไดเรกทอรีที่ระบุ"