web-dev-qa-db-fra.com

Effacer le cache mémoire à l'aide de Crontab

J'essaie d'effacer le cache de la mémoire en utilisant cron.

Fichier cron:

*/2 * * * *  ~/clear_mem.sh

clear_mem.sh:

#!/bin/sh
Sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
touch f

Le fichier f est créé toutes les deux minutes. Mais la mémoire n'est pas effacée. Si j'appelle le script à la main, tout va bien. Pourquoi?

2
Long Smith

Étant donné que cron exécute des commandes de manière non interactive, il est impossible pour Sudo de s'authentifier.

Pour les commandes nécessitant une autorisation root, vous devez utiliser le fichier crontab de root (Sudo crontab -e au lieu de plain crontab -e), puis éviter d'utiliser Sudo dans vos commandes et scripts.

Vous devez également indiquer le chemin complet du script - localisez-le de préférence, par exemple, dans tout le système. /usr/local/bin/clear_mem.sh à la place de ~/clear_mem.sh

3
steeldriver