ไดเร็กทอรีใน / var / run ถูกลบหลังจากรีบูตอย่างหนัก


19

ฉันเก็บสฟิงซ์ pid ไว้ใน /var/run/sphinx/searchd.pid แต่ทุกครั้งที่ฉันรีบูตไดเรกทอรี / var / run / sphinx อย่างหนักจะหายไปและสฟิงซ์ไม่สามารถเริ่มต้นได้ มีวิธีที่จะทำให้ไดเรกทอรีนั้นติดอยู่หรือสร้างขึ้นโดยอัตโนมัติหรือไม่? คนทั่วไปจัดการกับสถานการณ์นี้ได้อย่างไร ฉันใช้ Ubuntu Hardy

ubuntu  pid 

คุณช่วยให้เราส่งออกของmount?
reconbot

คำตอบ:


18

ไดเรกทอรีนั้นเป็นชั่วคราวโดยการออกแบบ หากเนื้อหาของมันติดอยู่ในรองเท้าบูทเอฟเฟกต์น่าเกลียดทุกประเภทอาจเกิดขึ้นได้เนื่องจากสคริปต์ควบคุมของประเภทต่าง ๆ นั้นมองเข้าไปที่นั่นเพื่อดูว่ากระบวนการใดที่ควรส่งสัญญาณ บนระบบล่าสุดลักษณะชั่วคราวนี้ถูกบังคับใช้โดยการติดตั้ง/var/runเป็นtmpfsในขณะที่ระบบเก่าลบทุกอย่างในไดเรกทอรีเมื่อเริ่มต้น

ดังนั้นคุณต้องกำหนดค่าสฟิงซ์หรือสคริปต์เริ่มต้นเพื่อสร้างไดเรกทอรีนั้นหรือเพียงแค่เขียนไฟล์ PID /var/runโดยตรง


4
+1 สำหรับคำอธิบายของ / var / run แต่โปรดทราบว่าเขาไม่ต้องการให้ไฟล์ PID คงอยู่ตลอดการบู๊ต เพียงแค่ไดเรกทอรีสฟิงซ์
Steve Folly

15

คุณมีโอกาสอย่างน้อยสองครั้ง:

  • เปลี่ยนสคริปต์เริ่มต้นของคุณเป็น mkdir -p /var/run/sphinx/

หรือ

  • ตั้งpid_file = /var/run/sphinx-searchd.pidอยู่ใน/etc/sphinx.conf

ฉันเป็นคนที่สอง


2
และแน่นอนนี่หมายความว่าสคริปต์เริ่มต้นจะต้องเรียกใช้เป็นรูทเพื่อให้สามารถเขียนโดยตรงหรือสร้างไดเรกทอรีใน / var / run ซึ่งน่ารำคาญ ...
Eloff

ฉันเลือกวิธีที่สองเช่นกัน ดูเหมือนว่าจะมีความสำคัญสำหรับสิ่งนี้ (cron, ssh, atd, syslog)
BillMan

2

ขณะนี้มีกลไกแบบรวมศูนย์สำหรับการสร้างไฟล์ชั่วคราวและไดเรกทอรีเช่นนี้ บริการที่ต้องการใช้วิธีนี้สามารถลบคำสั่ง mkdir ในสคริปต์เริ่มทำงานของตนเองและวางไฟล์. conf ใน /etc/tmpfiles.d, /run/tmpfiles.d หรือ /usr/lib/tmpfiles.d ด้วย Ubuntu บริการที่ดูเหมือนจะชอบตัวเลือกสุดท้าย /usr/lib/tmpfiles.d/sphinx.confสำหรับกรณีของคุณสร้างไฟล์
เนื้อหาของไฟล์จะเป็น:
d /var/run/sphinx 0755 root root

ที่นี่dหมายถึงไดเรกทอรีถัดจากมันคือเส้นทางการอนุญาตเจ้าของและกลุ่ม
สิ่งนี้จะสร้าง/var/run/sphnixไดเรกทอรีเมื่อรีบูต

ชำระเงินเต็มเอกสารtmpfiles.d

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.