Direktori dalam / var / run terhapus setelah hard reboot

19

Saya menyimpan pid sphinx saya di /var/run/sphinx/searchd.pid tetapi setiap kali saya me-reboot direktori / var / run / sphinx menghilang dan sphinx gagal untuk memulai. Apakah ada cara untuk membuat direktori itu menempel atau membuatnya secara otomatis dibuat? Bagaimana orang biasanya menangani situasi ini? Saya menggunakan Ubuntu Hardy


sumber
Bisakah Anda memberi kami hasil mount?
Mengulang kembali

Jawaban:

18

Direktori itu hanya sementara. Jika isinya terjebak di sepatu bot, semua jenis efek buruk dapat terjadi, karena skrip kontrol dari berbagai jenis melihat di sana untuk melihat proses apa yang harus mereka sinyalkan. Pada sistem baru-baru ini, sifat sementara ini diberlakukan oleh pemasangan /var/runsebagai tmpfs, sementara sistem yang lebih lama hanya menghapus semua yang ada di direktori saat startup.

Oleh karena itu, Anda perlu mengonfigurasi Sphinx atau skrip startupnya untuk membuat direktori itu, atau cukup menulis file PID /var/runsecara langsung.

Phil Miller
sumber
4
+1 untuk deskripsi / var / run. Tetapi perhatikan bahwa dia tidak ingin file PID persisten saat reboot; hanya direktori sphinx.
Steve Folly
15

Anda memiliki dua peluang setidaknya:

  • ubah skrip init Anda untuk melakukan a mkdir -p /var/run/sphinx/

atau

  • set pid_file = /var/run/sphinx-searchd.piddi/etc/sphinx.conf

Saya untuk yang kedua.

drAlberT
sumber
2
Dan tentu saja ini berarti skrip startup harus dijalankan sebagai root untuk dapat menulis langsung ke atau membuat direktori di / var / run. Yang menyebalkan ...
Eloff
Saya memilih solusi kedua juga. Sepertinya ada prioritas untuk ini (cron, ssh, atd, syslog).
BillMan
2

sekarang ada mekanisme terpusat untuk pembuatan file dan direktori sementara seperti ini. Sebuah layanan yang ingin menggunakan metode ini dapat menghapus perintah mkdir di skrip startup-nya sendiri dan sebagai gantinya menempatkan file .conf di /etc/tmpfiles.d, /run/tmpfiles.d, atau /usr/lib/tmpfiles.d, dengan Ubuntu layanan yang tampaknya lebih suka opsi terakhir. untuk kasus Anda, buat file /usr/lib/tmpfiles.d/sphinx.conf.
isi dari file tersebut adalah:
d /var/run/sphinx 0755 root root

di sini dsingkatan direktori, di sebelahnya ada path, izin, pemilik dan grup.
Ini akan membuat /var/run/sphnixdirektori saat reboot.

Lihat tmpfiles dokumentasi lengkap

Aakash Singhal
sumber