Ubuntu

NextcloudのCronジョブが実行されていない

Ubuntu

ちょっと前にNextcloudをバージョンアップをしたときから、ワーニングが大量に出ていた。

基本的なアプリから出されているメッセージのようなので、設定に何か問題があるのだろう。面倒だけれど、きれいにするか。



ここから広告
広告
広告ここまで


症状

まず、管理者設定 → 基本設定 で表示されていたのは、以下のメッセージ。
言語を英語にしても「2年前」の表示は2年前のままだった。

Some jobs have not been executed since 2年前. Please consider increasing the execution frequency.

そして、管理者設定 → ログ で見てみると、定期的かつ大量にこのログが出ている。

[cron] Warning: failed to create instance of background job: OCA\Photos\Jobs\MapMediaToPlaceJob
from 172.18.0.1 by -- at 2025/10/13 5:43:08

ジョブの一覧を表示させてみると、そもそも一回もジョブが動いていない感じがするし、量も多い。

$ sudo docker exec -it -u www-data nextcloud bash --login
$ php occ background-job:list
+-------+-----------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------------------------------------------------+
| id | class | last_run | argument |
+-------+-----------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------------------------------------------------+
| 1 | OCA\WorkflowEngine\BackgroundJobs\Rotate | 1970-01-01T00:00:00+00:00 | null |
| 2 | OCA\ContactsInteraction\BackgroundJob\CleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 3 | OCA\Activity\BackgroundJob\EmailNotification | 1970-01-01T00:00:00+00:00 | null |
...
| 428 | OC\Authentication\Token\TokenCleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 429 | OCA\Files\BackgroundJob\DeleteExpiredOpenLocalEditor | 1970-01-01T00:00:00+00:00 | null |
| 437 | OCA\Talk\BackgroundJob\ExpireChatMessages | 1970-01-01T00:00:00+00:00 | null |
| 441 | OCA\Photos\Jobs\AutomaticPlaceMapperJob | 1970-01-01T00:00:00+00:00 | null |
| 442 | OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob | 1970-01-01T00:00:00+00:00 | null |
...
| 45992 | OCA\DAV\BackgroundJob\UploadCleanup | 1970-01-01T00:00:00+00:00 | {"uid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","folder":"web-file-upload-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXX"} |
| 45993 | OCA\DAV\BackgroundJob\UploadCleanup | 1970-01-01T00:00:00+00:00 | {"uid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","folder":"web-file-upload-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXX"} |
+-------+-----------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------------------------------------------------+

Googleで検索したらAIモードになり、エラーログからPhotosというNextcloudアプリのジョブなので、一旦アプリを無効にして、再度有効にしてみては?という提案があった。

$ php occ app:disable photos
photos 4.0.0 disabled
$ php occ app:enable photos
photos 4.0.0 enabled

※この操作は、アプリ → あなたのアプリ で Photos を無効・有効に切り替えるのと同じだった。

有効にした途端に上のログがドバッと出ていたが、数回この操作を試したところ、45000番台のジョブが消えた。

$ php occ background-job:list
+-----+-----------------------------------------------------------------+---------------------------+----------+
| id | class | last_run | argument |
+-----+-----------------------------------------------------------------+---------------------------+----------+
| 1 | OCA\WorkflowEngine\BackgroundJobs\Rotate | 1970-01-01T00:00:00+00:00 | null |
| 2 | OCA\ContactsInteraction\BackgroundJob\CleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 3 | OCA\Activity\BackgroundJob\EmailNotification | 1970-01-01T00:00:00+00:00 | null |
...
| 437 | OCA\Talk\BackgroundJob\ExpireChatMessages | 1970-01-01T00:00:00+00:00 | null |
| 441 | OCA\Photos\Jobs\AutomaticPlaceMapperJob | 1970-01-01T00:00:00+00:00 | null |
| 442 | OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob | 1970-01-01T00:00:00+00:00 | null |
+-----+-----------------------------------------------------------------+---------------------------+----------+

しかし、基本設定で表示されるこのメッセージは消えない。

Some jobs have not been executed since 2年前. Please consider increasing the execution frequency.

