Tmux, how to prevent broken pipe

sshtmux

I'm new to ssh and tmux. I want to run a rake task on a remote server via ssh but I want to shutdown my computer and want the task continue running on the server.
So I discovered tmux with seems to do that, but last night I got an "write error, broken pipe" after i reattached the tmux session. My internet home internet is very instable, so i may got a new IP, is that a problem?
So, how can I prevent this?

Best Answer

As I understand you, you want to leave a program running on a server and the program should run within tmux. To make this work you have to run tmux on the server.

Step-wise

client$ ssh server
server$ tmux
server$ program

[detach from tmux]

server$ exit
client$

To reattach you can do:

client$ ssh server
server$ tmux attach

In one line

client$ ssh -t server tmux new program

[detach]

If you add -d switch to new the tmux session will not attach, but run in the background. Something like this:

client$ ssh -qt server tmux new -d "'program'"

Note that you need to double quote the command if it contains whitespace.

Reattach with:

ssh -t server tmux attach