/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Cron?
Fra : Jimmy


Dato : 31-03-03 15:22

Hej

Jeg har et script, som ikke må køres to gange på samme tid.

Derfor er Cron ikke så god, da den kan starte en instans af scriptet og
starte endnu en instans før den første instans er færdigafviklet.

Den ideelle situation ville være, om scriptet kunne køre som en dæmon eller
blot køre kontinuert og aldrig terminere.
Evt. blot sove i et minut efter endt afvikling og derefter gå igang igen.

Er dette muligt?

Mvh
Jimmy



 
 
Kim Schulz (31-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 31-03-03 15:30

On Mon, 31 Mar 2003 16:21:44 +0200
"Jimmy" <nyhedsgruppe@get2net.dk> wrote:
> Hej
>
> Jeg har et script, som ikke må køres to gange på samme tid.
>
> Derfor er Cron ikke så god, da den kan starte en instans af scriptet
> og starte endnu en instans før den første instans er færdigafviklet.
>
> Den ideelle situation ville være, om scriptet kunne køre som en dæmon
> eller blot køre kontinuert og aldrig terminere.
> Evt. blot sove i et minut efter endt afvikling og derefter gå igang
> igen.
>
> Er dette muligt?


sleep(60) ?

du kan jo også bare i toppen af dit script checke om der allerede kører
en instans af dit script, og hvis der gør, så terminere.

--
Navn : Kim Schulz | You know you are getting old when you think
Email : kim @ schulz.dk | you should drive the speed limit. -- E.A.
WWW : www.schulz.dk | Gilliam

Jimmy (31-03-2003)
Kommentar
Fra : Jimmy


Dato : 31-03-03 15:43


"Kim Schulz" <kim@schulz.dk> wrote in message
news:20030331162950.21f028a6.kim@schulz.dk...
On Mon, 31 Mar 2003 16:21:44 +0200
"Jimmy" <nyhedsgruppe@get2net.dk> wrote:
> Hej
>
> Jeg har et script, som ikke må køres to gange på samme tid.
>
> Derfor er Cron ikke så god, da den kan starte en instans af scriptet
> og starte endnu en instans før den første instans er færdigafviklet.
>
> Den ideelle situation ville være, om scriptet kunne køre som en dæmon
> eller blot køre kontinuert og aldrig terminere.
> Evt. blot sove i et minut efter endt afvikling og derefter gå igang
> igen.
>
> Er dette muligt?


sleep(60) ?

Den lyder som en fin løsning.
Er der ulemper ved at lade en Perl-script køre døgnet rundt i et år?


>du kan jo også bare i toppen af dit script checke om der allerede kører
> en instans af dit script, og hvis der gør, så terminere.

Hvordan gøres dette?

Jeg har googlet men kan tilsyneladende ikke finde de rette søgeord.

Mvh
Jimmy



Lars Balker Rasmusse~ (03-04-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 03-04-03 19:06

Kjeld Flarup <kjeld.flarup@liberalismen.dk> writes:
> Vlad Tepes wrote:
>> Hvis to versjoner av scriptet startes samtidig, så kunne det hende at
>> lock-fila ble opprettet av den ene rett etter at den andre hadde funnet
>> ut at lock-fila ikke eksisterte.
>
> Hvis der kun startes een op af cron så bliver det ikke noget problem.

Hvis scriptet er beregnet til at køre i ubestemt tid, hvordan vil du
så lige sikre dig det?
--
Lars Balker Rasmussen                  "S.M.R.T."

Kjeld Flarup (03-04-2003)
Kommentar
Fra : Kjeld Flarup


Dato : 03-04-03 20:45

Lars Balker Rasmussen wrote:
> Kjeld Flarup <kjeld.flarup@liberalismen.dk> writes:
>
>>Vlad Tepes wrote:
>>
>>>Hvis to versjoner av scriptet startes samtidig, så kunne det hende at
>>>lock-fila ble opprettet av den ene rett etter at den andre hadde funnet
>>>ut at lock-fila ikke eksisterte.
>>
>>Hvis der kun startes een op af cron så bliver det ikke noget problem.
>
> Hvis scriptet er beregnet til at køre i ubestemt tid, hvordan vil du
> så lige sikre dig det?

Hvis du skal have en race kondition skal to programmer forsøge at gøre den samme
ting samtidigt.
Men hvis cron starter jobbet op en gang hvert minut, så har det første script
mageligt med tid til at oprette lock filen, og de efterfølgende programmer, skal
så blot terminere.

--
------------------------- Med Liberalistiske Hilsner --------------------------
Civilingeniør, Kjeld Flarup - Mit sind er mere åbent end min tegnebog
Ådalen 8, Mogenstrup, 7800 Skive, Tlf: 40 29 41 49, Fax: 96 95 74 48
Den ikke akademiske hjemmeside for liberalismen - www.liberalismen.dk


Morten Guldager (03-04-2003)
Kommentar
Fra : Morten Guldager


Dato : 03-04-03 21:16

Thu, 03 Apr 2003 at 19:45 GMT Kjeld Flarup wrote
>
> Hvis du skal have en race kondition skal to programmer forsøge at gøre den samme
> ting samtidigt.
> Men hvis cron starter jobbet op en gang hvert minut, så har det første script
> mageligt med tid til at oprette lock filen, og de efterfølgende programmer, skal
> så blot terminere.

Dette er ikke garanteret med mindre man kører et realtidssystem.
Jimmy kører linux. (det plejer han ihvertfald)

Man er nødt til at gøre et eller andet atomisk.

En rename af et symlink er en billig og let portabel løsning.
Ikke helt efter bogen, men meget let i perl.


/Morten

Flemming Frandsen (04-04-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 04-04-03 10:57

Morten Guldager wrote:
>>Men hvis cron starter jobbet op en gang hvert minut
>
> Dette er ikke garanteret med mindre man kører et realtidssystem.

Jeg har faktisk set crond gå amok ved flere lejligheder hvor det ser ud
til at den får kørt ting mange 1000 gange på samme tid, selv om der
skulle være 5 minutter imellem hver gang.


> En rename af et symlink er en billig og let portabel løsning.
> Ikke helt efter bogen, men meget let i perl.

flock() er din ven, så vil kernen sørge for at smide låsen hvis det
første script glemmer at slippe den, hvis man selv giver sig til at
rename ting og sager så skal man selv til at rode med kill for at se om
de foregående script stadig er i live.

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Kim Schulz (31-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 31-03-03 15:55

[snip]
>
> sleep(60) ?
>
> Den lyder som en fin løsning.
> Er der ulemper ved at lade en Perl-script køre døgnet rundt i et år?

Det kan jeg ikke forestille mig. jeg har selv flere kørende uden
problemer (bare vær sikker på at de ikke løber løbsk)


[snip]
> Hvordan gøres dette?
>
> Jeg har googlet men kan tilsyneladende ikke finde de rette søgeord.

jeg kan lige komme på 2 måde.
1) brug et modul der kan aflæse process listen og check for om dit
script kører ider.

2) en "lock" fil som oprettes når scriptet startes, og slettes når
de sluttes. Check for om filen findes - gør den, så terminer programmet.


--
Navn : Kim Schulz | Imagination is more important than knowledge.
Email : kim @ schulz.dk | -- Albert Einstein
WWW : www.schulz.dk |

Vlad Tepes (01-04-2003)
Kommentar
Fra : Vlad Tepes


Dato : 01-04-03 08:27

* Kim Schulz:
> [snip]
>>
>> sleep(60) ?
>>
>> Den lyder som en fin løsning.
>> Er der ulemper ved at lade en Perl-script køre døgnet rundt i et år?
>
> Det kan jeg ikke forestille mig. jeg har selv flere kørende uden
> problemer (bare vær sikker på at de ikke løber løbsk)
>
> [snip]
>> Hvordan gøres dette?
>>
>> Jeg har googlet men kan tilsyneladende ikke finde de rette søgeord.
>
> jeg kan lige komme på 2 måde.
> 1) brug et modul der kan aflæse process listen og check for om dit
> script kører ider.
>
> 2) en "lock" fil som oprettes når scriptet startes, og slettes når
> de sluttes. Check for om filen findes - gør den, så terminer programmet.

Hvis to versjoner av scriptet startes samtidig, så kunne det hende at
lock-fila ble opprettet av den ene rett etter at den andre hadde funnet
ut at lock-fila ikke eksisterte.

Jeg vet ikke om dette er noe problem i praksis, men det kan være en god
idé å sikre seg mot det med å bruke flock() på lock-fila.

--
Vlad Hvis noe kan gå galt, så går det galt,
og på det værst tenkelige tidspunkt.
-- Murphys lov

Kjeld Flarup (03-04-2003)
Kommentar
Fra : Kjeld Flarup


Dato : 03-04-03 19:01

Vlad Tepes wrote:
> Hvis to versjoner av scriptet startes samtidig, så kunne det hende at
> lock-fila ble opprettet av den ene rett etter at den andre hadde funnet
> ut at lock-fila ikke eksisterte.

Hvis der kun startes een op af cron så bliver det ikke noget problem.

--
------------------------- Med Liberalistiske Hilsner --------------------------
Civilingeniør, Kjeld Flarup - Mit sind er mere åbent end min tegnebog
Ådalen 8, Mogenstrup, 7800 Skive, Tlf: 40 29 41 49, Fax: 96 95 74 48
Den ikke akademiske hjemmeside for liberalismen - www.liberalismen.dk


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

Månedens bedste
Årets bedste
Sidste års bedste