后台任务
以下是nextcloud官方对于后台任务的解释:
诸如Nextcloud之类的系统有时需要定期执行任务,而无需用户交互或妨碍Nextcloud性能。为此,作为系统管理员,您可以定义无需用户交互就可以执行的后台作业(例如,数据库清理)。
这些作业通常称为cron作业。Cron作业是命令或基于Shell的脚本,它们计划在固定的时间,日期或间隔定期运行。 cron.php
是Nextcloud内部流程,可按需运行此类后台作业。
Nextcloud应用程序会cron.php
自动注册操作,以执行典型的内部管理操作,例如临时文件的垃圾收集或使用filescan()
外部安装的文件系统检查新近更新的文件。
打开nextcloud后面的设置–基本设置大致可分为三种后台任务:
- Ajax
- Webcron
- Cron
这三种模式,默认采用的是Ajax,但是对于较大的实例,就需要使用Cron这种模式了。
配置方法
可以看到要求是:使用系统定时任务服务每5分钟执行一次cron.php文件。 cron.php 需要被系统用户 “www” 执行。
可以看到官方要求是两点,一个要5分钟执行一次文件,还有要被www执行
如果你和我一样是nginx,那么只需要在nextcloud的安装根目录下给www权限即可,Apache的话可能是www-data
chownwww:www cron.php
这样就给权限了,然后来编辑一个定时脚本:
在 /etc/systemd/system目录新建 nextcloudcron.service 和 nextcloudcron.timer 两个文件:
nextcloudcron.service文件内容(修改cron.php文件路径):
[Unit]Description=Nextcloud cron.php job [Service]User=wwwExecStart=/usr/bin/php -f /www/wwwroot/test.wxlcloud.com/nextcloud/cron.php [Install]WantedBy=basic.target
注意这里ExecStart后面的php是你安装的php路径,如果你用的宝塔安装一般是在*/www/server/php/php版本/bin/php*,一般就在这个地方,后面的cron.php,就写你根目录下的那个地址,注意要写绝对路径
nextcloudcron.timer文件内容:
[Unit]Description=Run Nextcloud cron.php every 5 minutes [Timer]OnBootSec=5minOnUnitActiveSec=5minUnit=nextcloudcron.service [Install]WantedBy=timers.target
这里没什么修改的,就是个定时
最后 系统中执行下面的命令就可以了:
systemctl enable --now nextcloudcron.timer
检查结果
最后点到基本设置里,选择cron的方式,等5分钟看看情况: