/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Script fryser fra cron
Fra : Rander


Dato : 25-01-03 03:57

Nu har jeg snart ikke flere hår på hovedet...

Jeg har lavet mig et lille script der ser således ud:

#!/bin/bash

cd /home/sites/rander.dk/dansktoppen/convert/

---
if [ -f Dansktoppen* ]; then
   antiword Dansktoppen* > dktop.txt
   ./txt2html.pl
   rm -f *.txt
   rm -f Dansktoppen*
   mv *.html ../lister/
   echo Filen blev konverteret korrekt!
else
   echo Filen blev ikke fundet!
fi
---

Som de kvikke nok kan gennemskue handler det om jeg får tilsendt en MS-word
fil ved navn "Dansktoppen <nr>.doc", hvor <nr> er et trecifret nummer der
er forskelligt hver gang. Den kopierer jeg så ind i det rette bibliotek
(via Samba) på serveren.

Doc-filen konverteres til ren tekst med Antiword, og txt2html.pl er et
hjemmelavet perl-script der konverterer tekst-filen til en html-fil.
Herefter ryddes op, og den resulterende html-fil flyttes til det rette sted
på filsystemet.

Og det virker 100% - når jeg selv kører det (som root)!

Problemet er bare at når cron skal køre det, så går det galt: Doc-filen
("Dansktoppen <nr>.doc") forsvinder godt nok, men der er hverken en
tekst-fil eller en html-fil - og top viser at txt2html.pl stadig kører og
forbruger 99% af CPU'en (450 MHz P3). Mailen fra cron udebliver også...

Er der nogen der kan give mig de vises sten og fortælle mig hvad der går
galt???

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Gud er en blød mand. Han er næsten gennemsigtig. (Kate, 6 år)


 
 
Kent Friis (25-01-2003)
Kommentar
Fra : Kent Friis


Dato : 25-01-03 11:40

Den Sat, 25 Jan 2003 03:57:13 +0100 skrev Rander:
>Nu har jeg snart ikke flere hår på hovedet...
>
>Jeg har lavet mig et lille script der ser således ud:
>
>#!/bin/bash
>
>cd /home/sites/rander.dk/dansktoppen/convert/
>
>---
>if [ -f Dansktoppen* ]; then
>   antiword Dansktoppen* > dktop.txt
>   ./txt2html.pl
>   rm -f *.txt
>   rm -f Dansktoppen*
>   mv *.html ../lister/
>   echo Filen blev konverteret korrekt!
>else
>   echo Filen blev ikke fundet!
>fi
>---
>
>Problemet er bare at når cron skal køre det, så går det galt: Doc-filen
>("Dansktoppen <nr>.doc") forsvinder godt nok, men der er hverken en
>tekst-fil eller en html-fil - og top viser at txt2html.pl stadig kører og
>forbruger 99% af CPU'en (450 MHz P3). Mailen fra cron udebliver også...

txt-filen mangler. Altså går det galt allerede i linie 2. Sandsynligvis
skal du bare have fuld sti til antiword, så scriptet ved hvor den findes
henne - path er nemlig ikke altid den samme når et script køres fra
cron.

Når txt2html så kan finde sit input, så løser det sikkert problemet med
99% CPU. Jeg kunne forestille mig det skyldes at txt2html ikke finder
filen, og så læser fra stdin i stedet. Men da stdin er lukket (eller
/dev/null), vil den blot få fejl eller EOF, og hvis der ikke checkes
på dette, vil den bare blive ved med at forsøge at læse data.

Hvis det ikke løser problemet, så prøv at sætte # foran de to rm
linier, og se om filerne bliver oprettet og slettet, eller aldrig bliver
oprettet.

Mvh
Kent
--
Journalist: En der har forstand på at skrive artikler, men typisk
ikke på det artiklerne handler om.

Rander (25-01-2003)
Kommentar
Fra : Rander


Dato : 25-01-03 14:51

Sat, 25 Jan 2003 10:40:14 +0000 (UTC) brugte Kent Friis 47 linier på at
fortælle dette til dk.edb.system.unix:

>>#!/bin/bash
>>
>>cd /home/sites/rander.dk/dansktoppen/convert/
>>
>>if [ -f Dansktoppen* ]; then
>>   antiword Dansktoppen* > dktop.txt
>>   ./txt2html.pl
>>   rm -f *.txt
>>   rm -f Dansktoppen*
>>   mv *.html ../lister/
>>   echo Filen blev konverteret korrekt!
>>else
>>   echo Filen blev ikke fundet!
>>fi
>>---
>>
>>Problemet er bare at når cron skal køre det, så går det galt: Doc-filen
>>("Dansktoppen <nr>.doc") forsvinder godt nok, men der er hverken en
>>tekst-fil eller en html-fil - og top viser at txt2html.pl stadig kører og
>>forbruger 99% af CPU'en (450 MHz P3). Mailen fra cron udebliver også...
>txt-filen mangler. Altså går det galt allerede i linie 2. Sandsynligvis
>skal du bare have fuld sti til antiword, så scriptet ved hvor den findes
>henne - path er nemlig ikke altid den samme når et script køres fra
>cron.

