blob: 73b1fdb852c42babe4dc5fcee862b38a0355f98f [file] [edit]
#!/usr/bin/env python3
import argparse
import glob
import os
import sys
def evict(patterns: list[str]) -> None:
evicted = 0
for pattern in patterns:
for path in glob.glob(pattern, recursive=True):
if not os.path.isfile(path):
continue
fd = os.open(path, os.O_RDONLY)
try:
os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED)
finally:
os.close(fd)
evicted += 1
if evicted == 0:
sys.exit(f"error: evicted no files, globs matched nothing: {patterns}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Evict files from the page cache.")
parser.add_argument(
"globs",
nargs="+",
metavar="GLOB",
help="glob patterns to evict (`**` is recursive)",
)
args = parser.parse_args()
evict(args.globs)