Commando werkt in shell, maar niet als Cron-job

Pagina: 1
Acties:
  • 463 views sinds 30-01-2008
  • Reageer

  • Crakie
  • Registratie: Augustus 2006
  • Laatst online: 05-01 21:39

Crakie

I want my board back, Lance

Topicstarter
Zoals ook hier op GoT is besproken, werkt het XMLTV-script tv_grab_nl niet meer om de programmagids van Mythtv te updaten. Ik ben daarom overgestapt naar tv_grab_nl_py, hetgeen ik inmiddels aan de praat heb gekregen. Het volgende commando werkt dan ook prima vanuit de shell:

code:
1
mythfilldatabase --graboptions "--slow --config-file /home/crakie/.xmltv/tv_grab_nl_py.conf"


Hetzelfde commando lijkt echter als Cron-job niet te werken. Ook al draai ik het iedere nacht (althans, daar geef ik Cron opdracht toe), na een paar dagen heb ik geen programma-informatie meer. Draai ik het vervolgens handmatig, dan is de database weer vol... voor een paar dagen.

Het gaat om Kubuntu 7.04; ik gebruik KCron om het in te stellen. Crontab ziet overigens ok uit:

code:
1
2
3
4
5
6
7
# Backup Home
0 4 * * *       cp -r -u /home/* /media/External/Backup\ Home/
# Mythfilldatabase
0 8 * * *       mythfilldatabase --graboptions "--slow --config-file /home/crakie/.xmltv/tv_grab_nl_py.conf"
# This file was written by KCron. Copyright (c) 1999, Gary Meyer
# Although KCron supports most crontab formats, use care when editing.
# Note: Lines beginning with "#\" indicates a disabled task.


Ik kan nergens een log vinden van Cron en na bestuderen van diverse manuals heb ik ook geen optie gevonden om logging aan te zetten. Iemand een idee hoe ik die kan aanzetten? Of wat ik fout doe?

Deze signature is strikt genomen langer dan noodzakelijk.


Verwijderd

Probeer eens het volledige pad naar je script in te vullen, vertrouw dus niet altijd erop dat de PATH variabele wel zal kloppen.

  • Crakie
  • Registratie: Augustus 2006
  • Laatst online: 05-01 21:39

Crakie

I want my board back, Lance

Topicstarter
Ok, goed idee, ik heb "mythfilldatabase" vervangen door "/usr/bin/mythfilldatabase". Een paar maanden geleden (toen de extra opties niet nodig waren) werkte "mythfilldatabase" (zonder pad) overigens prima als Cron-job.

Zonder logs duurt het echter een paar dagen voordat ik er achter kom of het werkt.

Deze signature is strikt genomen langer dan noodzakelijk.


  • schnitzelcore
  • Registratie: December 2003
  • Laatst online: 13-08-2021
Cron stuurt je toch altijd een mailtje als 'ie iets voor je start? Als 'ie "mythfilldatabase" draait zou daar dan ook in moeten staan wat "mythfilldatabase" naar stdout stuurt.
Ik ken "mythfilldatabase" niet (heeft het bv geen -v 'verbose' optie?), maar zelfs in het slechtste geval krijg je toch altijd een bevestiging van Cron wat 'ie heeft gedaan?
Je hebt toch geen MAILTO=" " in je crontab staan?

Windows is exiting. Is this OK?


  • Crakie
  • Registratie: Augustus 2006
  • Laatst online: 05-01 21:39

Crakie

I want my board back, Lance

Topicstarter
De bovenstaande crontab is de hele file. Ik heb nog nooit gehoord van mailtjes, amateur als ik ben. Daarom ging ik op zoek naar de logs.

Deze signature is strikt genomen langer dan noodzakelijk.


  • Ultra
  • Registratie: Maart 2000
  • Niet online
Zo werkt het bij mij:
code:
1
9 5  * * *     mythtv  export USER="mythtv";export TERM=xterm;/usr/bin/mythfilldatabase --graboptions "--quiet"


Mythweb laat zien wanneer mythfilldatabase voor de laatste keer succesvol is gedraaid. Geen idee waar die informatie uit wordt gehaald.

  • schnitzelcore
  • Registratie: December 2003
  • Laatst online: 13-08-2021
Offtopic, maar is er een reden dat je 'm om negen over vijf laat draaien?

Windows is exiting. Is this OK?


  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Wat als je een gebruiker specfifiëert waarop de taak moet draaien? Ik weet niet of dat nodig is, maar zelf voeg ik dat er altijd bij...

Wat je ook kan proberen is om de taak in de achtergrond de laten draaien (een & er achter), ik heb het zelf al meegemaakt dat cron een taak die even in beslag neemt, na een tijdje "de nek om wringt".

[ Voor 42% gewijzigd door maleadt op 22-12-2007 17:12 ]


  • Ultra
  • Registratie: Maart 2000
  • Niet online
schnitzelcore schreef op zaterdag 22 december 2007 @ 16:35:
Offtopic, maar is er een reden dat je 'm om negen over vijf laat draaien?
Nee :+.

  • Crakie
  • Registratie: Augustus 2006
  • Laatst online: 05-01 21:39

Crakie

I want my board back, Lance

Topicstarter
Bedankt voor de suggesties, maar ik kom er nog steeds niet uit. Ik besloot daarom een andere route te proberen: de grabber een losse XML-file laten maken en die aan mythfilldatabase voeren. 'Met de hand' gaat dat prima. Dus toen heb ik - voor het eerst van mijn leven - een script geschreven om dat te automatiseren:

code:
1
2
/usr/bin/tv_grab_nl --slow --config-file /home/crakie/.xmltv/tv_grab_nl_py.conf --output /home/crakie/listings.xml
/usr/bin/mythfilldatabase --file 1 -1 listings.xml


Dit is de essentie, ik heb ook uitgebreidere versies gemaakt waarin listings.xml eerst verwijderd wordt en ook echo regels toegevoegd om te kijken of het script ergens stopt. Vanaf de commandline loopt het script zoals verwacht. Voor de zekerheid heb ik tv_grab_nl met chmod 0777 behandeld.Toch slaat cron de regel met tv_grab_nl over!

Ik laat een log aanmaken door Crontab via de entry:

code:
1
45 22 * * *     /home/crakie/script > /home/crakie/test7.log


Test7.log laat vervolgens alleen de output van mythfilldatabase zien; Mythweb bevestigt dat die gedraaid heeft:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
### bypassing grabbers, reading directly from file
2007-12-23 22:45:02.081 Using runtime prefix = /usr
2007-12-23 22:45:02.092 New DB connection, total: 1
2007-12-23 22:45:02.095 Connected to database 'mythconverg' at host: localhost
2007-12-23 22:45:02.100 Updating icons for sourceid: 1
2007-12-23 22:45:02.101 New DB connection, total: 2
2007-12-23 22:45:02.101 Connected to database 'mythconverg' at host: localhost
2007-12-23 22:45:02.101 No programs found in data.
2007-12-23 22:45:02.134 New DB connection, total: 3
2007-12-23 22:45:02.134 Connected to database 'mythconverg' at host: localhost
2007-12-23 22:45:02.135 New DB connection, total: 4
2007-12-23 22:45:02.135 Connected to database 'mythconverg' at host: localhost
2007-12-23 22:45:02.136 Adjusting program database end times.
2007-12-23 22:45:02.156     0 replacements made
2007-12-23 22:45:02.156 Marking generic episodes.
2007-12-23 22:45:02.178     Found 0
2007-12-23 22:45:02.178 Marking repeats.
2007-12-23 22:45:02.198     Found 0
2007-12-23 22:45:02.199 Unmarking new episode rebroadcast repeats.
2007-12-23 22:45:02.218     Found 0
2007-12-23 22:45:02.265 Marking episode first showings.
2007-12-23 22:45:03.148     Found 2321
2007-12-23 22:45:03.148 Marking episode last showings.
2007-12-23 22:45:04.043     Found 2321
2007-12-23 22:45:04.051
===============================================================
| Attempting to contact the master backend for rescheduling.  |
| If the master is not running, rescheduling will happen when |
| the master backend is restarted.                            |
===============================================================
2007-12-23 22:45:04.053 Connecting to backend server: 127.0.0.1:6543 (try 1 of 5)
2007-12-23 22:45:04.054 Using protocol version 31
2007-12-23 22:45:04.081 mythfilldatabase run complete.
2007-12-23 22:45:04.081 DataDirect: Deleting temporary files


Waarom draait Cron /usr/bin/tv_grab_nl niet?

EDIT: Hij start tv_grab_nl wel, want als ik listings.xml weghaal, wordt er na het draaien van het script door Cron wel eentje aangemaakt. Die file is echter slechts 4025 bytes, terwijl een volle run een dikke megabyte oplevert. Waarom wordt het programma afgebroken en waarom komt de output niet in de logfile?

[ Voor 4% gewijzigd door Crakie op 23-12-2007 23:17 ]

Deze signature is strikt genomen langer dan noodzakelijk.


  • kwiebus
  • Registratie: Oktober 2002
  • Laatst online: 09:37
waarom redirect je de stdout en stderr van je cronjob niet naar een logbestand? Misschien dat je daar ook wat informatie uit kunt halen.

  • Crakie
  • Registratie: Augustus 2006
  • Laatst online: 05-01 21:39

Crakie

I want my board back, Lance

Topicstarter
Heel vreemd, maar als ik stderr (ipv stdout) redirect, blijft tv_grab_nl wel lopen. Cron draait nu het volgende script correct:

code:
1
2
3
rm /home/crakie/listings.xml
/usr/bin/tv_grab_nl --slow --config-file /home/crakie/.xmltv/tv_grab_nl_py.conf --output /home/crakie/listings.xml
/usr/bin/mythfilldatabase --file 1 -1 /home/crakie/listings.xml


met crontab:

code:
1
0 8 * * *       /home/crakie/script 2>/home/crakie/mythlog


Begrijpen doe ik het niet, maar ik ben tevreden met het resultaat :)

Deze signature is strikt genomen langer dan noodzakelijk.

Pagina: 1