[mythtv-users] Mythfilldatabase

Matthew Daubenspeck matt at oddprocess.org
Fri May 15 21:21:50 UTC 2020


On Thu, May 14, 2020 at 03:19:31PM +1200, Stephen Worthington wrote:
> On Wed, 13 May 2020 14:25:05 -0400, you wrote:
> 
> >Just recently updated to mythtv 31.0 on Arch Linux. I moved the
> >SchedulesDirect setup to tv_grab_zz_sdjson and am having a very strange
> >thing happen which I can't figure out.
> >
> >If I run mythfilldatabase manually at the commandline, everything works
> >perfectly. If I add it to a cron job, it fails with the following error:
> >
> >tv_grab_zz_sdjson  --capabilities failed or we timed out waiting. You
> >may need to upgrade your xmltv grabber
> >
> >Grabbing XMLTV data using tv_grab_zz_sdjson is not supported. You may
> >need to upgrade to the latest version of XMLTV.
> >
> >Again, it works perfectly, as long as it isn't run from cron and I can't
> >figure out why. Any suggestions?
> 
> That sounds like the classic problem of cron running jobs as root, and
> mythfilldatabase needs to be run from your mythtv user normally.  If
> you are any good at systemd, you might like to consider running
> mythfilldatabase as a systemd timer unit - systemd makes it easy to
> run things as different users.
> 
> Here is what I think a systemd setup to run mythfilldatabase as the
> mythtv user should look like.  Note that I have not tested this:
> 
> Create a file /etc/systemd/system/mythfilldatabase.service:
> 
> [Unit]
> Description=MythTV mythfilldatabase service.
> Wants=mythtv-backend.service
> After=mythtv-backend.service
> 
> [Service]
> User=mythtv
> Group=mythtv
> Type=simple
> ExecStart=/usr/bin/mythfilldatabase
> 
> [Install]
> WantedBy=multi-user.target
> 
> And then create a file /etc/systemd/system/mythfilldatabase.timer:
> 
> [Unit]
> Description=MythTV mythfilldatabase timer.
> 
> [Timer]
> OnCalendar=15:10:00
> Persistent=true
> 
> [Install]
> WantedBy=timers.target
> 
> Those files need to be chown root:root and chmod u=rw,g=r,u=r.
> 
> Change the OnCalendar= setting to whenever you want mythfilldatabase
> to be run.  You can have as many OnCalendar= lines as you like.
> 
> The do these commands:
> 
> sudo systemctl daemon-reload
> sudo systemctl enable mythfilldatabase.service
> sudo systemctl enable mythfilldatabase.timer
> sudo systemctl start mythfilldatabase.timer
> 
> If you want to manually run mythfilldatabase:
> 
> sudo systemctl start mythfilldatabase.service
> 
> If you only want mythfilldatabase to be run at the time specified, and
> not at boot time if the timer was missed, then do not enable the
> mythfilldatabase.service.
> 
> 
> The way to run cron jobs as different users is to change your command
> prompt to that user:
> 
> su -l mythtv
> 
> and then run:
> 
> crontab -e
> 
> That puts you in your default command line editor (nano in my case) on
> the crontab file for that user.  Put your mythfilldatabase cron job
> there, save and exit.  Remove the anacron job from /etc/cron.daily or
> wherever you currently have it.
> 
> Note that user cron jobs are cron jobs, not anacron jobs.  They are
> run at the time specified only, and are not queued and run in sequence
> with other jobs as cron.daily jobs are.  And they do not get run
> automatically at boot if the time was missed due to the PC being shut
> down.
> 
> My mythfilldatabase runs from my user crontab, as I have been running
> it there since well before Ubuntu changed to systemd.
> _______________________________________________

I'm about to throw something!

I've tried multiple cron settings, like you suggested, and get the same
results. My normal user runs mythtv-setup, and has run mythfilldatabase
for years just fine, until the change to the SD JSON grabber. I tried
the systemd method as well, it gets the same error:

tv_grab_zz_sdjson  --capabilities failed or we timed out waiting...

I've tried scripts running as other users, I've read and re-read both
replies to my original message, as well as both wiki articles on xmltv
and mythfilldatabase. Neither of them seem to make a difference.
Everything runs fine when I run them manually, but as soon as cron is
involved, it errors out and doesn't work.

I copied all of the .mythtv and .xmltv directories to a newly created
mythtv home directory, and again, it runs fine if I do so manually. But
add it to cron, or your systemd suggestion, and it errors out the same
way.

I'm almost to the point of having another machine run a cronjob over ssh
just to get it to work.

I also tried sudo --set-home --login --user=mythtv ... but I guess I
don't understand what the ... should be, as any command I use there does
nothing and returns to the prompt.

I'm stuck!




More information about the mythtv-users mailing list