そして、次にジョブの一覧を表示させようとしたところ、500件超えのジョブが登録されていた。
特に、OCA\DAV\BackgroundJob\UploadCleanupというジョブが大量残っているようだった。

$ php occ background-job:list
+-------+-----------------------------------------------------------------+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | class | last_run | argument |
+-------+-----------------------------------------------------------------+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
...
| 52270 | OC\Command\CommandJob | 1970-01-01T00:00:00+00:00 | "O:33:\"OCA\\Files_Trashbin\\Command\\Expire\":1:{s:39:\"\u0000OCA\\Files_Trashbin\\Command\\Expire\u0000user\";s:36:\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\";}" |
| 52271 | OC\Command\CommandJob | 1970-01-01T00:00:00+00:00 | "O:33:\"OCA\\Files_Trashbin\\Command\\Expire\":1:{s:39:\"\u0000OCA\\Files_Trashbin\\Command\\Expire\u0000user\";s:5:\"admin\";}" |
| 52284 | OCA\DAV\BackgroundJob\UploadCleanup | 1970-01-01T00:00:00+00:00 | {"uid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","folder":"web-file-upload-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXX"} |
...
| 52745 | OCA\DAV\BackgroundJob\UploadCleanup | 1970-01-01T00:00:00+00:00 | {"uid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","folder":"web-file-upload-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXX"} |
+-------+-----------------------------------------------------------------+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Output is currently limited to 500 jobs. Specify `-l, --limit[=LIMIT]` to override.

なるほど、本格的に対策しないと駄目なヤツですね。

たまっているジョブを実行する

設定に問題があるとしても、まずはたまったジョブをなんとかしないと。

ジョブが動いていないってことは、システムが本来の状態になってい訳だよね。
動きが不安定になるのも仕方がない。

何か操作をした後にジョブの一覧を表示すると、数件は処理されている。
でもこんなんじゃ新しく放り込まれたジョブを処理するのは…2年先?

話にならないので、手動でcronを実行した。

$ sudo docker exec -u www-data nextcloud php ./cron.php

コアを1個占有して、40分くらいかけて処理をしていたと思う。

このコマンドを何度か実行したが、2回目は10分くらい帰ってこなかったと思う。
繰り返し繰り返し実行して、即時帰ってくるようになった。

結局、1時間くらいかけてきれいにした結果、リストは以下のようになった。
これらが定期的に動くジョブで、その他何か操作をすると、ジョブが追加されていく…ということですな。

