Fai funzionare ulimits con start-stop-daemon


20

Ho uno init.dscript che avvia un'app usando start-stop-daemon --chuid SOME_SYSTEM_USER. Cioè, l'app viene eseguita con un altro utente, non root.

Il problema è che l'app ha bisogno di impostazioni limite speciali (vale a dire ulimit -n 64000), che ho impostato limits.conf. Funziona abbastanza bene quando lo eseguo direttamente dalla shell: su - SOME_SYSTEM_USER+ avvia l'app dalla shell.

Ma quando attraversano il start-stop-daemon --chuidda /etc/init.d, questi limiti vengono ignorati. Quindi l'app non funziona, ovviamente.

Come posso forzare start-stop-daemona onorare le ulimitimpostazioni?


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

Risposte:


23

In questo momento, non puoi. limits.conf(5)è la configurazione per pam_limits(8), che viene attivata dallo stack PAM in base alla configurazione in /etc/pam.d. Tuttavia, start-stop-daemon(8)poiché avviato da uno script init.d non passa attraverso lo stack PAM, quindi tali tipi di impostazioni non vengono mai applicati.

Il bug # 302079 di Debian contiene una patch per abilitare l'impostazione dei limiti start-stop-daemon(8), ma il bug è stato aperto dal 2005 e la patch non è stata ancora unita.

Sebbene non sia l'ideale, AFAIK il modo consigliato per ottenere questo risultato in questo momento è aggiungere una ulimitchiamata nello script init.d.


Basta aggiungere l' ulimitimpostazione subito prima del start-stop-daemoncomando. (ie ulimit -n 64000) ... per gli ignoranti come me.
Ryan Schumacher,

Se, diversamente dall'OP, non sai quale demone si sta schiantando, ho appena ottenuto buoni risultati sul riavvio dei demoni di Debian Wheezy dopo: echo "ulimit -c unlimited" | sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey

Alcune informazioni di base più preziose sono disponibili qui: serverfault.com/a/642082/22394
sehe

7

Puoi anche usare il comando 'limit' nello script upstart.

Nel file /etc/init/foo.conf, aggiungi la riga:

limit nofile 64000 64000

Il primo 64000 è il limite soft e il secondo è il limite hard.

Puoi trovare maggiori informazioni qui: http://upstart.ubuntu.com/cookbook/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.