Problemer med cron job

alt om grafiske brukergrensesnitt (GNOME, KDE, osv.), applikasjoner tett knyttet til disse og multimedia.

Problemer med cron job

Innleggav Soerboe » tor 13.08.2009 13:07

Hei. Jeg har litt problemer med et script jeg skal kjøre som cron job.

Scriptet er dette (konverterer fra flac til mp3):
Kode: Merk alt
#!/bin/bash                                           

# full sti
flac_dir=/dagh/musikk/flac/
mp3_dir=/dagh/musikk/mp3/ 

# finner hvilke filer som finnes
cd "$flac_dir"                 
find -mindepth 2 -type d | sort > temp1
cd "$mp3_dir"
find -mindepth 2 -type d | sort > temp2

# finner flac-filer som ikke er konvertert
grep -v -f "${mp3_dir}temp2" "${flac_dir}temp1" | awk '{l=length($0)+1; print substr($0,3,l);}' > filer

# setter tellere
ant_album=`cat "${mp3_dir}filer" | wc -l`
nr_album=1

cat "${mp3_dir}filer" | while read fil;
do
  # skriver ut info
  echo "-----"
  echo "| Konverterer \"${fil}\" som er album $((nr_album++)) av ${ant_album}"
  echo "-----"

  # lag artistmappe
  martist=`echo $fil | awk -F / '{print $1}'`
  if [ ! -d "$martist" ]
  then
    mkdir "$martist"
  fi
  cd "$martist"
  # lag albummappe
  malbum=`echo $fil | awk -F / '{print $2}'`
  mkdir "$malbum"
  cd "${flac_dir}${fil}"

  # konverterer filer
  for a in *.flac
    do
       OUTF=`echo "$a" | sed s/"\.flac$"/"\.mp3"/g`

       ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
       TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
       ALBUM=`metaflac "$a" --show-tag=ALBUM | sed s/.*=//g`
       GENRE=`metaflac "$a" --show-tag=GENRE | sed s/.*=//g`
       TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
       DATE=`metaflac "$a" --show-tag=DATE | sed s/.*=//g`

       flac -c -d "$a" | lame -V 1 --vbr-new - "${mp3_dir}${fil}/${OUTF}"
       id3v2 -t "$TITLE" -T "$TRACKNUMBER" -a "$ARTIST" -A "$ALBUM" -g "$GENRE" -y "$DATE" "${mp3_dir}${fil}/${OUTF}"
  done

  cd "$mp3_dir"
done

# sletter midlertidige filer
rm ${flac_dir}temp1
rm ${mp3_dir}temp2
rm ${mp3_dir}filer

echo "-----"
echo "| Konvertering ferdig."
echo "-----"


Det scriptet gjør er å sjekke to mapper mot hverandre og finne ut om noen nye artister eller album har blitt lagt til. Deretter konverteres hver fil i de nye albumene fra flac til mp3.

Problemet er at når jeg kjører scriptet som cron job slik:
Kode: Merk alt
45 12 * * * /dagh/musikk/konverter_flac2mp3

så blir bare den første sangen konvertert og scriptet avsluttes.
Hvis jeg derimot kjører scriptet i terminal, så fungerer det flott og alle sangene konverteres.

Noen som kan ha en idé?

dagH

Brukerens avatar
medlem i 202 måneder
 

Re: Problemer med cron job

Innleggav geirendre » fre 14.08.2009 8:45

Når du kjører den med cron, er det da "din" crontab, eller roots crontab du bruker?

Shell miljøet du bruker for å kjøre scriptet blir jo satt med at bash "sourcer" filer som
/etc/bashrc, etc/profile, ~/.bashrc og ~/.profile , det skjer ikke når skriptet kjøres med cron.

Litt debugging vil kansje kaste lys over saken...
Du kan f.eks. prøve å legge inn linjer som:
Kode: Merk alt
echo $PWD >> /dagh/musikk/loggfil.txt
og
Kode: Merk alt
echo $variabelnavn >> /dagh/musikk/loggfil.txt
på strategiske plasser i scriptet for å se om du oppdager noen
forskjell fra når du kjører det, til når cron gjør det. :-P

