Jeg sidder med et lidt irriterende problem. Jeg skal bruge et eller andet der enten kan begrænse hvor længe en process må køre, eller noget der kan dræbe processer med [navn] som har kørt længere end [tid] (en killall der er begrænset til at dræbe processer der er ældre end [tid])
Den første løsning er nok den pæneste, men kan ikke finde noget til det :o(
Håber der er nogle der har nogle tips, Martin Kruse Jensen
Hvorfor skal du bruge en sådan funktion? Jeg er sikker på at det er rimeligt nemt at scripte det (vel at mærke funktion 2). Hvor kendt er du i Linux miljøet?
Okay. Det her kan ikke komme bag på dig, du skal læse MAN sider :) kender du top? Tror nok at den kan vise dig hvor gammel en proces er. :) Og der er en funktion i top der gør at den afslutter øjeblikkeligt. Men starter lige min egen linux boks.. :)
Okay.. Jeg har fundet ud af dette: top -n 1 |grep procesnavn |cut -c 56-64 returnerer tiden den har kørt i. Man må så rimeligt nemt kunne finde ud af resten via et shell script. Dog er der lige nogle problemer med scriptet mht top. Tror jeg ;)
Og her er løsningen på mit "top" problem :) top skal startes sådan: "top -b -n 1" -b får den til at returnere alle processor, og -n får den til at køre 1 gang.
Så må en anden finde en løsning på at sammenligne en tid med denne tid. :) Hvis du ikke får et tal ud, så eksperimenter med cut -c aa-bb, aa er det antal inde i strengen den starter med at returnere tal, og bb er det inde i strengen den stopper. :)
if [ "$PTIMEA" -gt "$MIN" ] ; then ##pkill proces-navn echo "hej hej" else echo "nej den gik ikke" fi
echo $PTIMEA
Det tjekker om firefox er ældre end 16 minutter, men tjekker IKKE for om der kører flere firefox'er eller om hvor mange timer firefox har kørt. :) På samme måde som jeg tjekker på minutter kan man tjekke på timer. :) Håber at det har hjulpet dig lidt på vej. Og jeg er selv ret ny til scripting så er der en fejl så skriv endelig :)
Okay. For at dræbe en process efter eks 10 minutter kan dette scrip bruges (Det er lidt mere simpelt end det andet, samt det andet bruger også til min gru CPU-tid :S): #!/bin/bash procesnavn sleep 600 & pkill proces
Både ja og nej. Svarene er fyldestgørende, men der er lige en detalje jeg glemte at nævne. Jeg kan nemlig ikke sende jobbet "til baggrunden" da jeg skal bruge outputtet. Hvis jeg havde husket det, så ville zypher212's svar være kanon. Så hvis du lige opretter et svar zypher, så får du point...
Okay, har fundet denne måde, men den er hverken pæn eller sikker... :) Desuden er det nødvendigt at PID bliver registreret af ps i den rækkefølge de er startet, dvs den yngste nederst.
Jeg har testet koden ved at starte en masse aterm'er og puttet kill $PID bag i koden. Den dræber dem i modsat rækkefølge af hvordan de er startet, så det virker da nogenlunde :) Skriv endelig hvis der er problemer.. .:)
Heysa igen - Tror det her spørgsmål har været offer for et skift af E-mail adresse, så derfor jeg ikke har reageret. Det må du undskylde zypher212, men den løsning har sandsynligvis virket, så opret lige et svar, så får du point
Må indrømme at det var nysgerrigheden for om det virkede mere end de points der drev det... Anyway, så har jeg fundet ud af nu, at det ikke virker. PID værdierne er starter tilfældigt hvorfor dette nummer ikke ville virke.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.