Bash script probleem: werkt wel handmatig, niet via crontab

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Ik probeer via een crontab een script te laten draaien om ondertitels te zoeken bij bestanden. Hiervoor gebruik ik het programma subliminal. Ik heb een script geschreven wat dit zou moeten aanroepen. Op een of andere manier werkt het script prima wanneer ik het handmatig draai, maar als ik het via een cronjob doe werkt de boel niet. Een aantal vergelijkbare scripts werken wel. Script draait onder root (wellicht overbodig, maar toch) en ik zie in de systemlog dat het systeem het script aanroept.

Inhoud van script (gebruikersnaam en password even weggelaten):
code:
1
2
#!/bin/sh
subliminal -m 60 --languages nl en -c ~/Subliminal/cache/subliminal.db --providers podnapisi thesubdb tvsubtitles  addic7ed --addic7ed-username USERNAME -addic7ed-pasword PASSWORD -v --debug ~/Multimedia/Series/


Inhoud van crontab:
code:
1
15 12 * * * cd /home/USER/Scripts && sh subtitles.sh


Ik heb hierover 2 vragen:
1. Hoe kan ik dit het beste troubleshooten? Ik kan nergens een error vinden oid. Ook handig om te weten ivm toekomstige scripts :)
2. Weet iemand hoe dit op te lossen?

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:05

DukeBox

loves wheat smoothies

welk os/versie/shell ?

[ Voor 15% gewijzigd door DukeBox op 13-01-2014 22:01 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 13:16

CAPSLOCK2000

zie teletekst pagina 888

Het zou wel eens aan je pad kunnen liggen.
Als een cron-script output geeft dan wordt dat naar je toe gemailed.
Kijk eens of er niet ergens een mailtje op je staat te wachten.
Wanneer ik twijfel of cron geef ik als eerste commando iets heel simpels dat 100% zeker goed gaat en output achter laat, bv
code:
1
date >> /tmp/mijnscript.log

Als dat goed gaat zet ik ik set -x in m'n script om wat extra debug uitvoer te krijgen.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 29-09 19:12
inderdaad meestal een path of iets anders in je env dat alleen geset is als je bent ingelogd op een terminal
met de tips van capslock moet je er wel uitkomen denk ik :-)

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 00:54

Douweegbertje

Wat kinderachtig.. godverdomme

Volgens mij mag je script niet een . (punt) hebben.

Dus even je script hernoemen, en de .sh weg laten.

[ Voor 34% gewijzigd door Douweegbertje op 13-01-2014 22:08 ]


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 01-10 21:38
Let op dat je geen Windows enters er in heb staan CR dus.
Misschien dat je hem in Windows hebt gemaakt.

http://stackoverflow.com/...st-merge-error-cannot-run


Was te snel lees dat het script wel wordt uitgevoerd.

[ Voor 14% gewijzigd door InfoTracer op 13-01-2014 22:14 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Douweegbertje schreef op maandag 13 januari 2014 @ 22:07:
Volgens mij mag je script niet een . (punt) hebben.

Dus even je script hernoemen, en de .sh weg laten.
Dat boeit niet ;). Al noem je 't script "dit.is.een.script.die.moet.draaien.exe". Zolang het een shell script is, zal het gewoon werken.
Muncher schreef op maandag 13 januari 2014 @ 21:59:
Ik probeer via een crontab een script te laten draaien om ondertitels te zoeken bij bestanden. Hiervoor gebruik ik het programma subliminal. Ik heb een script geschreven wat dit zou moeten aanroepen. Op een of andere manier werkt het script prima wanneer ik het handmatig draai, maar als ik het via een cronjob doe werkt de boel niet. Een aantal vergelijkbare scripts werken wel. Script draait onder root (wellicht overbodig, maar toch) en ik zie in de systemlog dat het systeem het script aanroept.

Inhoud van script (gebruikersnaam en password even weggelaten):
code:
1
2
#!/bin/sh
subliminal -m 60 --languages nl en -c ~/Subliminal/cache/subliminal.db --providers podnapisi thesubdb tvsubtitles  addic7ed --addic7ed-username USERNAME -addic7ed-pasword PASSWORD -v --debug ~/Multimedia/Series/


Inhoud van crontab:
code:
1
15 12 * * * cd /home/USER/Scripts && sh subtitles.sh


Ik heb hierover 2 vragen:
1. Hoe kan ik dit het beste troubleshooten? Ik kan nergens een error vinden oid. Ook handig om te weten ivm toekomstige scripts :)
2. Weet iemand hoe dit op te lossen?
Je doet dingen in ~, oftewel $HOME. Het lijkt mij dat /root/Multimedia en /root/Subliminal niet bestaan. Gaat er nu een lampje branden?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:05

DukeBox

loves wheat smoothies

^ Dat en vandaar mijn eerste vraag welke shell.. subliminal e.d. wordt vaak op een nas gedraaid met een ash i.p.v. bash. Vaak klopt het path dan niet.

