summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdrop-caches52
1 files changed, 52 insertions, 0 deletions
diff --git a/drop-caches b/drop-caches
new file mode 100755
index 0000000..cb89f1e
--- /dev/null
+++ b/drop-caches
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+#
+# Copyright 2013 Lars Wirzenius
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# =*= License: GPL-3+ =*=
+
+
+import cliapp
+
+
+__version__ = '0.0'
+
+
+class DropCaches(cliapp.Application):
+
+ def add_settings(self):
+ self.settings.choice(
+ ['what'],
+ ['all', 'pagecache', 'inodes'],
+ 'drop WHAT ("all", "pagecache", "inodes")')
+
+ def process_args(self, args):
+ # The values in this able are determined by the kernel. Change
+ # at your own risk.
+ drop_values = {
+ 'pagecache': 1,
+ 'inodes': 2,
+ 'all': 3,
+ }
+
+ what = self.settings['what']
+ if what not in drop_values:
+ raise cliapp.AppException('Unknown choice %s' % what)
+
+ with open('/proc/sys/vm/drop_caches', 'w') as f:
+ f.write('%d\n' % drop_values[what])
+
+
+DropCaches(version=__version__).run()