Les processus dans les groupes de contrôle doivent-ils être définis à chaque démarrage? Si oui, comment les persister?

9

Je lisais cette réponse à une question sur la définition de limites pour les processus à l'aide de cgroups. L'exemple donné définit les limites d'un processus (dans l'exemple, sshd). Dans la réponse, le PID du processus est défini manuellement. Ce serait inacceptable pour mes besoins, j'aimerais que les processus démarrés à partir d'une application donnée aient toujours les limites définies, peu importe quand ils sont démarrés ni limités par le nombre de ces processus qui sont démarrés.

Il n'est peut-être pas clair dans l'exemple comment cela se produirait, donc une explication claire ou un lien vers une serait également la bienvenue. L'exemple du noyau cgroups.txt semble utiliser le même modèle que celui déjà donné ci-dessus .

casualunixer
la source

Réponses:

6

La façon la plus simple est d'utiliser systemdce qui peut être responsable de votre sshdtoute façon (selon la distribution). Vous pouvez facilement configurer les limites dans le sshdfichier d'unité. systemdplace de toute façon tous les services dans des groupes de contrôle distincts.

Sans systemdla solution la plus simple, il y a probablement une modification du sshdscript de démarrage (faites attention à ce qu'il ne soit pas écrasé par une mise à jour; ce peut être une bonne idée de le copier sous un autre nom et de désactiver le script d'origine).

Hauke ​​Laging
la source
Il y a une application gênante que les limites seraient super à nettoyer, ce n'est pas sshd. C'est juste que sshd a été utilisé dans l'exemple. Vraisemblablement, vous pouvez appliquer des groupes de contrôle à n'importe quel processus. Un script pourrait devenir la solution la plus simple. Il semblait cependant que les groupes de contrôle auraient été une bonne réponse.
casualunixer
@casualunixer Il vous suffit d'écrire un fichier d'unité pour votre application. Vous pouvez configurer est de sorte qu'il soit démarré automatiquement au démarrage ou simplement manuellement.
Hauke ​​Laging
@laging, si vous pouviez donner un exemple de fichier d'unité dans une réponse, ou un pointeur pour la documentation à un similaire, ce serait apprécié.
casualunixer
@casualunixer C'est exactement là où on pourrait s'y attendre: man systemdmène à man 5 systemd.unitmène à man 5 systemd.service. Sur mon système, le fichier SSH est /usr/lib/systemd/system/sshd.service.
Hauke ​​Laging
Ah, étant donné que je n'ai pas installé systemd, même si c'est le sujet de cette réponse, ce n'était pas immédiatement évident.
casualunixer