Re: ændre mode for en kørende kommando, eksempel rsync

From: Michael Kell Jensen (none@mkj--micrun.net.lh.bsd-dk.dk)
Date: Sat 15 May 2010 - 21:27:11 CEST


Date: Sat, 15 May 2010 21:27:11 +0200
From: Michael Kell Jensen <none@mkj--micrun.net.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: ændre mode for en kørende kommando, eksempel rsync

On 2010-05-14 04:18, Kasper Bonne wrote:
> 2010/5/13 Michael Kell Jensen<none@mkj--micrun.net.lh.bsd-dk.dk>:
>> Jeg har i det sidste stykke tid gået og tænkt over en feature jeg godt kunne
>> bruge til mange unix kommandoer.
>>
>> Foreksemepl vil jeg gerne kunne køre rsync med forskellige verbose niveauer
>> -v -vv -vvv?
>> Og når jeg så er tilfreds skifte med det jeg observer,
>> skifte til mode -q -> quiet, no output at all.
>> _uden_ at stoppe programmet.
>>
>> Er der nogen måde at gøre det på? eller er der nogen unix værktøjer i kender
>> til som understøtter sådan noget.
>>
>> wrap det i en form for script?, hvor jeg kan sende switches, jeg kan ikke
>> lige se nogen åbenlys måde at gøre det på?
>
> Som regel bliver 'command switches' jo fortolket når et program
> starter, og på baggrund af dem bliver forskellige variable sat til en
> passende værdi. Det vil være meget program-specifikt om du vil kunne
> ændre den måde et kørende program opfører sig på. Den eneste måde jeg
> kan se at det skulle kunne lade sig gøre (uden at ændre koden), er at
> skrive direkte til det kørende programs memory. Hvis du kan få ændret
> en variabel som bliver læst igen og igen og som påvirker programmets
> opførsel er det muligt at du kan slippe af sted med det.

Har du nogen links til noget om dette emne?

jeg kan vel kigge efter et offset fra programmets begyndelse.

Dette kunne måske være en måde at bygge extensions på til programmer der
ikke understøtter det i deres kilde kode.

Eller måske noget med at hente program argumenter "argv", som man ved
ligger et specifikt sted, (top stack?)
(måske ikke så portabelt :) )

Det kigger jeg lidt på, tak for inspirationen.

Jeg fandt lidt her, der måske kan bruges, specielt 1.13
http://www.steve.org.uk/Reference/Unix/faq_2.html

> Hvis jeg var dig ville jeg dog prøve en anden løsning. Jeg ville
> skrive en signal-handeler rutine som, når du sender et passende signal
> (f.eks. SIGINFO eller SIGUSR1/SIGUSR2), ændrer det du gerne vil have
> ændret. Det kræver dog at du er villig til at modificere kildekoden
> til programmet og at du kan finde et passende signal som ikke er i
> brug. Du kan sende et SIGINFO til et kørende program ved at trykke
> Ctrl+T, ellers kan signaler sendes til kørende programmer med kill(1).

Det lyder nogenlunde lige til. Det skulle ikke være for uoverskueligt at
udføre(på et simpelt program).

mic



This archive was generated by hypermail 2b30 : Mon 31 May 2010 - 23:00:02 CEST