Toon posts:

[Bash] programma na aantal minuten stoppen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een scriptje waarin ik een programma op een aantal inputfiles wil testen. Sommige inputfiles laten het programma te lang rekenen en daar wil ik niet op wachten. Ik wil dus het programma na bijv. 15 minuten laten stoppen, maar ik vind het lastig om uit te vinden hoe dat moet. Hoe kan je een programma slechts een maximaal aantal minuten laten lopen?

Verwijderd

crontabs toch??

  • bakkerl
  • Registratie: Augustus 2001
  • Laatst online: 20-01 20:59

bakkerl

Let there be light.

eerste regel in je scriptje:
at +15m `kill -9 <mypid>`

(maar dan in de juiste syntax :) )

[ Voor 32% gewijzigd door bakkerl op 21-06-2006 23:14 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

bakkerl schreef op woensdag 21 juni 2006 @ 23:13:
eerste regel in je scriptje:
at +15m `kill -9 <mypid>`

(maar dan in de juiste syntax :) )
om nu direct een SIGKILL te sturen vind ik een beetje overdreven, beter is het om gewoon SIGTERM te doen om de applicatie de kans te geven zichzelf netjes af te sluiten, als het daarna nog steeds draait zou je kunnen gaan denken aan SIGKILL imo

Verwijderd

Topicstarter
Klinkt goed .. ware het niet dat er geen 'at' bij Slackware zit? Ik heb het commando in ieder geval niet en kan het ook niet vinden op de package browser. Weet iemand waar dat bij zit? (ja, ik heb al gezocht, maar probeer maar 's 'at' op google in te voeren :) )

  • Insanergy
  • Registratie: Juli 2001
  • Laatst online: 29-11-2025
Misschien kan je iets met een until loopje doen?


code:
1
2
3
4
5
6
         #!/bin/bash 
         COUNTER=20
         until [  $COUNTER -lt 10 ]; do
             echo COUNTER $COUNTER
             let COUNTER-=1
         done

But I thought YOU did the backups...


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op donderdag 22 juni 2006 @ 21:35:
Klinkt goed .. ware het niet dat er geen 'at' bij Slackware zit? Ik heb het commando in ieder geval niet en kan het ook niet vinden op de package browser. Weet iemand waar dat bij zit? (ja, ik heb al gezocht, maar probeer maar 's 'at' op google in te voeren :) )
Mijn eerste hit op Google
Insanergy schreef op donderdag 22 juni 2006 @ 22:05:
Misschien kan je iets met een until loopje doen?

code:
1
2
3
4
5
6
         #!/bin/bash 
         COUNTER=20
         until [  $COUNTER -lt 10 ]; do
             echo COUNTER $COUNTER
             let COUNTER-=1
         done
Daarmee kun je dus geen draaiend commando onderbreken tenzij je iets dergelijks ernaast gaat spawnen; maar dan is `at` toch richting een beter oplossing ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Krijg nou wat 8)7 Nou ja, bedankt iig! :)

[ Voor 3% gewijzigd door Verwijderd op 22-06-2006 22:27 ]


  • laurencevde
  • Registratie: November 2001
  • Laatst online: 02-10-2025
iets als dit? ik ben er alleen nog niet uit hoe je dat scriptje zou moeten killen :)
<scriptje>&
sleep 15
kill <scriptje>

Have a taste of freedom. It is sometimes a bitter pill. To me though, this is the sweetness of the GPL


Verwijderd

Topicstarter
ik heb 't nu zo gedaan:
code:
1
2
3
4
5
6
7
8
for i in `ls *.input`; do
    at now +15 minutes -f inputfile
    ./program1 x
    at now +15 minutes -f inputfile
    ./program2 x
    at now +15 minutes -f inputfile
    ./program3 x
done


In die inputfile staat `pkill program`, en zo werkt 't! Bedankt!
Pagina: 1