$ sudo docker exec -u www-data nextcloud php occ background-job:list
+-------+-------------------------------------------------------------------+---------------------------+----------+
| id | class | last_run | argument |
+-------+-------------------------------------------------------------------+---------------------------+----------+
| 1 | OCA\WorkflowEngine\BackgroundJobs\Rotate | 2025-10-12T22:01:35+00:00 | null |
| 2 | OCA\ContactsInteraction\BackgroundJob\CleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 3 | OCA\Activity\BackgroundJob\EmailNotification | 2025-10-12T23:55:15+00:00 | null |
| 4 | OCA\Activity\BackgroundJob\ExpireActivities | 1970-01-01T00:00:00+00:00 | null |
| 5 | OCA\Activity\BackgroundJob\DigestMail | 2025-10-12T23:30:05+00:00 | null |
| 6 | OCA\UserStatus\BackgroundJob\ClearOldStatusesBackgroundJob | 2025-10-12T23:55:15+00:00 | null |
| 7 | OCA\Files\BackgroundJob\ScanFiles | 2025-10-12T23:51:43+00:00 | null |
| 8 | OCA\Files\BackgroundJob\DeleteOrphanedItems | 2025-10-12T23:51:42+00:00 | null |
| 9 | OCA\Files\BackgroundJob\CleanupFileLocks | 2025-10-12T23:51:42+00:00 | null |
| 10 | OCA\Files\BackgroundJob\CleanupDirectEditingTokens | 2025-10-12T23:51:42+00:00 | null |
| 11 | OCA\Circles\Cron\Maintenance | 2025-10-12T23:55:15+00:00 | null |
| 13 | OCA\Files_Trashbin\BackgroundJob\ExpireTrash | 2025-10-12T23:51:42+00:00 | null |
| 14 | OCA\Files_Sharing\DeleteOrphanedSharesJob | 2025-10-12T22:01:35+00:00 | null |
| 15 | OCA\Files_Sharing\ExpireSharesJob | 1970-01-01T00:00:00+00:00 | null |
| 16 | OCA\Files_Sharing\BackgroundJob\FederatedSharesDiscoverJob | 2025-10-12T22:01:35+00:00 | null |
| 17 | OCA\DAV\BackgroundJob\CleanupDirectLinksJob | 1970-01-01T00:00:00+00:00 | null |
| 18 | OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob | 2025-10-12T23:51:42+00:00 | null |
| 19 | OCA\DAV\BackgroundJob\CleanupInvitationTokenJob | 1970-01-01T00:00:00+00:00 | null |
| 20 | OCA\DAV\BackgroundJob\EventReminderJob | 2025-10-12T23:51:42+00:00 | null |
| 21 | OCA\DAV\BackgroundJob\CalendarRetentionJob | 2025-10-12T22:01:35+00:00 | null |
| 22 | OCA\NextcloudAnnouncements\Cron\Crawler | 2025-10-12T22:01:35+00:00 | null |
| 23 | OCA\Files_Versions\BackgroundJob\ExpireVersions | 2025-10-12T23:51:42+00:00 | null |
| 24 | OCA\Notifications\BackgroundJob\GenerateUserSettings | 2025-10-12T22:01:37+00:00 | null |
| 25 | OCA\Notifications\BackgroundJob\SendNotificationMails | 2025-10-12T23:55:15+00:00 | null |
| 26 | OCA\Text\Cron\Cleanup | 2025-10-12T23:51:42+00:00 | null |
| 27 | OCA\ServerInfo\Jobs\UpdateStorageStats | 2025-10-12T22:01:38+00:00 | null |
| 28 | OCA\Federation\SyncJob | 2025-10-12T22:01:35+00:00 | null |
| 29 | OCA\Support\BackgroundJobs\CheckSubscription | 2025-10-12T23:51:42+00:00 | null |
| 30 | OC\Log\Rotate | 2025-10-12T23:51:43+00:00 | null |
| 31 | OC\Preview\BackgroundCleanupJob | 2025-10-12T22:02:18+00:00 | null |
| 36 | OCA\Richdocuments\Backgroundjobs\ObtainCapabilities | 2025-10-12T23:51:43+00:00 | null |
| 37 | OCA\Richdocuments\Backgroundjobs\Cleanup | 2025-10-12T23:51:43+00:00 | null |
| 38 | OCA\Talk\BackgroundJob\ExpireSignalingMessage | 2025-10-12T23:51:43+00:00 | null |
| 39 | OCA\Talk\BackgroundJob\RemoveEmptyRooms | 1970-01-01T00:00:00+00:00 | null |
| 40 | OCA\Talk\BackgroundJob\ResetAssignedSignalingServer | 2025-10-12T23:51:43+00:00 | null |
| 42 | OCA\Talk\BackgroundJob\CheckHostedSignalingServer | 2025-10-12T23:51:43+00:00 | null |
| 43 | OCA\Talk\BackgroundJob\CheckMatterbridges | 2025-10-12T23:51:43+00:00 | null |
| 44 | OCA\FullTextSearch\Cron\Index | 2025-10-12T23:51:42+00:00 | null |
| 45 | OCA\FullTextSearch\Cron\Maintenance | 2025-10-12T22:02:12+00:00 | null |
| 47 | OCA\User_LDAP\Jobs\UpdateGroups | 2025-10-12T23:51:42+00:00 | null |
| 48 | OCA\User_LDAP\Jobs\CleanUp | 2025-10-12T23:51:42+00:00 | null |
| 49 | OCA\User_LDAP\Jobs\Sync | 2025-10-12T22:01:35+00:00 | null |
| 122 | OC\Core\BackgroundJobs\CleanupLoginFlowV2 | 2025-10-12T23:51:43+00:00 | null |
| 123 | OC\Security\Bruteforce\CleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 143 | OCA\Files_External\BackgroundJob\CredentialsCleanup | 1970-01-01T00:00:00+00:00 | null |
| 428 | OC\Authentication\Token\TokenCleanupJob | 1970-01-01T00:00:00+00:00 | null |
| 429 | OCA\Files\BackgroundJob\DeleteExpiredOpenLocalEditor | 1970-01-01T00:00:00+00:00 | null |
| 437 | OCA\Talk\BackgroundJob\ExpireChatMessages | 2025-10-12T23:51:43+00:00 | null |
| 442 | OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob | 1970-01-01T00:00:00+00:00 | null |
| 92613 | OC\TextProcessing\RemoveOldTasksBackgroundJob | 2025-10-12T22:02:27+00:00 | null |
| 92614 | OCA\OAuth2\BackgroundJob\CleanupExpiredAuthorizationCode | 2025-10-12T22:01:35+00:00 | null |
| 92621 | OCA\Talk\BackgroundJob\Reminder | 2025-10-12T23:55:15+00:00 | null |
| 92622 | OCA\FilesReminders\BackgroundJob\CleanUpReminders | 2025-10-12T22:01:41+00:00 | null |
| 92623 | OCA\FilesReminders\BackgroundJob\ScheduledNotifications | 2025-10-12T23:55:15+00:00 | null |
| 92626 | OC\TextToImage\RemoveOldTasksBackgroundJob | 2025-10-12T22:02:28+00:00 | null |
| 92627 | OC\Core\BackgroundJobs\GenerateMetadataJob | 2025-10-12T22:02:28+00:00 | null |
| 92628 | OCA\DAV\BackgroundJob\DeleteOutdatedSchedulingObjects | 2025-10-12T22:00:53+00:00 | null |
| 92636 | OCA\Activity\BackgroundJob\RemoveFormerActivitySettings | 2025-10-12T22:01:35+00:00 | null |
| 92670 | OCA\UpdateNotification\BackgroundJob\ResetToken | 2025-10-12T23:51:43+00:00 | null |
| 92671 | OCA\UpdateNotification\BackgroundJob\UpdateAvailableNotifications | 2025-10-12T22:01:41+00:00 | null |
| 92680 | OCA\Talk\BackgroundJob\RetryNotificationsJob | 2025-10-12T23:55:15+00:00 | null |
| 92750 | OC\User\BackgroundJobs\CleanupDeletedUsers | 2025-10-12T23:30:04+00:00 | null |
| 92797 | OCA\AppAPI\BackgroundJob\ExAppInitStatusCheckJob | 2025-10-12T23:55:15+00:00 | null |
| 92798 | OCA\AppAPI\BackgroundJob\ProvidersAICleanUpJob | 2025-10-12T22:01:41+00:00 | null |
| 92799 | OC\TaskProcessing\RemoveOldTasksBackgroundJob | 2025-10-12T23:30:04+00:00 | null |
| 92801 | OCA\Talk\BackgroundJob\MaximumCallDuration | 2025-10-12T23:55:15+00:00 | null |
| 92820 | OCA\Files_Sharing\SharesReminderJob | 2025-10-12T23:51:42+00:00 | null |
| 92860 | OCA\Talk\BackgroundJob\LockInactiveRooms | 2025-10-12T23:30:05+00:00 | null |
| 92895 | OCA\Talk\BackgroundJob\CheckCertificates | 2025-10-12T23:30:05+00:00 | null |
| 92896 | OCA\Talk\BackgroundJob\ExpireObjectRooms | 2025-10-12T23:30:05+00:00 | null |
| 92945 | OCA\Photos\Jobs\AutomaticPlaceMapperJob | 2025-10-12T23:55:15+00:00 | null |
+-------+-------------------------------------------------------------------+---------------------------+----------+

