

Do You Understand Job Control in Bash? - symkat
http://symkat.com/72/understanding-job-control-in-bash/

======
mcantor

        disown
     	
        disown [-ar] [-h] [jobspec ...]
    
        Without options, each jobspec is removed from the table of active jobs.
        If the `-h' option is given, the job is not removed from the table,
        but is marked so that SIGHUP is not sent to the job if the shell receives
        a SIGHUP. If jobspec is not present, and neither the `-a' nor `-r'
        option is supplied, the current job is used. If no jobspec is
        supplied, the `-a' option means to remove or mark all jobs; the `-r'
        option without a jobspec argument restricts operation to running jobs.
    

The important part:

That means...

    
    
        $ ./some_really_long_process
        (crud... I forgot to open GNU Screen first!)
        ^Z
        [1]+ Stopped
        $ bg
        [1]+ ./some_really_long_process &
        $ disown
        $ pgrep some_really_long_process
        12349
        $ logout
    

Now, log in again...

    
    
        $ pgrep some_really_long_process
        12349
    

I do not know of a way to "reclaim" a disowned process, though.

~~~
nodata
> I do not know of a way to "reclaim" a disowned process, though.

<http://caca.zoy.org/wiki/neercs>

Maybe someone can rip out the relevant parts and create "reattach" and get it
in coreutils :)

~~~
imurray
I'll have to try this.

I have tried <http://pasky.or.cz/~pasky/dev/retty/> before, with limited
success. It would reattach a terminal running vim, but not Matlab, and was
generally a bit flakey.

EDIT: I have now tried neercs. Like retty, vim can be stolen but attempting to
steal zsh shell or Matlab sessions causes crashes.

I was once told VMS used to have decent native support for reattaching
terminals? It's frustrating that we don't have this ability (at least not
seemlessly) now.

There was a project to make screen easier to use, integrating it with gnome-
terminal: [http://monia.wordpress.com/2006/08/31/integrating-gnome-
term...](http://monia.wordpress.com/2006/08/31/integrating-gnome-terminal-and-
screen/) but the patches were never accepted.

------
js2
The title of the blog post is "Understanding Job Control In Bash" -- why not
submit it here under that same title?

------
mooism2
Why would I want to use job control when I can use screen instead?

~~~
Altreus
Why use the command line at all when you can use a GUI?

Understanding how your system works is a different level from choosing the
tools in the first place.

~~~
loire280
It depends on what you do, I suppose. If your work doesn't have a large
command-line component, using the command line might be disruptive.

A large part of my job involves working with remote Linux servers, so I chose
to invest time learning Linux command line tools and vim. Now I'm more
productive in a terminal than in a GUI environment. I use common tools that
are installed by default on Linux/Unix/OSX, so I can sit down anywhere and do
my work, or SSH directly into my machine and have my exact work environment
securely and without latency.

~~~
jacquesm
A command line is a poor mans gui.

A gui is a poor mans command line.

Whichever I'm using there are always aspects of the work that you could do
better with the other.

~~~
bingaman
Give me an example of something that you could do better with a gui. Just
curious.

~~~
johkra
Selecting a number of unrelated items from a list. Example: You have a folder
with music files and want to select some to copy onto your portable music
player. It's easier to click on the items to select them than typing all the
names, even with file name completion.

------
konad
What I don't understand is why it bloats the shell instead of just using the
OS' tools.

    
    
        # kill -STOP $pid
        # kill -CONT $pid
    

in Plan9 we do: echo stop > /proc/$pid/note

When they copied the /proc file system into Linux they did a cack handed
version (as expected) - "by amateurs, for amateurs" as Dave Presotto put it.

<http://plan9.bell-labs.com/magic/man2html/3/proc>

