后台任务

以下是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" 执行。

yvEY.png

可以看到官方要求是两点,一个要5分钟执行一次文件,还有要被www执行

如果你和我一样是nginx,那么只需要在nextcloud的安装根目录下给www权限即可,Apache的话可能是www-data

chown  www:www cron.php    

这样就给权限了,然后来编辑一个定时脚本:

/etc/systemd/system目录新建 nextcloudcron.service 和 nextcloudcron.timer 两个文件:

nextcloudcron.service文件内容(修改cron.php文件路径):

[Unit]
Description=Nextcloud cron.php job
 
[Service]
User=www
ExecStart=/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=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
 
[Install]
WantedBy=timers.target

这里没什么修改的,就是个定时

最后 系统中执行下面的命令就可以了:

systemctl enable --now nextcloudcron.timer    

检查结果

最后点到基本设置里,选择cron的方式,等5分钟看看情况:

yWHM.png

最后修改:2021 年 02 月 25 日 10 : 00 AM
请俺喝杯咖啡呗