基本設定に行ってみると、表示が変わっていた。※この表示は次章で解消。

Some jobs have not been executed since 5ヶ月前. Please consider increasing the execution frequency.

確かに動いた形跡のないジョブもあるから、そのうちの2番を実行してみた。

$ sudo docker exec -u www-data nextcloud php occ background-job:execute 2
Job class: OCA\ContactsInteraction\BackgroundJob\CleanupJob
Arguments: null
Type: timed

Last checked: 2025-05-02T01:38:28+00:00
Reserved at: -
Last executed: 1970-01-01T00:00:00+00:00
Last duration: 0
Next execution: 1970-01-02T00:00:00+00:00

Job executed!

Job class: OCA\ContactsInteraction\BackgroundJob\CleanupJob
Arguments: null
Type: timed

Last checked: 2025-05-02T01:38:28+00:00
Reserved at: -
Last executed: 2025-10-13T00:06:15+00:00
Last duration: 0
Next execution: 2025-10-14T00:06:15+00:00

$ sudo docker exec -u www-data nextcloud php occ background-job:list
+-------+-------------------------------------------------------------------+---------------------------+----------+
| id | class | last_run | argument |
+-------+-------------------------------------------------------------------+---------------------------+----------+
| 1 | OCA\WorkflowEngine\BackgroundJobs\Rotate | 2025-10-12T22:01:35+00:00 | null |
| 2 | OCA\ContactsInteraction\BackgroundJob\CleanupJob | 2025-10-13T00:06:15+00:00 | null |
...