[ Voor 3% gewijzigd door DukeBox op 13-01-2014 23:01 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
1. Out of the box Xubuntu,
2. 13.10
3. /bin/bash
CAPSLOCK2000 schreef op maandag 13 januari 2014 @ 22:04:
Het zou wel eens aan je pad kunnen liggen.
Als een cron-script output geeft dan wordt dat naar je toe gemailed.
Kijk eens of er niet ergens een mailtje op je staat te wachten.
Wanneer ik twijfel of cron geef ik als eerste commando iets heel simpels dat 100% zeker goed gaat en output achter laat, bv
code:
1
date >> /tmp/mijnscript.log

Als dat goed gaat zet ik ik set -x in m'n script om wat extra debug uitvoer te krijgen.
Heb dit even geprobeerd, mijnscript.log wordt aangemaakt en van de datum voorzien. Wat bedoel je precies met set -x? (script is nu ook al -x, executable, als je dat bedoeld).
Hero of Time schreef op maandag 13 januari 2014 @ 22:53:
[...]

Je doet dingen in ~, oftewel $HOME. Het lijkt mij dat /root/Multimedia en /root/Subliminal niet bestaan. Gaat er nu een lampje branden?
Ik denk dat je aangeeft dat ik iets met PATH= oid moet doen? of wellicht het path van deze zaken moet aanpassen?
CAPSLOCK2000 schreef op maandag 13 januari 2014 @ 22:04:
Het zou wel eens aan je pad kunnen liggen.
Als een cron-script output geeft dan wordt dat naar je toe gemailed.
Kijk eens of er niet ergens een mailtje op je staat te wachten.
Als dat goed gaat zet ik ik set -x in m'n script om wat extra debug uitvoer te krijgen.
Hoe kan ik dat doen?

[ Voor 13% gewijzigd door Muncher op 14-01-2014 07:14 ]


Acties:
  • 0 Henk 'm!

  • DeBolle
  • Registratie: September 2000
  • Laatst online: 13:08

DeBolle

Volgens mij ligt dat anders

Muncher schreef op dinsdag 14 januari 2014 @ 07:09:
[...]

Ik denk dat je aangeeft dat ik iets met PATH= oid moet doen? of wellicht het path van deze zaken moet aanpassen?

[...]
Nee, login en wordt root. Type "cd ~" en "pwd". Dat is de homedir van root. Type nu wat in jouw script staat:
"cd ~/Subliminal".
Lukt dat? Bestaan de directories die in het script staan genoemd in root's homedir?

Specs ... maar nog twee jaar zes maanden en dan weer 130!


Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Probleem is opgelost, was inderdaad een probleem met een path. Ik heb het volgende gedaan:

1. cat van syslog liet zien dat er inderdaad mailtjes naar root@localhost werden gestuurd
2. cat van /var/mail/root liet zien dat Subliminal wel werd opgestart, maar vervolgens inderdaad de folders ~/Subliminal/cache en ~/Multimedia/Series niet kon vinden.
3. Script aangepast dat deze zoekt in /home/users/Subliminal/cache en /home/user/Multimedia/Series en nu werkt het als een zonnetje :)

Bedankt voor de tips, weer veel geleed vandaag :)

Acties:
  • 0 Henk 'm!

Verwijderd

Volgende stap: draai dit script onder een apart user account of gewoon onder je eigen user.
Er is geen enkele reden om dit als root te draaien. Geen flauw idee hoe het bij je opkomt om dat wel te doen.

Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Verwijderd schreef op dinsdag 14 januari 2014 @ 07:28:
Volgende stap: draai dit script onder een apart user account of gewoon onder je eigen user.
Er is geen enkele reden om dit als root te draaien. Geen flauw idee hoe het bij je opkomt om dat wel te doen.
Yes, ga ik doen. Draai hem onder root om te kijken of alles goed werkt.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Muncher schreef op dinsdag 14 januari 2014 @ 08:12:
[...]


Yes, ga ik doen. Draai hem onder root om te kijken of alles goed werkt.
Worst.. Idea.. Ever! Als je script handmatig in de terminal werkt, dan doe je 'm uitvoeren als said $USER. Als het handmatig werkt, maar via cron niet, ga je dat uitzoeken. Niet als een andere gebruiker draaien, want dan gooi je een hele set variabelen erin die je niet moet hebben. Maakt het onnodig complex om te troubleshooten.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 10:54
Muncher schreef op dinsdag 14 januari 2014 @ 07:23:
2. cat van /var/mail/root liet zien dat Subliminal wel werd opgestart, maar vervolgens inderdaad de folders ~/Subliminal/cache en ~/Multimedia/Series niet kon vinden.
3. Script aangepast dat deze zoekt in /home/users/Subliminal/cache en /home/user/Multimedia/Series en nu werkt het als een zonnetje :)
Als je wilt linken naar de homedir van een specifieke user, moet je geen slash na de tilde gebruiken;
~Subliminal
Dan werkt het wel zoals jij bedoeld


~/Subliminal
Linkt naar een map 'Subliminal' in de homedir van de huidige user.

Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

Onderstaande zou ik veranderen:
code:
1
15 12 * * * cd /home/USER/Scripts && sh subtitles.sh


Naar:
code:
1
15 12 * * * /home/USER/Scripts/subtitles.sh

Dat je hem met "sh" de standaard shell (sh subtitles.sh) wilt runnen, staat al aangegeven in je script:

code:
1
#!/bin/sh

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!

Pagina: 1