Solution 1 :
'ulimit' est un contrôle 'par application'… par processus en fait. La commande shell ulimit est une commande intégrée du shell définissant la limite pour le processus shell et ses enfants. Mettez la commande 'ulimit' dans le script de démarrage de votre application et la limite sera définie pour cette application uniquement.
Solution 2 :
Sur les distributions basées sur systemd, vous pouvez également utiliser systemd-run (qui utilise indirectement les cgroups) . Par exemple :
systemd-run --scope -p MemoryLimit=1G firefox
Remarque :cela vous demandera un mot de passe, mais l'application sera lancée en tant qu'utilisateur. Ne laissez pas cela vous induire en erreur en pensant que la commande doit être exécutée avec sudo
, car cela entraînerait l'exécution de la commande sous root, ce qui n'était guère votre intention.
Si vous ne voulez pas entrer le mot de passe (en effet, pourquoi auriez-vous besoin d'un mot de passe pour limiter la mémoire que vous possédez déjà) , vous pouvez utiliser --user
option, mais pour que cela fonctionne, vous aurez besoin de la prise en charge de cgroupsv2, ce qui nécessite actuellement de démarrer avec systemd.unified_cgroup_hierarchy
paramètre du noyau.