这一场景通常用于操作某些root权限安装的软件包,比如docker。
最优方案:(强烈推荐)
sudo crontab -e
然后在编辑器中写入:
* 3 * * * docker compose -f my_compose.yaml restart
docker前不必加sudo,因为这条任务本身就是用root角色执行的。
次选方案:(强烈不推荐)
* 3 * * * echo "my_password" | sudo -S docker compose -f my_compose.ymal up -d
这一方案也是网上流行的方案,非常不安全,因为它把root的密码暴露给了一个普通用户,一旦、假如、万一这个普通用户权限被别人拿到,只要打开crontab的任务文件,就拿到了root。