web-dev-qa-db-ja.com

Crontabを使用してメモリキャッシュをクリアする

Cronを使用してメモリキャッシュをクリアしようとしています。

Cronファイル:

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

clear_mem.sh:

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

ファイルfは2分ごとに作成されます。しかし、メモリはクリアされません。手でスクリプトを呼び出すと、すべてがうまくいきます。どうして?

2
Long Smith

cronはコマンドを非対話的に実行するため、Sudoが認証する方法はありません。

ルート権限を必要とするコマンドの場合、ルートのcrontab(つまり、Sudo crontab -eの代わりにcrontab -e)を使用し、コマンドとスクリプト内でSudoを使用しないでください。

また、スクリプトへの完全なパスも指定する必要があります。できれば、システム全体でスクリプトを見つけてください。 /usr/local/bin/clear_mem.shの代わりに~/clear_mem.sh

3
steeldriver