Hi! I have setup systemd nextcloudcron.service
to run cron.php job each 5 mins according to the official documentation with some little tuning with the idea to move from generic cron job executed via crontab.
Strangely, but it stops working in ~12 hours without clear understanding why. The trigger state in nextcoudcron.timer
becames just “n/a”.
Units:
#cat /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job
#Requires=apache2.service
[Service]
User=www-data
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Restart=on-failure
ExecStartPre=/bin/bash -c '/usr/bin/systemctl is-active --quiet apache2.service'
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process
# cat /etc/systemd/system nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 5 minute
[Timer]
#OnCalendar=*:0/5:00
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
In logs I see:
# cat /var/log/syslog | grep -n2 nextcloudcron
Mar 14 07:37:19 a3 systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:37:20 a3 systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:37:25 a3 systemd[1]: nextcloudcron.service: Deactivated successfully.
Mar 14 07:37:25 a3 systemd[1]: nextcloudcron.service: Consumed 3.435s CPU time.
Mar 14 07:39:01 a3 CRON[939140]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Mar 14 07:39:01 a3 systemd[1]: Starting Clean php session files...
Mar 14 07:39:02 a3 systemd[1]: phpsessionclean.service: Deactivated successfully.
Mar 14 07:39:02 a3 systemd[1]: Finished Clean php session files.
Mar 14 07:40:01 a3 CRON[939410]: (smmsp) CMD (test -x /etc/init.d/sendmail && test -x /usr/share/sendmail/sendmail && test -x /usr/libexec/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Mar 14 07:42:19 a3 systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:42:20 a3 systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:42:23 a3 systemd[1]: nextcloudcron.service: Deactivated successfully.
Mar 14 07:42:23 a3 systemd[1]: nextcloudcron.service: Consumed 2.240s CPU time.
Mar 14 07:45:01 a3 CRON[940182]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Mar 14 07:45:01 a3 systemd[1]: Starting Nextcloud Preview Generator...
Mar 14 07:45:02 a3 systemd[1]: Started Nextcloud Preview Generator.
Mar 14 07:45:03 a3 systemd[1]: nextcloud-preview-generator.service: Deactivated successfully.
Mar 14 07:45:03 a3 systemd[1]: nextcloud-preview-generator.service: Consumed 1.781s CPU time.
Mar 14 07:46:42 a3 anacron[938018]: Normal exit (1 job run)
Mar 14 07:46:42 a3 systemd[1]: anacron.service: Deactivated successfully.
Mar 14 07:47:19 a3 systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:47:20 a3 systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:47:23 a3 systemd[1]: nextcloudcron.service: Deactivated successfully.
Mar 14 07:47:23 a3 systemd[1]: nextcloudcron.service: Consumed 2.134s CPU time.
Mar 14 07:52:19 a3 systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:52:20 a3 systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:55:01 a3 CRON[941702]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Mar 14 08:00:01 a3 systemd[1]: Starting Nextcloud Preview Generator...
Mar 14 08:00:01 a3 CRON[942459]: (smmsp) CMD (test -x /etc/init.d/sendmail && test -x /usr/share/sendmail/sendmail && test -x /usr/libexec/sendmail/sendmail && /usr/share/sendmail/sendmail cron-msp)
Mar 14 08:00:02 a3 systemd[1]: Started Nextcloud Preview Generator.
Mar 14 08:00:04 a3 systemd[1]: nextcloud-preview-generator.service: Deactivated successfully.
Mar 14 08:00:04 a3 systemd[1]: nextcloud-preview-generator.service: Consumed 1.842s CPU time.
Mar 14 08:02:01 a3 CRON[942830]: (logcheck) CMD ( if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi)
Mar 14 08:09:01 a3 systemd[1]: Starting Clean php session files...
Mar 14 08:09:01 a3 CRON[944363]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Mar 14 08:09:03 a3 systemd[1]: phpsessionclean.service: Deactivated successfully.
Mar 14 08:09:03 a3 systemd[1]: Finished Clean php session files.
Filtering by service gives more clear report:
$ journalctl --since "2024-03-14 07:40:00" --until "2024-03-14 08:05:00" -u nextcloudcron.service
Mar 14 07:42:19 my.host systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:42:20 my.host systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:42:23 my.host systemd[1]: nextcloudcron.service: Deactivated successfully.
Mar 14 07:42:23 my.host systemd[1]: nextcloudcron.service: Consumed 2.240s CPU time.
Mar 14 07:47:19 my.host systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:47:20 my.host systemd[1]: Started Nextcloud cron.php job.
Mar 14 07:47:23 my.host systemd[1]: nextcloudcron.service: Deactivated successfully.
Mar 14 07:47:23 my.host systemd[1]: nextcloudcron.service: Consumed 2.134s CPU time.
Mar 14 07:52:19 my.host systemd[1]: Starting Nextcloud cron.php job...
Mar 14 07:52:20 my.host systemd[1]: Started Nextcloud cron.php job.
So, somehow after 07:52 nextcloudcron.service
stops working, while the other services (eg preview generator run each 15 mins) are continuing to work well.
I tried to play with OnCalendar option, added Restart=on-failure. It doesn’t help anyway.
Why I am using systemd instead of cron job, as I would like to stop executing cron.php job when backup process is run.
Steps to reproduce
- Create unit files for running cron.php job each 5 mins.
- Start nextcloudcron.timer.
- Observe that it is working and trigger runs the job each 5 mins.
- Check in ~12 hours and observe that the state of the trigger is n/a.