清除缓冲区/缓存的脚本仍然显示权限被拒绝

清除缓冲区/缓存的脚本仍然显示权限被拒绝

我有一个名为的脚本清除缓存文件清除我的缓冲区/缓存,但当我运行时它一直说权限被拒绝。

脚本中的内容:清除缓存文件

#!/bin/bash
sync && echo 1 | tee /proc/sys/vm/drop_caches

权利:
-rwxr-xr-x 1 rt rt 464 Dec  5 02:10 clearcache.sh

图像


我如何运行它来测试它:

rt@sys76:~/clearcache$ ./clearcache.sh 
tee: /proc/sys/vm/drop_caches: Permission denied
1

我想将其放在 chron 作业中,但我需要解决这个权限问题:

更新: 这是drop_caches文件及其权限归 root 所有使用脚本从 chron 作业运行此文件的正确方法是什么?PS:我正在运行 Ubuntu 20.04

图片2

答案1

根和烫发

我猜你是用 root 身份运行脚本的(?)
无论如何,你都不应该修改文件的访问权限

无需开球

你不需要tee,你最好使用sysctl

sudo sync && sudo sysctl vm.drop_caches=1

页面缓存、目录项和 inode

vm.drop_caches=1 # to free pagecache
vm.drop_caches=2 # to free dentries & inodes
vm.drop_caches=3 # to free pagecache, dentries & inodes

那么为什么不使用vm.drop_caches=3

cron 计划

由于您想使用 cron 来安排它,您可以为 root 用户设计脚本,然后通过在 root 的 crontab 中插入作业来安排它

剧本

#!/bin/bash
/usr/bin/sync
# /usr/bin/echo 1 | /usr/bin/tee /proc/sys/vm/drop_caches
/usr/sbin/sysctl vm.drop_caches=1

将脚本文件放在 root 用户可用的目录中。例如,在/root文件夹中,即/root/clearcache.sh

然后添加一个 root cronjob
,脚本将每天每小时 0 分钟运行一次

sudo crontab -e
0 * * * * /root/clearcache.sh

最后
不需要脚本,只需将这两个命令作为作业添加到 root 的 crontab 中即可

sudo crontab -e
0 * * * * /usr/bin/sync; /usr/sbin/sysctl vm.drop_caches=1

相关内容