Erfaren
Brukerens avatar
medlem i 229 måneder
 

Re: Problemer med cron job

Innleggav Soerboe » fre 14.08.2009 11:10

Jeg har lagt inn i min crontab. Den ser forresten slik ut, hvis det skulle være noe feil der:
Kode: Merk alt
daghenning@Toast:~$ crontab -l
# m h  dom mon dow   command
1 0 * * * /dagh/linux/scripts/get_hostname_dhcpd
40 10 * * * /dagh/musikk/konverter_flac2mp3
daghenning@Toast:~$


Men det merkelige er at når jeg prøvde å legge inn sånne linjer som du sa, så skriver ikke scriptet ut noen ting når det kjøres i cron, mens det skriver de fint ut i bash.

Denne har ingen utskrift i cron:
Kode: Merk alt
echo $PWD >> /dagh/musikk/loggfil.txt


Noe må være ganske anderledes, siden det er så stor forskjell i å kjøre scriptet i cron når det ikke klarer å skrive ut gjeldene katalog engang.

Har du peiling? Dette var mystisk synes nå jeg :-)

Brukerens avatar
medlem i 202 måneder
 

Re: Problemer med cron job

Innleggav geirendre » fre 14.08.2009 12:25

Prøv å kjør den i cron med:
Kode: Merk alt
40 10 * * * /dagh/musikk/konverter_flac2mp3 > /tmp/flac2mp3.log 2>&1

og se hva du da får i /tmp/flac2mp3.log.

Erfaren
Brukerens avatar
medlem i 229 måneder
 

Re: Problemer med cron job

Innleggav Soerboe » fre 14.08.2009 13:15

Skikkelig merkelig du!
Når jeg la til det siste i crontab så kjørte scriptet helt fint igjennom og konverterte alle sangene. Og det som står i /tmp/flac2mp3.log er den vanlige output'en i bash.

Hva kan dette ha med å gjøre? Merkelig!

Brukerens avatar
medlem i 202 måneder
 

Re: Problemer med cron job

Innleggav kattemann » fre 14.08.2009 15:59

Se om cron har forsøkt å sende deg e-post - normalt skal all utdata fra en cronjob sendes til jobbens eier som e-post, hvis ikke annet er sagt, slik som med redirection ">".
Jeg kan ikke helt se av skriptet hvorfor den skulle stoppe etter én konvertering, hvis den ikke forsøker å sende en e-post for hver konvertering og feiler etter den første?

Brukerens avatar
medlem i 234 måneder
 

Re: Problemer med cron job

Innleggav Soerboe » fre 14.08.2009 17:18

Jeg har ikke fått mail fra cron. (Jeg sjekker dette med "mail"-kommandoen, sant?)

Men "mail"-kommandoen var ikke installert, så jeg måtte installere pakken "mailutils". Kan problemene komme av at den ikke var installert? At cron prøvde å sende mail, men så ble den avbrutt siden det ikke var installert?

Brukerens avatar
medlem i 202 måneder
 

Re: Problemer med cron job

Innleggav kattemann » fre 14.08.2009 20:25

Det virker rimelig, ja. Men siden du fikk til cron-kjøringen, så er det kanskje ikke så farlig, hvis du ikke vil ha e-post på den maskinen, da :-)

Brukerens avatar
medlem i 234 måneder
 

Re: Problemer med cron job

Innleggav Soerboe » fre 14.08.2009 23:41

Jeg testet nå uten å legge til spesifisert output i cron og nå fungerte det etter at jeg hadde installert mail. Det tyder på at cron "trenger" mail på en eller annen underfundig måte. Jeg fikk en mail forresten nå med output'en. Så hvis ikke cron får sendt output på mail, så er det ikke helt fornøyd... Men jeg skjønner ikke helt hvorfor for-løkka skulle bli avbrutt av den grunn. Jaja, nå fungerer det :)

Brukerens avatar
medlem i 202 måneder
 


Returner til Skrivebord / Multimedia



Hvem er i Forumene

Registrerte brukere: Google [Bot]