script opfører sig anderledes i crontab

Alle tekniske spørgsmål som ikke hører ind under de andre fora.
thomasjohansen
Indlæg: 780
Tilmeldt: 4. jun 2008, 13:37
Geografisk sted: Køge

script opfører sig anderledes i crontab

Indlæg af thomasjohansen »

Hjælp, sidder og har fiflet med et script der skal kigge efter filer med et navn og omdøbe dem og uploade dem til en ftp.

nu har jeg, med min begrænset script viden og googlen, endelig fået scriptet til at virke efter hensigten, men når jeg har tilføjet det til crontab, så kører den det scriptet men udfører ikke alle handlingerne.

En der kan hjælpe mig med hvorfor og evt. hvad der skal laves om.

Kode: Vælg alt


#!/bin/bash


if ls /home/thomas/ftp-gateway/bilag* 1> /dev/null 2>&1; then
   echo "der er bilag-filer"

   for file in bilag*.tif
do
mv -i "${file}" "${file/bilag/time-$(date +%s%d%m%Y)}"
done

else

   echo "ingen bilag-filer"

fi

if ls /home/thomas/ftp-gateway/time* 1> /dev/null 2>&1; then

   HOST=xxxxxxx
   USER=xxxxxxx
   PASS=xxxxxxx

   ftp -inv $HOST << EOF

   user $USER $PASS

   mput time*.tif

   bye
EOF

rm time*.tif

else

   echo "ingen time-filer"

fi





Med venlig hilsen
Thomas Johansen
-----------------------------
Gnome-shell tilhænger også selv om det har sine fejl
thomasjohansen
Indlæg: 780
Tilmeldt: 4. jun 2008, 13:37
Geografisk sted: Køge

Re: script opfører sig anderledes i crontab

Indlæg af thomasjohansen »

som test, så har jeg oprettet en fil der hedder bilag001.tif

og første del af scriptet:

Kode: Vælg alt

if ls /home/thomas/ftp-gateway/bilag* 1> /dev/null 2>&1; then
   echo "der er bilag-filer"

virker fint, "der er bilag-filer" bliver skrevet til en log

men følgende bliver ikke udført:

Kode: Vælg alt

do
mv -i "${file}" "${file/bilag/time-$(date +%s%d%m%Y)}"
done



efterfølgende kan jeg se i loggen at resultatet af sidste "if" er "ingen time-filer" hvilket passer meget godt.
Med venlig hilsen
Thomas Johansen
-----------------------------
Gnome-shell tilhænger også selv om det har sine fejl
thomasjohansen
Indlæg: 780
Tilmeldt: 4. jun 2008, 13:37
Geografisk sted: Køge

Re: script opfører sig anderledes i crontab

Indlæg af thomasjohansen »

Sad og goolgede som en vanvittig i går aftes, kom frem til at den ikke kører "mv" linjen.

nogen nævner noget om definering af PATH mv. men uanset hvad jeg har prøvet så springer den den MV linje over.

Nå men den halve løsning blev at køre scriptet uden om cron og smide det hele ind i en "while sleep":

Kode: Vælg alt

while sleep 1m
do
   resten af scriptet
    ....
done



og det virker, så må jeg bare få det lagt ind så det starter op automatisk eller huske at starte det de få gange serveren skal genstartes.
Med venlig hilsen
Thomas Johansen
-----------------------------
Gnome-shell tilhænger også selv om det har sine fejl
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: script opfører sig anderledes i crontab

Indlæg af AJenbo »

Måske køre den ikke via bash når det er i cron?
thomasjohansen
Indlæg: 780
Tilmeldt: 4. jun 2008, 13:37
Geografisk sted: Køge

Re: script opfører sig anderledes i crontab

Indlæg af thomasjohansen »

hvordan vil man kunne se det?
Med venlig hilsen
Thomas Johansen
-----------------------------
Gnome-shell tilhænger også selv om det har sine fejl
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: script opfører sig anderledes i crontab

Indlæg af AJenbo »

Måske

Kode: Vælg alt

readlink /proc/$$/exe
thomasjohansen
Indlæg: 780
Tilmeldt: 4. jun 2008, 13:37
Geografisk sted: Køge

Re: script opfører sig anderledes i crontab

Indlæg af thomasjohansen »

Kode: Vælg alt

readlink /proc/$$/exe


giver

Kode: Vælg alt

/bin/bash


så....
Med venlig hilsen
Thomas Johansen
-----------------------------
Gnome-shell tilhænger også selv om det har sine fejl
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: script opfører sig anderledes i crontab

Indlæg af lath »

AJenbo skrev:Måske køre den ikke via bash når det er i cron?

Jeg mener at Debian bruger den mere sikre /bin/dash shell til system scripts.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags