Ga naar inhoud


Text bestand tegelijkertijd openen door diverse scripts?


Con

Aanbevolen berichten

Voor de liefhebbers en/of kenners.

 

Ik heb een tekstbestand bestaande uit csv-achtige inhoud.

 

Hoe gedraagt zich dat bestand als dit bestand door

diverse (3 in dit geval) scripts op hetzelfde moment

wordt geopend om te lezen?

 

Tot nu toe liet ik de scripts achtereenvolgend uitvoeren om

eventuele conflicten te voorkomen maar ik kom in tijdnood

in mijn cronjob.

 

Nu heb ik het al getest met 2 scripts en dat ging in ieder geval

2 x goed maar dat zegt helemaal niets natuurlijk.

Ieder script zal maximaal 10 seconden gebruik maken van het

tekstbestand.

 

Ik wil graag weten of dit kan maar vooral of dit mag.

 

Iets meer info, het betreft Linux (uiteraard) en het gaat om 2

gnuplotscripts en 1 pythonscript welke het tekstbestand leest.

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites


ter verduidelijking,

Als ik met drie verschillende programma' s 1 en hetzelfde bestand op een plek open... dan mag dat

op windows apple of linux altijd

 

ik kan driemaal een mp3 bestand openen

ik kan meermaals een foto openen met verschillende toepassingen

txt bestanden of andere data

 

read, lezen kan dus altijd

write, schrijven is afhankelijk van de GID, userID en PID (procesid wie was eerst)

denk dat scripts en routines natuurlijk niet zomaar gaan schrijven als een ander proces aan de gang is welke de inhoud en tijd wijzigt

Running Up That Hill

Kate Bush

 

Link naar reactie
Delen op andere sites

Nee, het gaat inderdaad alleen maar om het lezen van een log-bestand.

 

Wordt dat bestand dan ook, in dit geval 3 keer, tegelijkertijd geopend?

Of geldt, wie het eerst komt, die het eerst leest? Hoe werkt dat?

 

Of word(t)(en) er wellicht een (meerdere) schaduw-bestand(en) gemaakt?

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

elk proces leest alle informatie uit een LOG bestand daar iedereen dus ook een specifiek proces gestart door iemand readonly is...

voor zover is dat dus door de methode van mounten en de toegepaste standaard opties altijd mogelijk

wijkt men af van de mount opties kunnen verschillen ontstaan in gebruik van een bestand die niet zo eenduidig te verklaren zijn.

de manpages leveren inzake Linux meestal wel duidelijkheid indien men afwijken "wil"

 

dat leest slecht en is te ingewikkelt

maar op je vraag

 

Of word(t)(en) er wellicht een (meerdere) schaduw-bestand(en) gemaakt?

Ja in het geheugen en CPU kunnen per proces gelijke datasets meervoudig voorkomen, zijn allemaal gescheiden door wie wat waar en wanneer.

aangepast door Tonskidutch

Running Up That Hill

Kate Bush

 

Link naar reactie
Delen op andere sites

Dank. Helder (dat tweede), dan ga ik zonder zorgen lekker "multi-readen" met een triootje.  :grin:

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Als je bang bent dat je problemen krijgt met het gelijktijdig openen, kan je een tweetal dingen doen;

- Een "semaphore" file aanmaken welke gebruikt wordt om aan te geven dat een ander script bezig is

- Als je zeker weet dat het max 10 seconden duurt, dan gebruik je het "sleep" commando in je bash script... (Of iets vergelijkbaars in python)

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Als je bang bent dat je problemen krijgt met het gelijktijdig openen, kan je een tweetal dingen doen;

- Een "semaphore" file aanmaken welke gebruikt wordt om aan te geven dat een ander script bezig is

- Als je zeker weet dat het max 10 seconden duurt, dan gebruik je het "sleep" commando in je bash script... (Of iets vergelijkbaars in python)

Ik heb in het slechtste geval 10 scripts in één minuut wat nu samengevat is in een cronjob.

Doordat je dus een bestand simultaan mag aanroepen om alleen te lezen is mijn grootste

zorg verdwenen. Ik heb er zelfs een diagram voor gemaakt voor het overzicht wat er nu

precies en vooral wanneer moet gebeuren. Om een idee te hebben hoe ik heb zitten stoeien

het diagram en daarna de cronjob, middernacht is het meest spannende moment, de sleeps

had ik al ingebouwd;

post-36489-0-21494300-1416428028_thumb.jpg

# Iedere minuut
* * * * *  sleep 00; python      log.py
* * * * *  sleep 15; gnuplot     cir.plt
* * * * *  sleep 15; gnuplot     uur.plt

# Ieder uur
@hourly    sleep 15; python      m-u.py
@hourly    sleep 20; gnuplot     dag.plt
@hourly    sleep 40; python   ftpuur.py

# Iedere nacht
0 0 * * *  sleep 20; python      u-d.py
0 0 * * *  sleep 25; gnuplot     mnd.plt
0 0 * * *  sleep 40; python filecopy.py
0 0 * * *  sleep 50; python   ftpmnd.py
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Als je bang bent dat je data inconsistent wordt, dan kan je ook gewoon een aantal kopieen maken van het logbestand, en deze voor de verschillende scripts gebruiken. Dan kan je aan het einde van het script de logfile gewoon weggooien...

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Niet nodig, ik draai nu al enkele dagen (24/7) en het werkt perfect.

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
×
×
  • Nieuwe aanmaken...