Lösung 1:
„ulimit“ ist eine Steuerung „pro Anwendung“ … tatsächlich pro Prozess. Der Shell-Befehl ulimit ist ein in die Shell integrierter Befehl, der das Limit für den Shell-Prozess und seine untergeordneten Prozesse festlegt. Fügen Sie den Befehl „ulimit“ in das Skript ein, das Ihre Anwendung startet, und das Limit wird nur für diese Anwendung festgelegt.
Lösung 2:
Auf systemd-basierten Distributionen können Sie auch systemd-run (das indirekt cgroups verwendet) verwenden . Zum Beispiel:
systemd-run --scope -p MemoryLimit=1G firefox
Hinweis:Dadurch werden Sie nach einem Passwort gefragt, aber die App wird als Ihr Benutzer gestartet. Lassen Sie sich dadurch nicht zu der Annahme verleiten, dass der Befehl mit sudo
ausgeführt werden muss , da dies dazu führen würde, dass der Befehl unter root ausgeführt wird, was kaum Ihre Absicht war.
Wenn Sie das Passwort nicht eingeben möchten (warum sollten Sie eigentlich ein Passwort benötigen, um den Speicherplatz zu begrenzen, den Sie bereits besitzen) , könnten Sie --user
verwenden Option, aber damit dies funktioniert, müssen Sie die cgroupsv2-Unterstützung aktiviert haben, was im Moment erfordert, dass Sie mit systemd.unified_cgroup_hierarchy
booten Kernel-Parameter.