Shell: RAM und Swap freigeben ohne Reboot

Der Hauptspeicher ist fast voll und ein Reboot soll nicht erfolgen? Dann gibt es andere Optionen. Zum einen können Dienste/Services restarted werden, die dafür bekannt sind Speicher zu fressen (zB Apache2). Wenn das nichts mehr bringt und eigentlich ein Reboot ansteht, dann kann die nachfolgende Befehlssequenz helfen:

sync ; sync ; sync ; echo 3 > /proc/sys/vm/drop_caches

Sie schreibt die Daten im Speicher auf die Platte (Pagecache, Inodes etc.). Als ich die Kommandos das erste Mal aufgerufen habe, waren 12GB von 16GB belegt. Nach Ausführung wurden nur noch ~300MB belegt.

Ein weiteres Problem kann ein zu grosser (belegter) Swap sein. Aber auch hier gibt es eine hilfreiche Sequenz, um das Rebooten zu vermeiden:

sync ; sync ; sync ; swapoff -a && swapon -a

Dadurch wird der Swap in den Arbeitspseicher geholt, der ausreichend kapazität zur Aufnahme des Swaps haben sollte (sonst kann im Ernstfall der rechner abstürzen).