Jadikan ulimits berfungsi dengan start-stop-daemon

20

Saya memiliki init.dskrip yang memulai aplikasi menggunakan start-stop-daemon --chuid SOME_SYSTEM_USER. Artinya, aplikasi berjalan di bawah pengguna yang berbeda, bukan root.

Masalahnya, aplikasi memerlukan pengaturan batas khusus (yaitu ulimit -n 64000), yang saya atur limits.conf. Ini berfungsi cukup baik ketika saya menjalankannya langsung dari shell: su - SOME_SYSTEM_USER+ mulai aplikasi dari shell.

Tetapi ketika dijalankan melalui start-stop-daemon --chuiddari /etc/init.d, batas-batas ini diabaikan. Maka aplikasi gagal berfungsi, jelas.

Bagaimana saya memaksa start-stop-daemonuntuk menghormati ulimitpengaturan?


Debian Squeeze, 2.6.32-5-686 # 1 SMP Sab 5 Mei 01:33:08 UTC 2012 i686 GNU / Linux

pengguna124114
sumber

Jawaban:

23

Pada saat ini, Anda tidak bisa. limits.conf(5)adalah konfigurasi untuk pam_limits(8), yang diaktifkan oleh tumpukan PAM sesuai dengan konfigurasi pada /etc/pam.d. Namun, start-stop-daemon(8)ketika diluncurkan dari skrip init.d tidak melewati tumpukan PAM, jadi pengaturan seperti itu tidak pernah diterapkan.

Bug Debian # 302079 berisi tambalan untuk mengaktifkan batas pengaturan start-stop-daemon(8), tetapi bug telah dibuka sejak 2005 dan tambalan belum digabungkan.

Meskipun tidak ideal, AFAIK cara yang disarankan untuk melakukan ini sekarang adalah dengan menambahkan ulimitpanggilan di skrip init.d Anda.

randy
sumber
Tambahkan saja ulimitpengaturan tepat sebelum start-stop-daemonperintah. (Yaitu ulimit -n 64000) ... untuk orang bodoh seperti saya.
Ryan Schumacher
Jika, tidak seperti OP, Anda tidak tahu crash daemon mana, saya baru saja mendapatkan hasil yang bagus pada Debian Wheezy me-restart daemon setelah: echo "ulimit -c unlimited" | sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey
Beberapa informasi latar belakang yang lebih berharga dapat ditemukan di sini: serverfault.com/a/642082/22394
sehe
7

Anda juga dapat menggunakan perintah 'limit' di skrip pemula.

Dalam file /etc/init/foo.conf, tambahkan baris:

limit nofile 64000 64000

64000 pertama adalah batas lunak, dan yang kedua adalah batas keras.

Anda dapat menemukan informasi lebih lanjut di sini: http://upstart.ubuntu.com/cookbook/

dtynan
sumber