なるほど…ということで、まだ実行されていないジョブをすべて走らせた。
少なくともこれで、あるべき姿にはなったのだろう。

けれども、この表示は変わらなかった。

Some jobs have not been executed since 5ヶ月前. Please consider increasing the execution frequency.

Some jobs have not been executed since ... の改善

ジョブはすべて実行したのだから、管理者設定 → 基本設定 でこの表示がされているのはおかしい。

あれ?でもよく見ると、バックグラウンドジョブの選択がCron(推奨)に変わっている。
きっとジョブを実行しようとしたら、既に実行されていたから、Cronで起動される設定に切り替わったのだろう。

ということで、Webcronに選択を変更して、画面を更新…

最終ジョブ実行は 4分前 です。

なるほど、無理矢理設定が変わってしまったものの、この表示で使う監視先までは変わらなかったってことなのかな。

バックグラウンドジョブをCronにする

前々からスカッとしなくて気になっていたこの問題、ホストから定期的にこのコマンドを呼べば解決じゃね?
ということで、ホストから5分おきに呼び出すように設定。

/etc/crontab

*/5 *   * * *   root    sudo docker exec -u www-data nextcloud php ./cron.php

様子を確認。

$ journalctl -u cron --since -1hour
...
Oct 13 09:28:01 nc1 cron[912]: (*system*) RELOAD (/etc/crontab)
Oct 13 09:30:01 nc1 CRON[6759]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Oct 13 09:30:01 nc1 CRON[6760]: (root) CMD ( sudo docker exec -u www-data nextcloud php ./cron.php)
Oct 13 09:30:01 nc1 sudo[6761]: root : PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -u www-data nextcloud php ./cron.php
Oct 13 09:30:01 nc1 sudo[6761]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=0)
Oct 13 09:30:01 nc1 sudo[6761]: pam_unix(sudo:session): session closed for user root
Oct 13 09:30:01 nc1 CRON[6759]: pam_unix(cron:session): session closed for user root
Oct 13 09:35:01 nc1 CRON[6884]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Oct 13 09:35:01 nc1 CRON[6885]: (root) CMD ( sudo docker exec -u www-data nextcloud php ./cron.php)
Oct 13 09:35:01 nc1 sudo[6886]: root : PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -u www-data nextcloud php ./cron.php
Oct 13 09:35:01 nc1 sudo[6886]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=0)
Oct 13 09:35:02 nc1 sudo[6886]: pam_unix(sudo:session): session closed for user root
Oct 13 09:35:02 nc1 CRON[6884]: pam_unix(cron:session): session closed for user root
...

動いてる。

最終ジョブ実行は 2分前 です。

さっきと表示される時間も違ってるし、OK、上手くいった。

さいごに

こんなことなら、サボらずにちゃんとCronの設定をしておけば良かったな。

多分、Samba共有を読み取り専用から読み書き可能に切り替えたとき、Windowsクライアントが上手く動かなかったんだけれど、原因はきっとこれだったんだろうなと。
試行錯誤の結果、クライアント側にどうにもできなくなったゴミフォルダが残ってしまっている。アレもどうにかしないとな…

ということで、

ここから広告
広告
広告ここまで

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他