Solución 1:
'ulimit' es un control 'por aplicación'... de hecho, por proceso. El comando de shell ulimit es un shell incorporado que establece el límite para el proceso de shell y sus hijos. Ponga el comando 'ulimit' en el script que inicia su aplicación y el límite se establecerá solo para esta aplicación.
Solución 2:
En las distribuciones basadas en systemd, también puede usar systemd-run (que indirectamente usa cgroups) . Por ejemplo:
systemd-run --scope -p MemoryLimit=1G firefox
Nota:esto le pedirá una contraseña, pero la aplicación se inicia como su usuario. No permita que esto lo engañe a pensar que el comando debe ejecutarse con sudo
, porque eso haría que el comando se ejecutara bajo la raíz, lo cual difícilmente era su intención.
Si no desea ingresar la contraseña (de hecho, ¿por qué necesitaría una contraseña para limitar la memoria que ya posee) , podrías usar --user
opción, sin embargo, para que esto funcione, necesitará la compatibilidad con cgroupsv2 habilitada, que en este momento requiere arrancar con systemd.unified_cgroup_hierarchy
parámetro del núcleo.