Live data from Hacker News

Running bash commands in the background properly

felixmilea.com

1–10 of 10 posts

Re: Running bash commands in the background properly

#3
The random shell output from "background" apps never bothered me that much ;-) Crunchbang you can just press F2 and get auto-complete and launch commands with no shell output. Ubuntu has something similar. If you have terminator, just split the pane if you need a fresh one, or drag the terminal to another workspace and it's out of the way. Also tmux has ^bd to "detach" I think.

Re: Running bash commands in the background properly

#5
post #4

I found 'screen' to be pretty handy for running scripts in the background. Then you can also reattach later to look at stdout as it's running.

Screen or tmux. I tend to prefer tmux, but the both have this ability. I'm actuality surprised that there isn't a more elegant choice other than redirecting stdout and stderr to /dev/null where you can fork jobs to a background and reattach later to see the tty. Is there a shell that has a job queue that can be accessed from any number of shells?

Re: Running bash commands in the background properly

#6
post #4

I found 'screen' to be pretty handy for running scripts in the background. Then you can also reattach later to look at stdout as it's running.

Screen or tmux. I tend to prefer tmux, but the both have this ability. I'm actuality surprised that there isn't a more elegant choice other than redirecting stdout and stderr to /dev/null where you can fork jobs to a background and reattach later to see the tty. Is there a shell that has a job queue that can be accessed from any number of shells?

There's this for attaching a running program to your terminal when it is not started in screen: https://github.com/nelhage/reptyr

Re: Running bash commands in the background properly

#7
Understanding whether background jobs get killed (via SIGHUP) or orphaned is not obvious without reading about the huponexit shopt. I've found some recent distros to not enable huponexit by default for login shells, and so this isn't always an issue.

More importantly, understanding how your jobs behave when your SSH session is killed can be a huge timesaver.

Re: Running bash commands in the background properly

#10
post #9

Wouldn't it be better to simply do "$@" "${FD[@]" & And also remember to alias ds='ds ' to enable alias expansion.

would you mind explaining why that might be better?

It avoids a call to eval, which is always good. It's also a bit simpler.