Fair nok... Jeg har forsøgt at lege lidt med det, og nu får jeg da i det
mindste en mail fra cron:

I can't open your mapping file (8859-1.txt)
It is not in '//.antiword' nor in '/usr/share/antiword'.
   Name: antiword
   Purpose: Display MS-Word files
   Author: (C) 1998-2002 Adri van Os
   Version: 0.33 (05 Jul 2002)
   Status: GNU General Public License
   Usage: antiword [switches] wordfile1 [wordfile2 ...]
   Switches: [-t|-p papersize][-m mapping][-w #][-i #][-Ls]
      -t text output (default)
      -p <paper size name> PostScript output
       like: a4, letter or legal
      -m <mapping> character mapping file
      -w <width> in characters of text output
      -i <level> image level (PostScript only)
      -L use landscape mode (PostScript only)
      -s Show hidden (by Word) text
/home/sites/rander.dk/dansktoppen/convert/convert.sh: line 14: 28969
Terminated ./txt2html.pl
mv: cannot stat `*.html': No such file or directory
Filen blev konverteret korrekt!

Filen 8859-1.txt, som den klager over, findes overhovedet ikke på systemet
- så jeg er ret blank overfor hvordan det så overhovedet kan virke fra
konsollen!?

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Når en ven er i problemer, skal du ikke besvære ham med at spørge, om der er noget,
du kan gøre. Find på noget, og gør det. (Edgar Watson Howe)


Martin Moller Peders~ (26-01-2003)
Kommentar
Fra : Martin Moller Peders~


Dato : 26-01-03 22:01

In <61b9g-ke5.ln1@rander.dk> Rander <lrNOSPAM@rander.dk> writes:

>Nu har jeg snart ikke flere hår på hovedet...

>Jeg har lavet mig et lille script der ser således ud:

>#!/bin/bash
source /root/.bashrc

>cd /home/sites/rander.dk/dansktoppen/convert/


>if [ -f Dansktoppen* ]; then
>   antiword Dansktoppen* > dktop.txt
>   ./txt2html.pl
>   rm -f *.txt
>   rm -f Dansktoppen*
>   mv *.html ../lister/
>   echo Filen blev konverteret korrekt!
>else
>   echo Filen blev ikke fundet!
>fi
>---

/Martin



Rander (31-01-2003)
Kommentar
Fra : Rander


Dato : 31-01-03 14:24

Sat, 25 Jan 2003 03:57:13 +0100 brugte Rander 47 linier på at fortælle
dette til dk.edb.system.unix:

>Nu har jeg snart ikke flere hår på hovedet...
>Jeg har lavet mig et lille script der ser således ud:
>#!/bin/bash
>cd /home/sites/rander.dk/dansktoppen/convert/
>if [ -f Dansktoppen* ]; then
>   antiword Dansktoppen* > dktop.txt
>   ./txt2html.pl
>   rm -f *.txt
>   rm -f Dansktoppen*
>   mv *.html ../lister/
>   echo Filen blev konverteret korrekt!
>else
>   echo Filen blev ikke fundet!
>fi

For lige at afslutte den her:

I onsdags dumpede en mail ind med følgende indhold:

---
Dear Mr. Rander,

On Sat, 25 Jan 2003 14:50:35, you but a message called "Script fryser fra
cron" in news group "dk.edb.system.unix".

I'm the author of Antiword and I will try to help you as much as I can. I
can not read Danish very well (I'm a Dutchman), so correct me if I'm wrong.
You try to run a cron script that contains a call to Antiword and Antiword
won't work as you belief it should. I see two problems here:
(1)
>> antiword Dansktoppen* > dktop.txt
I think that should be: antiword "Dansktoppen*" > dktop.txt
because of the space in the filename.
(2)
>> It is not in '//.antiword' nor in '/usr/share/antiword'.
That first directory is $HOME/.antiword, so it appears that cron sets $HOME
to / and not to the home directory of the user you want. Result: Antiword
can not find the mapping file. You should change your script to set $HOME
to the correct directory.

I hope this helps.

Kind Regards,
Adri van Os
---

Og ganske rigtigt viste det sig at være råd nummer to der hjalp - jeg har
nu i mit script sat en linie ind i starten der hedder "HOME=/root", og da
scriptet kørte i dag fløj den lige igennem uden problemer!

Endnu en grund til at skrotte Windows: Hvor mange har prøvet at have
problemer med et Windows-program, og når man så spurgte om det i en dansk
nyhedsgruppe blev man kontaktet direkte af den ikke-danske programmør?

--
Lars Rander, www.rander.dk ICQ#: 987520 ** Pil ikke ved min adresse **
Sjathelt og beskytter af det svage køn (udnævnt af diktator SEJ 5/6-99)

Den vigtigste rejse, man kan gøre i sit liv,
er at møde andre mennesker på halvvejen. (Henry Boy)


Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408866
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste