introduction to unix – cs 21 lecture 10. lecture overview midterm questions jobs and processes...
TRANSCRIPT
Introduction to Unix – CS 21
Lecture 10
Lecture Overview Midterm questions Jobs and processes description The foreground and background Controlling jobs
Midterm Results Average: ~70, high 91.5 Problem 1 Problem 14 Problem 22 Problem 26 Problem 27 Problem 34
Sequential Execution Versus Parallel Execution Sequential
Happens one after another Example
I must walk to my car and then I can drive home
Parallel Happens at the same time Example
I can watch TV and cook dinner at the same time
Multitasking Environment Unix inherently allows parallel
execution You’ve seen this with multiple
terminals Multiple processes can be run from
the same terminal at the same time
Jobs = Processes = Programs Process
How the Operating System (Unix) refers to a running program
Job How the shell views running programs
started from that shell One job is one complete “Unix sentence” or
command line task Both are simply different names for the
programs you run
Process ID (PID) and Control Number Process ID
The Unix operating system kernel assigns a unique number to each running program
PID Control Number
The shell assigns a unique number to each command line run from that shell
Job ID
The Foreground Foreground
Everything we’ve run so far has been in the foreground
One command line at a time The program that has control of the
terminal No command line will appear until the
task is finished
Foreground Example
Before
After
The Background Tasks that don’t need the terminal
can be run in the background These tasks can run while you are
performing other tasks The command line will pop up
immediately and you can do other tasks
Why Is This Useful? Some tasks take a long time to
finish Doesn’t make sense to just sit
around and wait Sometimes you only have one
terminal (i.e. you are remotely connected) and you want to be able to do more than one task
Running Jobs In The Background Place an & at the end of the
command line Example:
sort testFile > sortedTestFile &
Background Example
Background Jobs And stdout When something is run in the
background, it still has access to stdout Programs can still write to the terminal
window Could be confusing as it will intermingle
with other output Suggestion:
Try to use output redirection when running jobs in the background
Output Problem Example
Running Multiple Processes Sequentially
ls ; more *.txt ; cd Parallel
ls & cat testFile & grep “pattern” testFile
Examples
Sequential
Parallel
Seeing What Jobs Are Running: The “jobs” command Standard usage: jobs With no arguments it simply prints
out a list of all jobs that are running in the background of that shell
Gives the control number (job id) and the command line running
Jobs Example
Process States Runnable (running) Suspended (stopped) Waiting (Sleeping) Zombie (defunct)
When Jobs In The Background Finish
Suspending Jobs If you run a program in the
foreground, you can reclaim the command line and suspend that running task
Ctrl-z The job will sit there and wait until
you start it again not doing anything
Suspending Jobs Example
Stopped Jobs Some jobs are automatically stopped or
suspended if run in the background Example: emacs
These are usually dependant on user input and terminal control and can’t really do much in the background
In order to get these programs running again, they need to be switched to the foreground
Switching Jobs To The Foreground: “fg” Usage: fg %NUM
Example: fg %2 The number specified here is the
control number, NOT the Process ID The number listed by the jobs command
fg without any parameters takes the most recent task (listed with a + in the jobs command)
fg Example
Switching Suspended Jobs To The Background: “bg” Once a job has been suspended or
stopped, it will not do any work If that job is switched to the
background, it can continue on its way Usage: bg %NUM
Example: bg %1 Again, bg without any arguments moves
the most recent task into the background
bg Example
The ps Command “Processor status” Displays currently running processes System V versus BSD
This command is probably the most different basic command between the two divisions of Unix
All the flags and all the output look different
“ps” Example
Flag Combination To Know ps aux
a All with a controlling tty
u User friendly format
x All processes without a controlling tty
“ps aux” Example
The “top” Command Provides up to the second
information on what is currently running
Only shows the processes that are taking up the most CPU time The processes that are working the
hardest The processes that are causing your
computer to run slowly…
Example Of “top”
Process Priority Each process has a priority
Sense of urgency Which process should get execution
time first A number from –20 to 19
Just to be confusing, -20 is the highest priority and 19 is the lowest
Adjusting Priority: The “nice” Command Usage: nice –n NUM COMMAND Will run COMMAND with priority
NUM Allows you to specify which
programs are really important and which are relatively unimportant
Our system will only allow you to downgrade your priority
Piping Creates Many Processes sort unsortedFile | uniq | wc Creates three processes in parallel
each with a unique PID Only creates one job
Piping Example
Terminating Rogue Jobs Just suspending the job isn’t
enough, sometimes programs don’t do what you want them to and need to be terminated
When run in the foreground, Ctrl-c will terminate a job, but what about the background?
The kill Command Usage: kill [OPTION] PID
OPTION is usually –NUM Example: kill –11 1294
Will send a signal to a process running
By default, sends the termination signal (the same as Ctrl-c)
Example Of kill
Signals And What They Mean kill sends a signal to a process A signal can be thought of as a
predetermined message Each number is a different
message
Table Of Signals
Signal Name Number Description
SIGHUP 1 Hang up
SIGINT 2 Interrupt
SIGQUIT 3 Quit
SIGILL 4 Illegal Instruction
SIGKILL 9 Kill Signal
SIGSEGV 11 Segmentation Fault
SIGPIPE 13 Broken Pipe
SIGTERM 15 Terminate
Handy Shortcut For Kill You can use the %NUM notation
that we used with fg and bg to refer to processes as jobs
Example: kill %4
Extreme kill Usage When all else fails, use the –9
option Example:
kill –9 2364 -9 is the end all of signals
If this doesn’t end your program, nothing will
The nohup Command Usage: nohup COMMAND Run COMMAND but ignore hang up
signals With this command, you can
continue to run programs even after you log out
Next Time Shell Programming Homework Assignment #2