I processi nei cgroup devono essere impostati ad ogni avvio? In tal caso, come persistere?


9

Stavo leggendo questa risposta a una domanda sull'impostazione dei limiti per i processi utilizzando i cgroups. L'esempio fornito imposta i limiti per un processo (nell'esempio sshd). Nella risposta, il PID del processo viene impostato manualmente. Ciò sarebbe inaccettabile per i miei scopi, vorrei che i processi avviati da una determinata applicazione avessero sempre i limiti impostati, indipendentemente da quando sono stati avviati o limitati da quanti processi sono stati avviati.

Forse non è chiaro dall'esempio come ciò possa accadere, quindi sarebbe gradita anche una spiegazione chiara o un collegamento a uno. L'esempio nel kernel cgroups.txt sembra usare lo stesso modello di cui sopra .

Risposte:


6

Il modo più semplice è usare systemdquale può essere responsabile per il tuo sshd(comunque a seconda della distribuzione). È possibile configurare facilmente i limiti nel sshdfile di unità. systemdmette comunque tutti i servizi in cgroup separati.

Senza systemdla soluzione più semplice è probabilmente una modifica allo sshdscript di avvio (attenzione a non essere sovrascritto da un aggiornamento; potrebbe essere una buona idea copiarlo con un nome diverso e disabilitare lo script originale).


Esiste un'app fastidiosa che limita i limiti sarebbe bello da ripulire, non è sshd. È solo che sshd è stato usato nell'esempio. Presumibilmente, puoi applicare cgroups a qualsiasi processo. Uno script potrebbe finire per essere la soluzione più semplice. Sembrava che i cgroups sarebbero stati una buona risposta, comunque.
casualunixer

@casualunixer Devi solo scrivere un file di unità per la tua app. È possibile configurare è in modo che sia avviato automaticamente all'avvio o solo manualmente.
Hauke ​​Laging,

@laging, se potessi fornire un esempio di file unitario in una risposta, o un puntatore per la documentazione a uno simile, sarebbe apprezzato.
casualunixer,

@casualunixer È esattamente dove ci si aspetterebbe: man systemdconduce a man 5 systemd.unitconduce a man 5 systemd.service. Sul mio sistema il file SSH è /usr/lib/systemd/system/sshd.service.
Hauke ​​Laging,

Ah, dato che non ho installato systemd, anche se questo è l'argomento di questa risposta, non è stato immediatamente ovvio.
casualunixer
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.