Я пытаюсь очистить кэш памяти с помощью крона.
Файл крона:
*/2 * * * * ~/clear_mem.sh
clear_mem.sh:
#!/bin/sh
sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
touch f
Файл f
создается каждые две минуты. Но память не очищена. Если я называю сценарий руками, все прекрасно. Почему?
Поскольку cron
команды выполнений нев интерактивном режиме, нет никакого пути к sudo
для аутентификации.
Для команд, которые требуют корневого разрешения, необходимо использовать crontab корня (т.е. sudo crontab -e
вместо плоскости crontab -e
) и затем избежать использования sudo
в рамках команд и сценариев в целом.
необходимо также дать полный путь сценарию - предпочтительно определяют местоположение его некоторые в масштабе всей системы, например, /usr/local/bin/clear_mem.sh
вместо ~/clear_mem.sh