ysnky
asked on
redirect thread dump to a new file
hi,
how can i send kill -3 PID result to a new file. it goes my nohup.file and it is difficult to trace it.
thanks in advance...
how can i send kill -3 PID result to a new file. it goes my nohup.file and it is difficult to trace it.
thanks in advance...
kill -3 PID > /path-to/myfile 2>&1
ysnky, do you mean your process redirects it's output to nohup.out when you send SIGQUIT to it?
I see no way to redirect output then. Output is already redirected to 'nohup.out' (which is probably done 'nohup' command).
Or you just need to redirect the output of 'kill' command? In this case I agree with yuzh.
Or provide more details of what do you want.
I see no way to redirect output then. Output is already redirected to 'nohup.out' (which is probably done 'nohup' command).
Or you just need to redirect the output of 'kill' command? In this case I agree with yuzh.
Or provide more details of what do you want.
ASKER
> Output is already redirected to 'nohup.out' (which is probably done 'nohup' command).
yes my application is started with nohup and my all outputs are sent to nohup.out. i dont would like to change it, i would like that while it is sending out to nohup.out, to send thread dump to another file bacause it sends nohup.out default and it is very difficult to trace it.
is it possbile?
yes my application is started with nohup and my all outputs are sent to nohup.out. i dont would like to change it, i would like that while it is sending out to nohup.out, to send thread dump to another file bacause it sends nohup.out default and it is very difficult to trace it.
is it possbile?
So, your application is mulithreaded or forks childs.
They all write to the same file descriptor (I mean stdout and stderr, that goes to the same nohup.out). And there is no way to split that output unless you rewrite that application.
If you start different applications, you may direct output to different files.
You may get separate output of all children with this command:
strace -ff -o nohup -t -e trace=write -e write=1,2 nohup /path/to/your/program
you will have separate files for each child, like 'nohup.$pid'. The output in 'nohup.out' still remains the same while in 'nohup' and 'nohup.$pid' you will get the output in hexdump and in ascii format.
They all write to the same file descriptor (I mean stdout and stderr, that goes to the same nohup.out). And there is no way to split that output unless you rewrite that application.
If you start different applications, you may direct output to different files.
You may get separate output of all children with this command:
strace -ff -o nohup -t -e trace=write -e write=1,2 nohup /path/to/your/program
you will have separate files for each child, like 'nohup.$pid'. The output in 'nohup.out' still remains the same while in 'nohup' and 'nohup.$pid' you will get the output in hexdump and in ascii format.
ASKER
in this case it is inpossible to redirect the thread dump to a new file while because of i started with nohup and i directed all outputs to nohup.out?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
OS: sun solaris and HP Unix
just a user-level thread withing the same process
thanks guys...
just a user-level thread withing the same process
thanks guys...