|
#1
|
|
|
|
|
Hallo,
Ik ben opzoek naar een programma dat een wachtrij voor het uitvoeren van een rekenprogramma beheerd. We hebben op het werk een stevige server waar verschillende mensen op rekenen. Op deze server staat een rekenprogramma waarvoor wij 1 licentie hebben. Nu willen ongeveer 5 collega's dit programma gebruiken. De sommen die gedaan worden duren tussen 1 uur en een paar dagen. Nu gaat er best wat rekentijd verloren omdat de sommen vaak 's nachts aflopen en we pas de volgende dag een nieuwe som kunnen starten. Om dit te verhelpen ben ik op zoek naar een programma waar verschillende gebruikers opdrachten in een wachtrij kunnen zetten en die in dan achter elkaar uitgevoerd worden. Helaas is atd niet echt bruikbaar. We weten niet hoelang een berekening precies gaat duren. De batch optie werkt ook niet, er worden ook andere berekeningen gedaan op de computer waardoor de load niet voldoende zakt om een nieuwe som te starten. Ik ben opzoek naar iets als atd/batch maar dat die dan start zodra de vorige som klaar is ongeacht de load. Met google kan ik niet echt iets vinden, waarschijnlijk de verkeerde zoek woorden. Alvast bedankt voor suggesties, Groet, Johan |
|
|
|
#2
|
|
|
|
|
Johan wrote:
[..] > Met google kan ik niet echt iets vinden, waarschijnlijk de verkeerde > zoek woorden. > > Alvast bedankt voor suggesties, > > Groet, > > Johan > Wil je sommige personen of sommen hogere prioriteit geven (boven in de lijst laten komen) of is iedereen gelijk ? Hoe roep je het programma aan ? Moet je veel command line parameters meegeven of een filenaam ? Kun je met ps | grep programmanaam zien of het al gestart is ? Draait het onder iedere gebruiken zijn eigen UID/homedirectory of is een algemene map waar input/output in komt? Of ik snap de vraag niet of het antwoord is zo voor de handliggend dat je eroverheen kijkt denk ik. Laat eens wat extra info weten svp. Gr, Edwin |
|
#3
|
|
|
|
|
Johan wrote:
[..] > verschillende gebruikers opdrachten in een wachtrij kunnen zetten en > die in dan achter elkaar uitgevoerd worden. > > Helaas is atd niet echt bruikbaar. We weten niet hoelang een > berekening precies gaat duren. De batch optie werkt ook niet, er > worden ook andere berekeningen gedaan op de computer waardoor de load > niet voldoende zakt om een nieuwe som te starten. > > Ik ben opzoek naar iets als atd/batch maar dat die dan start zodra de > vorige som klaar is ongeacht de load. Geen idee omtrent een pasklare oplossing, maar ik zou er zelf een ter plekke bedenken : 1. de gebruikers voegen hun commando toe aan een bestand : echo "commando" >> queue 2. een achtergrond proces leest deze commando's in volgorde en voert ze uit : while read COMMAND do $COMMAND & done < <queue> Misschien is een pipe beter, maar dat mag je zelf testen. |
|
#4
|
|
|
|
|
On Thu, 15 Oct 2009 21:16:16 +0200
Edwin van den Oetelaar <newsgroups> wrote: > Johan wrote: > > Wil je sommige personen of sommen hogere prioriteit geven (boven in > de lijst laten komen) of is iedereen gelijk ? Nee, gewoon op volgorde > Hoe roep je het programma aan ? Commandline opdracht, maar iedere som heeft andere opties op de opdracht regel > Moet je veel command line parameters meegeven of een filenaam ? Filename en parameters > Kun je met ps | grep programmanaam zien of het al gestart is ? Ja, ook als die door andere gebruiker gestart is > Draait het onder iedere gebruiken zijn eigen UID/homedirectory of is > een algemene map waar input/output in komt? Alle gebruikers hebben eigen UID/home directory. > Of ik snap de vraag niet of het antwoord is zo voor de handliggend > dat je eroverheen kijkt denk ik. Laat eens wat extra info weten svp. Ik hoop dat het voor de handliggend is, maar ik zie zo snel geen oplossing. |
|
#5
|
|
|
|
|
On Thu, 15 Oct 2009 21:21:24 +0200
Fred Mobach <fred> wrote: > Johan wrote: >> Geen idee omtrent een pasklare oplossing, maar ik zou er zelf een ter > plekke bedenken : > > 1. de gebruikers voegen hun commando toe aan een bestand : > echo "commando" >> queue > 2. een achtergrond proces leest deze commando's in volgorde en voert > ze uit : > while read COMMAND > do > $COMMAND & > done < <queue> > > Misschien is een pipe beter, maar dat mag je zelf testen. De gebruikers hebben geen schrijfrechten bij elkaar. Dezelfde wachtrij moet door verschillende gebruikers gebruikt worden. Dan moet dit achtergrond process de rechten hebben om elk nieuwe som als andere gebruiker te starten. Ik denk niet dat ik dat veilig krijg. Groet, Johan |
|
#6
|
|
|
|
|
Johan wrote:
> On Thu, 15 Oct 2009 21:16:16 +0200 > Edwin van den Oetelaar <newsgroups> wrote: > > Nee, gewoon op volgorde > > Commandline opdracht, maar iedere som heeft andere opties op de > opdracht regel > > Filename en parameters > > Ja, ook als die door andere gebruiker gestart is > > Alle gebruikers hebben eigen UID/home directory. >> Ik hoop dat het voor de handliggend is, maar ik zie zo snel geen > oplossing. > Het antwoord van Fred Mobach lijkt me best redelijk. Je zet alle sommen onder elkaar in een lijstje en voert dit lijstje uit. Een andere is dat je iedere gebruiker zijn eigen lijstje geeft en dan eerst kijkt of een ander proces al loopt voordat je zelf iets opstart. Het gebruik van een 'lockfile' zou ik aanbevelen. batch file bij iedere gebruiker : runme.sh (chmod +x op doen ;-) ) ----------------- #!/bin/sh # geen garanties, het werkt wel # er is natuurlijk een race tussen de verschillende gebruikers # er kan een commando gemist worden in theorie while read COMMAND ; do while [ -f /tmp/benbezig.lock ] ; do sleep 10 done echo "1" >/tmp/benbezig.lock $COMMAND rm /tmp/benbezig.lock sleep 1 done < "mijnqueue.bat" # lijst is op -------------- en dan een lijstje met acties : mijnqueue.bat ---------------- cat /etc/hosts date echo "winterklaas was here" ---------------- Werkt bij mij prima |
|
#7
|
|
|
|
|
Johan wrote:
>> Kun je met ps | grep programmanaam zien of het al gestart is ? > Ja, ook als die door andere gebruiker gestart is > Misschien kun je dan iedere minuut kijken of er nog 1 draaiende is?? jobs plaats je in een dir, je verplaatst/delete ze als ze gedaan zijn ... Op unix noemde dat vroeger batch systemen. Er waren ook commerciele beschikbaar... http://kb.iu.edu/data/aewo.html met deze op googel ben je even aan het lezen.. batch unix linux load balancing -- |
|
#8
|
|
|
|
|
On Thu, 15 Oct 2009 21:56:34 +0200
Edwin van den Oetelaar <newsgroups> wrote: [..] > # lijst is op > -------------- > > en dan een lijstje met acties : mijnqueue.bat > ---------------- > cat /etc/hosts > date > echo "winterklaas was here" > ---------------- > Werkt bij mij prima Bedankt, ik had nog niet aan die loc-file gedacht. Helaas is het vrij random welke gebruiker als eerst mag. Maar dit is waarschijnlijk wel werkbaar. Groet, Johan |
|
#9
|
|
|
|
|
On Thu, 15 Oct 2009 21:59:54 +0200
user <dag> wrote: > Johan wrote: >> Misschien kun je dan iedere minuut kijken of er nog 1 draaiende is?? > > jobs plaats je in een dir, je verplaatst/delete ze als ze gedaan > zijn ... >> Op unix noemde dat vroeger batch systemen. Er waren ook commerciele > beschikbaar... > [..] >> met deze op googel ben je even aan het lezen.. > batch unix linux load balancing >atd/batch is niet bruikbaar. Er zitten meerdere cpu's in de machine en er worden verschillende rekenenprogrammas gebruikt. Dus de load zegt niets of het programma al draait, dus batch werkt niet. at ook niet omdat we vooraf niet weten hoelang een berekening duur, zeker niet als een berekening van een andere collega loopt. Groet, Johan |
|
#10
|
|
|
|
|
On 2009-10-15, Johan <johan> wrote:
> On Thu, 15 Oct 2009 21:21:24 +0200 > Fred Mobach <fred> wrote: >> De gebruikers hebben geen schrijfrechten bij elkaar. Dezelfde wachtrij > moet door verschillende gebruikers gebruikt worden. Dan moet dit > achtergrond process de rechten hebben om elk nieuwe som als andere > gebruiker te starten. Ik denk niet dat ik dat veilig krijg. > > Groet, > > Johan > Misschien een queueing systeem gebruiken? Het is wel overkill voor 1 machine en het opzetten ervan is wel een klus, maar kijk eens naar torque (http://www.clusterresources.com/products/torque/). Op fedora 11 kun je dit zo installeren en het zal ook vast wel beschikbaar zijn voor andere distro's. En als je meerdere servers hebt kun je die ook makkelijk hiervoor inzetten. groet, Peter |
|
#11
|
|
|
|
|
Johan wrote:
> On Thu, 15 Oct 2009 21:21:24 +0200 > Fred Mobach <fred> wrote: >> De gebruikers hebben geen schrijfrechten bij elkaar. Dezelfde wachtrij > moet door verschillende gebruikers gebruikt worden. Dan moet dit > achtergrond process de rechten hebben om elk nieuwe som als andere > gebruiker te starten. Ik denk niet dat ik dat veilig krijg. OK, touch /tmp/queue chattr +a /tmp/queue chown nobody:nobody queue chmod o+w /tmp/queue (blijft onveilig) echo "<username> <command>" >> /tmp/queue en in de while loop su - <username> --command=<command> & |
|
#12
|
|
|
|
|
Peter van Hooft wrote:
> Misschien een queueing systeem gebruiken? Het is wel overkill voor 1 machine en > het opzetten ervan is wel een klus, maar kijk eens naar torque > ([..]). Op fedora 11 kun je dit zo > installeren en het zal ook vast wel beschikbaar zijn voor andere distro's. > En als je meerdere servers hebt kun je die ook makkelijk hiervoor inzetten. Zou het mogenlijk zijn om de commands die eigenlijk gedaan moeten worden naar een bestand te schrijven. e.g.: su - user1 -c programma -parameter xyz su - user2 -c programma -parameter abz #!/bin/bash #scrip + parameters PROGRAM=$@ USER=`whoami` echo "su - $USER -c /bin/programma $PROGRAM" >> /var/spool/programma/runfile" De user doet dan `script -parametere xyz` in plaats van vroeger `programma -parameter xyz` Daarna een script dat kijkt of er een regel in dat bestand staat. Indien dat het geval is, dan runt het die regel en haalt die regel er uit. Indien er niets in staat, dan doet het niets. #!/bin/bash FILE="/var/spool/programma/runfile" SIZE=`stat -c %s $FILE` if [ "$SIZE" -gt "0" ] then PROG=`head -n 1 $FILE` $PROG perl -pi -e '$_ = "" if ($. == 1);' $FILE else echo "Nothing to do" fi Die kun je dan in een crontab zetten en om bijvoorbeeld de 5 minuten laten lopen. Verder zijn er een aantal mogenlijkheden dat de gebruiker nog steeds het zelfde comando invoert. Je zal vermoedenlijk wel nog de nodige test moeten doen. Misschien heb je zelfs de mogenlijkheid om te berekenen hoe lang zaken gaan duren en dat ook als feedback teruggeven naar de gebruiker. houghi |
|
#13
|
|
|
|
|
Fred Mobach (fred) schreef:
> OK, > touch /tmp/queue > chattr +a /tmp/queue > chown nobody:nobody queue > chmod o+w /tmp/queue (blijft onveilig) > echo "<username> <command>" >> /tmp/queue > > en in de while loop > su - <username> --command=<command> & echo "root rm -rf /" >> /tmp/queue |
|
#14
|
|
|
|
|
On Fri, 16 Oct 2009 10:16:58 +0000 (UTC)
Martijn van Buul <pino> wrote: > Fred Mobach (fred) schreef: > > OK, > > touch /tmp/queue > > chattr +a /tmp/queue > > chown nobody:nobody queue > > chmod o+w /tmp/queue (blijft onveilig) > > echo "<username> <command>" >> /tmp/queue > > > > en in de while loop > > su - <username> --command=<command> & > > echo "root rm -rf /" >> /tmp/queue > Dat is dus het probleem wat ik heb met de script aanpak. De data op de server is vertrouwelijk, dus moet de oplossing wel veilig zijn. Daarom had ik gehoopt dat er een passend programma bestond. Groet, Johan |
|
#15
|
|
|
|
|
On Fri, 16 Oct 2009 13:24:24 +0200
Johan <johan> wrote: > > > en in de while loop > > > su - <username> --command=<command> & > > > > echo "root rm -rf /" >> /tmp/queue > > > Dat is dus het probleem wat ik heb met de script aanpak. De data op de > server is vertrouwelijk, dus moet de oplossing wel veilig zijn. Daarom > had ik gehoopt dat er een passend programma bestond. Afvangen: if [ `id -u` -eq 0 ] ; then echo -e "\nDat gaan we mooi niet doen...\n" exit 1 fi |
|
|
|
|
| Soortgelijke onderwerpen | |
| Hoe zinvol is een CUPS wachtrij? Hallo, Bij een klant heb ik veel problemen gehad met de snelheid van printen, of eigenlijk met de reaktietijd van OpenOffice op een printopdracht. Het gaat hier om Windows... |
|
| bestand staat in wachtrij Hallo, Als ik een bestand op een DVD-RW wil kopieren dat staat dat blijkbaar in een soort wachtrij tot je een of ander commando geeft om de bestanden effectief te... |
|
| emule wachtrij (excuses voor de Xpost, en het newbie-gehalte van de vraag). Ik heb een netwerkje thuis (ST570, met draadloos daaraan 2 PC's). Op 1 pc staat pas emule geinstalleerd, en de... |
|
| betanden in wachtrij voor cd Ik krijg steeds een melding dat er bestanden in de wachtrij staan om op cd te branden. Ik wil helemaal niets meer branden. Hoe kan ik deze melding verwijderen. Wie weet raad? |
|
|
Alle tijden zijn in GMT. De tijd is nu 12:14. | Privacy Policy
|