Skip to content

@zaius /

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
How to redirect a running process output to a file and log out
touch /tmp/stdout
touch /tmp/stderr
gdb -p $!
# In GDB
p dup2(open("/tmp/stdout", 1), 1)
p dup2(open("/tmp/stderr", 1), 2)
# Back in shell

I've not seen it done quite like this before. I like it!

It might be a bit cleaner with something like nohup $you_command_and_arguments_here 2>/tmp/stderr 1>/tmp/stdout to avoid the overhead of all the ptrace's that go on in gdb. Also, disown's implementation is defined to be shell-specific (in other words, do what works for your shell), whereas nohup uses system-level commands to abandon it's parent, so you are less likely to have strange side-effects if you try it on a non-bash shell.


Yeah it's definitely cleaner to do it that way, if you're organized :) I would make it even a simpler and just run it in screen or tmux. Though I know I regularly start long-running tasks before realizing how long they are going to take, so this is a quick hack to get around it.


Thomas, I think you missed the point of the gist. This makes sense if you have a process already running and later realize you need to disown it without losing its output. I for one run into this problem often and I really like this solution.


This was linked on Hacker News and in the comments there julian37 pointed out that someone created a bash script to do this called "Dupx".

Edit: And of course, thank you to bringing this tool to my attention. Very useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.