Ik probeer een klein scriptje in Bash te schrijven dat niets anders doet dan een ander script draaien en dan de prioriteit (de nice-waarde) van dat script te verhogen naar 0.
Het andere script laten starten werkt prima, maar ik zit vast bij het verhogen van de nice waarde.
Via ps krijg ik een proceslijst, daaruit filter ik met grep de juiste lijn (en in die lijn bevind zich de procesID die ik nodig heb om een het commando renice te gebruiken).
Maar het probleem is dat dit programma met threads werkt, en dat er 4 threads worden opgestart. Er moet er maar één een hogere prioriteit krijgen toegekend en deze threads dragen allemaal precies dezelfde naam.
Het grep-commando geeft dus 4 lijnen terug en het is steeds de derde opgestarte thread (die ook derdes staat in het resultaat van grep) dat ik moet verhogen.
Maar hoe krijg ik die derde lijn vanboven?
Via het cut-commando kan ik de procesID er uit knippen maar dat werkt niet over meerdere lijnen blijkbaar. Ik kan die methode dus niet uitleggen dat hij naar de derde lijn moet kijken.
Er bestaat ook een sort functie maar die kan ik niet laten sorteren op het veld dat ik wil. Sorteren op ProcesID zorgt er namelijk voor dat de lijn steeds derdes staat en het is de processor-tijd waarop ik wil sorteren. Die staat derdes in de output op een lijn en de thread die ik van prioriteit wil verhogen heeft steeds de hoogste processortijd.
Heeft iemand nog een idee om me mee verder te helpen?
EDIT: Overigens nog een klein probleem. Het script dat opgestart wordt is folding@home, maar dit geeft output naar het scherm, en dit verschijnt in de terminal. Het script zelf heeft geen optie om output uit te schakelen, kan ik dan in bash zeggen dat hij dit niet mag tonen?