Réponses:
Sur les noyaux plus récents (2.6.32+) sur CentOS / RHEL, vous pouvez changer cela au moment de l'exécution avec / proc / <pid> / limits:
cd /proc/7671/
[root@host 7671]# cat limits | grep nice
Max nice priority 0 0
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits | grep nice
Max nice priority 5 6
Comme indiqué ici , la prlimit
commande, introduite avec util-linux 2.21, vous permet de lire et de modifier les limites des processus en cours d'exécution.
Il s'agit d'une suite à l'écriture /proc/<pid>/limits
, qui n'était pas intégrée au noyau principal. Cette solution devrait fonctionner.
Si vous ne l'avez pas prlimit(1)
encore, vous pouvez trouver le code dans une version minimaliste dans la prlimit(2)
page de manuel .
Sur la nouvelle version d'util-linux-ng, vous pouvez utiliser la commande prlimit, pour plus d'informations, lisez ce lien /superuser/404239/setting-ulimit-on-a-running-process
Vous pouvez essayer ulimit man ulimit
avec l'option -n, mais la page mag ne permet pas à la plupart des OS de définir cela.
Vous pouvez définir une limite de descriptions de fichiers à l'échelle du système en utilisant sysctl -w fs.file-max=N
et faire persister les modifications après le démarrage dans/etc/sysctl.conf
Cependant, je suggérerais également d'examiner le processus pour voir s'il doit vraiment avoir autant de fichiers ouverts à un moment donné, et si vous pouvez en fait fermer certains fichiers et être plus efficace dans le processus.
ulimit
n'applique pas de paramètres aux processus en cours d' exécution .
Le processus peut modifier ses propres limites logicielles s'il est programmé pour le faire (ou si vous parvenez à le pirater), mais il ne peut pas augmenter ses limites matérielles à moins qu'il n'ait la capacité CAP_SYS_RESOURCE. Vous pouvez inspecter les limites lors de l'exécution dans /proc/$pid/limits
.