Hi, yestarday a send  a little program that launch ( fork) a process anf
before send a SINGINT signal( ctrl+c). I found that if the child has other
child, it doesn't die, because only the first child process receives the
signal. 


I don’t know if there is a fast way to kill a process with all his Childs,
or if i need to check the process tree first and then send the signal to the
list. 

I know there is a signal that kill all the group, but  if you have this
program running within a crontab may be all the cron task would die and not
only the process that ktime start.

I update the files in my website if someone wants to check it:
 http://kbradero.neuroaio.biz/gnu/ktime/ktime.c (source code online)
 http://kbradero.neuroaio.biz/gnu/ktime/solaris/ binary

 
(Sorry for my English I know is poor)



-----Original Message-----
From: Brendan Gregg - Sun Microsystems [mailto:[EMAIL PROTECTED] 
Sent: Miércoles, 14 de Noviembre de 2007 03:48 p.m.
To: jorge gmail
Cc: [email protected]
Subject: Re: [dtrace-discuss] automate DtraceToolkit scripts with ktime

G'Fay Folks,

On Wed, Nov 14, 2007 at 03:10:05PM -0600, jorge gmail wrote:
>  
> 
> Hi all,  i write a little program  that could be useful if you have
> DtraceToolkit. Almost all scripts wait until you press ctrl+c key, but
> 
> If want to automate this task this is not possible because you need to
stay
> in front of your terminal.

Sorry, I haven't documented this in the DTraceToolkit yet (it should be
under
Notes/ALLautomation.txt), and I apologize, but there is an easy way to
automate most of them.  For example: 

        # ./mmapfiles.d 
        Tracing... Hit Ctrl-C to end.
        ^C

Lets say I wanted that to run for 10 seconds only; since it is a .d script,
expressions can be added to the command line:

        # ./mmapfiles.d -n 'tick-10sec { exit(0); }'
        Tracing... Hit Ctrl-C to end.
        MMAPS CMD              PATHNAME
            1 date             /var/ld/ld.config
            1 ls               /var/ld/ld.config
            3 date             /lib/libc.so.1
            3 ls               /lib/libavl.so.1
            3 ls               /lib/libc.so.1
            3 ls               /lib/libsec.so.1

Now it runs for 10 seconds.  Usually.  The profile:::tick-10sec probe can
hook onto a pre-existing enabling of profile:::tick-10sec, if someone
else was running it on the same system, meaning that it could exit much
sooner than 10 seconds.  This could be improved using:

        # ./mmapfiles.d -n 'tick-1sec /++i == 10/ { exit(0); }'
        Tracing... Hit Ctrl-C to end.
        MMAPS CMD              PATHNAME
            1 date             /var/ld/ld.config
            3 date             /lib/libc.so.1

Now it will be much closer to 10 seconds (between 9 and 10).  It could
user tick-10hz to get within 9.9 and 10.0, if needed.

Some scripts in the DTraceToolkit are wrapped in Perl or shell, and don't
have the .d extension, and can't use this trick.  Some of those have
an interval and count as options, which can be used instead.  That leaves
several scripts with no way of automating the time; which shouldn't take
me too long to fix for the next version of the toolkit (it's already on
my todo list).

In the meantime, if you have a script that isn't *.d, that doesn't
provide interval and count, then you can either edit the script to add
that functionality, or use Ktime.

> Ktime launch the program passed as parameter and wait <time>  ( in
seconds)
> until send  a ctr+c signal ( SIGINT) to the child process.
> 
> http://kbradero.neuroaio.biz/gnu/ktime/ktime.c  ( source code  online )
> 
> http://kbradero.neuroaio.biz/gnu/ktime/solaris/  binary 
> 
> Examples :
> 
> ./ktime shortlived.d 20 
> 
>  
> Syntaxis:
> 
> ./ktime <program> <time>
> 
[...]

Cool; there have certainly been times in the past where Ktime would have
been handy, and it can still serve a purpose for some of the toolkit
scripts.

thanks,

Brendan

-- 
Brendan
[CA, USA]

_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to