У меня есть сценарий под названием clearcache.sh для очистки моих буферов / кеша, но когда я запускаю, он продолжает говорить Permission denied.
Что находится в скрипте: clearcache.sh
#!/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
Я хочу поместить это в хронологическое задание, но мне нужно чтобы обойти эту проблему с разрешениями:
Обновление: Вот файл drop_caches и права на него принадлежат пользователю root. Как правильно запустить его из задания хронирования с помощью сценария? {{1} } PS: Я использую Ubuntu 20.04
root & perms
Полагаю, вы запускаете свой скрипт с правами root (?)
Ни в коем случае не надо изменять права доступа к файлу
не нужно tee
Не нужно tee
, лучше использовать sysctl
sudo sync && sudo sysctl vm.drop_caches=1
pagecache, dentries & inodes
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, а затем запланировать его, вставив задание в корневом 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
Наконец
Сценарий не требуется, просто добавьте две команды в качестве задания в корневой crontab
sudo crontab -e
0 * * * * /usr/bin/sync; /usr/sbin/sysctl vm.drop_caches=1