Differences between current version and revision by previous author of JobControl.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 7 | Last edited on Thursday, August 16, 2007 2:54:13 pm | by BenStaz | |
Older page: | version 2 | Last edited on Wednesday, December 6, 2006 7:37:24 pm | by PerryLorier | Revert |
@@ -1,13 +1,51 @@
In Unix you can run "jobs", suspend them, run them in the background, or bring them to the foreground.
The commands for this are:
-;bg
''jobid
'':Moves
''jobid
'' into the background
-;fg
''jobid
'':Moves stopped, or backgrounded
''jobid
'' into the foreground
-;
kill %
''jobid
'':Send
a signal to a job
-;Control-Z
:Suspend
the currently running
job
-;jobs
:List all current jobs
.
+!jobs
+
+This command will list all of the active jobs.
+Some switches you may like to try include:
+
+*
''jobs -r
'' will display running jobs only.
+*
''jobs -s
'' will display stopped jobs only.
+
+!bg
+
+''bg <JOB_SPEC>'' moves the job
into the background.
+
+Note : if the job is currently in the foreground you will first have to suspend it using
''Ctrl-z
'' ([SIGTSTP])
+
+Note
: To start an application in the background append
''&
'' to the end of your command.
+
+*ping www.gooogle.co.nz &
+
+!fg
+
+''fg <JOB_SPEC>'' moves the stopped or backgrounded job
into the foreground.
+
+
+!
kill
+
+
''kill %<JOB_SPEC>
'' sends
a signal to a job.
+
+Note
: you can use use ''kill -l'' to list the possible signals you could send.
+
+!bg,fg and kill are not limited to jobids.
+
+We can also specify the start or part of
the job command.
+
+For example
: If a job command consisted of ''ping www
.google.co.nz'', then these commands are valid.
+
+*kill %ping
+*kill %?google
+*fg ping
+*bg ?goo
+
+These will work as long as you don't supply an ambiguous job_spec.
+Notice that, only kill requires the ''%'' so that it knows we are providing it with a JOB_SPEC rather than a process id.
+
!!How this works
Internally each command line (job) gets it's own ProcessGroup assigned to it by the shell when it creates the job using [setsid(2)]. While the command is running in the foreground it recieves any signals from the tty layer (such as [SIGTSTP], [SIGINT], [SIGQUIT], [SIGHUP] etc).