Nextcloud

バックグラウンドジョブ機能ぐるっとひとめぐり

最近のNextcloudの機能アップデートは目覚ましい進化を遂げています。
バックグラウンドジョブも、以前と比較して格段にスマートになりました。
この記事では、最新情報も含めたバックグラウンドジョブに関する内容をご紹介します。

バックグラウンドジョブの起動方法(モード)

Nextcloudのバックグラウンドジョブの動作モード(起動方法)には、Ajax、Webcron、System Cronの3種類があります。
動作モードの違いについては、過去に解説した記事がありますのでこちらを参照ください。
https://admin-nextcloud-dvo.site.wp-chorus.jp/blog/techblog/nextcloud-backgroundjob.html

  • Ajax
  • Webcron
  • Cron(System Cron)

注意点として、AjaxとWebcronモードでは、1回の起動で1つのジョブのみ実行されるという制限があります。
特別な理由が無く、10名以上の規模で利用するような場合には、System Cron を利用しバックグラウンドジョブを起動するのがおすすめです。

また、冗長構成時など複数のWEBサーバから同時にcron.phpを起動しても、同じタスクを重複して実行しないような仕組みが備わっています。

バックグラウンドジョブの実行時間帯の指定

設定ファイル(config.php) に “maintenance_window_start” パラメータを設定することで、1日に1度しか実行されないような処理コストの高いジョブや、時刻の影響を受けずいつ実行しても構わないようなジョブを実行する時間帯を指定することができます。
このパラメータの影響を受けるジョブの例として、期限切れのアクティビティ履歴の削除などのジョブがあります。

逆に、ゴミ箱(files_trashbin)やバージョンファイル(files_versions)のクリーンアップ処理などの定期的に実行されるジョブはこのパラメータ設定の影響を受けません。

例として、'maintenance_window_start' => 1, を指定した場合、UTC時刻の 01:00~05:00 の間(指定時刻から 4時間の範囲)に対象のジョブが実行されます。
※このパラメータは、cronモード選択時のみ有効です

詳しくは下記マニュアルをご参考ください。

occ コマンドによるジョブ管理

最新の Nextcloud では “occ background-job” コマンドを使用して、登録済みジョブの確認や、任意のジョブの実行や削除が可能です。

background-job:list登録ジョブの一覧を表示します
background-job:execute指定したIDのジョブを実行します
background-job:delete指定したIDのジョブを削除します

“occ background-job:list” コマンドでは、ジョブの最終実行時間についても確認できます。

occ background-job:list
+-------+-------------------------------------------------------------------+---------------------------+-
| id    | class                                                             | last_run                  | 
+-------+-------------------------------------------------------------------+---------------------------+-
| 1     | OCA\WorkflowEngine\BackgroundJobs\Rotate                          | 2024-10-18T04:03:03+00:00 | 
| 2     | OCA\DAV\BackgroundJob\CleanupDirectLinksJob                       | 2024-10-18T01:43:02+00:00 | 
| 3     | OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob   | 2024-10-18T05:33:02+00:00 | 
| 4     | OCA\DAV\BackgroundJob\CleanupInvitationTokenJob                   | 2024-10-18T01:44:03+00:00 | 
| 5     | OCA\DAV\BackgroundJob\EventReminderJob                            | 2024-10-18T06:17:02+00:00 | 
| 6     | OCA\NextcloudAnnouncements\Cron\Crawler                           | 2024-10-18T03:59:02+00:00 | 
| 7     | OCA\Files_Trashbin\BackgroundJob\ExpireTrash                      | 2024-10-18T06:13:02+00:00 | 
| 8     | OCA\ContactsInteraction\BackgroundJob\CleanupJob                  | 2024-10-18T01:46:03+00:00 | 
| 9     | OCA\Activity\BackgroundJob\EmailNotification                      | 2024-10-18T06:22:02+00:00 | 
| 10    | OCA\Activity\BackgroundJob\ExpireActivities                       | 2024-10-18T01:45:02+00:00 |

また、”background-job:delete” コマンドにて削除したジョブは、Nextcloud のバージョンアップやアプリの再インストール時などに再び追加されます。

マイグレーションジョブ

Nextcloud メジャーバージョンのアップグレード時、一部のマイグレーション処理はバックグラウンドジョブにより実行されます。インストール済みアプリの利用状況により、実行されるマイグレーションジョブは異なります。

Nextcloud アップグレード後、バックグラウンドジョブにより徐々にマイグレーション処理が進行しますが、cron.phpを直接実行して手動で完了させることもできます。
https://docs.nextcloud.com/server/latest/admin_manual/maintenance/upgrade.html#approaching-upgrades

複数のメジャーバージョンを経由したアップグレード時など、次のメジャーバージョンへアップグレードする前に、マイグレーション処理が完了していることを確認する必要がありますのでご注意ください。

以上、最新のバックグラウンドジョブ事情についてお届けしました。