Linux用crontab最常用可靠,格式为“分 时 日 月 周 命令”,需用绝对路径、重定向日志、确保cron服务运行;Windows用任务计划程序调用PowerShell脚本,需指定-executionpolicy bypass、勾选“不管用户是否登录都要运行”。
服务器配置定时任务自动化执行脚本,核心是让系统在无人干预下按计划运行命令或脚本。关键不在于“能不能”,而在于选对方式、写对路径、避开常见坑。
这是绝大多数服务器的首选方案,由系统级服务 cron/crond 驱动,不依赖网页访问或用户登录。
/usr/bin/php /var/www/think clean:cache,不能写 php think clean:cache
> /var/log/clean.log 2>&1
systemctl status cron(Debian/Ubuntu)或 systemctl status crond(CentOS/RHEL)光有定时器不够,脚本出错就等于白设。尤其注意环境和权限问题。
/usr/bin/mysql)chmod +x /path/to/your/script.sh
sudo,需提前配置免密:sudo visudo 中添加类似 www-data ALL=(ALL) NOPASSWD: /path/to/script.sh
echo "$(date): 开始执行" >> /var/log/your-task.log
适合 Windows Server 或桌面环境,图形界面友好,但需注意触发条件和用户上下文。
Remove-Item C:weblog*.log
如果项目基于 ThinkPHP,推荐把业务逻辑封装成命令行指令,再交给 crontab 调用,既规范又易维护。
app/command/ 下新建类,如 CleanCache.php,实现 execute() 方法$this->setName('cron:clean-cache')
0 */2 * * * /usr/bin/php /var/www/project/think cron:clean-cache >> /var/log/clean.log 2>&1
runtime/ 目录对 web 用户或运行脚本的用户有写权限