summaryrefslogtreecommitdiff
path: root/drop-caches
blob: cb89f1eb9e8ed9626fc36b2a67f6a5dadea7c128 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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()