5 UNIX Processes

32
5 UNIX Processes

description

5 UNIX Processes. Introduction. Processes How to list them How to terminate them Process priorities Scheduling jobs Signals. Processes. Every time you run a command under UNIX it creates a process A process is an instance of a running program - PowerPoint PPT Presentation

Transcript of 5 UNIX Processes

Page 1: 5 UNIX Processes

5 UNIX Processes

Page 2: 5 UNIX Processes

Introduction

Processes How to list them How to terminate them Process priorities Scheduling jobs

Signals

Page 3: 5 UNIX Processes

Processes

Every time you run a command under UNIX it creates a process

A process is an instance of a running program

A program and process are different things. wc is a program; each time you run the program wc, that creates a new process.

A process runs until it has finished or is killed

Page 4: 5 UNIX Processes

Processes (2)

Every process has a number assigned to it called a process–ID or PID.

All the processes running on a UNIX machine are scheduled a certain amount of time on the CPU. The more that are running, the longer it will take for any one to finish

Page 5: 5 UNIX Processes

Listing Processes

ps

PID TTY TIME CMD 4073 pts/23 00:00:00 bash16007 pts/23 00:00:00 ps

ps can be given different options to, e.g. list all processes on system, show the user that owns the process, etc.

Page 6: 5 UNIX Processes

Child and Parent Processes

Any process can create another process

That process is then a parent process of the newly created child process

Use the pstree command to view relationships between parent and child processes (the process tree)

Page 7: 5 UNIX Processes

pstree[zlizmj@unnc-cslinux ~]$ pstree -p zuczpdgconfd-2(10782)

kdeinit(10733)-+-artsd(10752) |-emacs(10779)---aspell(27099) |-kdeinit(10738) |-kdeinit(10771)---bash(10783)---emacs(23700)-+-aspell(32542) | `-emacsserver(23754) |-kdeinit(10773) |-kdeinit(10774)---bash(10802) |-pam-panel-icon(10768)---pam_timestamp_c(10770) `-xload(10778)

Page 8: 5 UNIX Processes

Child and Parent Processes (2)

A parent process forks to create a child process

This allows multiprocessing:

$

$ pwd

$$ pwd &$$ ls &

$ ls

Prompt

Running Job 1

Running Job 2

Parent Process

Child Process

Child Process

Page 9: 5 UNIX Processes

Children run separately and simultaneously with each other and with their parents (although the parent might choose to wait for its child to finish)

Children inherit from their parents When a process spawns to make a

child process, the child is initially an exact copy of the parent, except for some differences (see next)

Child and Parent Processes (3)

Page 10: 5 UNIX Processes

Differences between Child and Parent Processes

They have different Process IDs (PIDs)The have different PPIDs (parent PIDs)Accounting information is reset for the

childFor details of all the differences look up

the manual page on the system call forkAll other things are initially the same, but

each process has its own copy (they can modify their own copy)

Page 11: 5 UNIX Processes

Being “nice” to other people!If you are running a program on a

shared machine and you know it will take some time - “nice” it

nice will run a program at a lower priority so that it doesn’t clog up the CPU

Priorities range from 19 to -20 -20 is the highest priority, but you are

not allowed to set priorities below 0 unless you are root

$ nice –n 20 find . -name unix.ps –print

Page 12: 5 UNIX Processes

Job Control: top

A program which shows you information about the top CPU processes

Updates this information at regular intervals

Type q to quitType k to kill a process (to kill means to

send a signal)Type u (return) followed by a username

(return) to just see the processes belonging to that user

Page 13: 5 UNIX Processes

Killing ProcessesUse topAlternatively, use kill

kill <signal number> <PID>E.g. kill -15 25718

“-15” is the signal number – here, it means “stop the process cleanly” (i.e. close any files it is using)

More about signals later… “-9” means “kill the process whatever”

Useful if all else fails!killall <signal number> <process

name> will send the signal to every process with that name.

Page 14: 5 UNIX Processes

Process States

Processes can have one of a number of states: 0 - running on a processor S - sleeping (waiting for an event to

complete) R - runnable (process is on run queue) Z – zombie

Page 15: 5 UNIX Processes

Running a Process in the Background

Some commands may take a while to complete

Some may run until the user Exits (e.g. emacs)

You may want to use your command line in the meantime: & puts a process in the background

(detaches it from the terminal) E.g. emacs &

Page 16: 5 UNIX Processes

Suspending ProcessesProcesses can be temporarily suspended

Use Ctrl-Z

To restart a process type one of: fg (puts process back in the foreground) bg (will restart process, but in the

background)

Suspended processes can also be killed: Do a process listing Use the kill command with the process ID

Page 17: 5 UNIX Processes

Job Control The jobs command produces a numbered list

of background and suspended processes You can use these job numbers to access your

jobs:

Note that the job number is not the process ID!

[zlizmj@unnc-cslinux ~]$ jobs[1] - Running xclock -d[2] + Suspended more temp.txt[zlizmj@unnc-cslinux ~]$ kill %2[zlizmj@unnc-cslinux ~]$ jobs[1] - Running xclock -d[3] Terminated more temp.txt

Page 18: 5 UNIX Processes

Job Control (2)

jobs allows you to: Bring a job to the foreground

fg %<job number> Run a job in the background

bg %<job number> Suspend a job

stop %<job number> Terminate a job

kill %<job number>

Page 19: 5 UNIX Processes

Control Key Sequences for Processes

Some control sequences affect processes: Ctrl-C - kill a process Ctrl-D - exit a shell (send EOF) Ctrl-S - suspend or pause the display of

output Ctrl-Q - resume or continue output

from Ctrl-S

Page 20: 5 UNIX Processes

Daemons

UNIX daemons are processes which lie dormant until they are needed for a particular service (services in windows-speak)

Commonly, their names end with a ‘d’Examples are:

Printer daemons (lpd) Web server daemons (httpd) Scheduling daemons (atd, crond)

Page 21: 5 UNIX Processes

Scheduling Processes - cron

Processes can be scheduled to run at a periodic intervals: Use the cron daemon With this, users can schedule

processes to run periodically, or at specified times

Create a text file called crontab.cron which contains lines with a date/time and command line

Page 22: 5 UNIX Processes

Scheduling Processes - cron (2)

Cron jobs are allowed or denied by system administrators using the cron.allow and cron.deny files in either /var/spool/cron or /etc/crond.d

You have to register your crontab using the command crontab crontab.cron in order for the cron daemon to activate your crontab

Page 23: 5 UNIX Processes

Scheduling Processes - cron (3)

Each line in crontab.cron has five fields: Minute - (0-59) Hour - (0-23) Day of the month - (1-31) Month of the year - (1-12) Day of the week - (0-6) (Sunday is 0) Command line - the command to be

executed

Page 24: 5 UNIX Processes

Using cronEdit your crontab.cron file to

contain what you want it to do:

This cron job will record the date it was run every 30 minutes from Monday to Friday, in the file datelog

Register your crontab:

$ crontab crontab.cron

0,30 * * * 1-5 date >> datelog

Page 25: 5 UNIX Processes

Scheduling Processes - at

You can schedule something to happen once using at

at TIME will execute at given TIME the commands given in STDIN.

It’s often more comfortable to useat TIME < filenameat TIME –f filename

Page 26: 5 UNIX Processes

Scheduling Processes - at (2)

$ at now + 1 min$ at> who | logged$ at> ls myDir | listing.txt$ at> <EOT>job 1171280502.a at Mon Feb 12 11:41:42 2007$ at 3am < commandsjob 8 at 2007-03-21 03:00

Page 27: 5 UNIX Processes

Scheduling Processes - batchThe batch command can be used to

queue up jobs:

These jobs will be run as soon as the system has the resources to do so

$ batchat> ls myDir > listing.txtat> <EOT>$

Page 28: 5 UNIX Processes

UNIX Signals

Signals are a UNIX mechanism for controlling processes

A signal is a message to a process that requires immediate attention

Signals are generated by exceptions, e.g.: Attempts to use illegal instructions The user pressing an interrupt key Window resize events A child process calling exit or terminating

abnormally

Page 29: 5 UNIX Processes

Signal NumbersEach signal has a default action

associated with itMost signals can be caught from within a

program. A programmer can then: Ignore signal Perform the default action Execute a program specified function

The default action can be TermTerminate the process. Ign Ignore the signal. Core Terminate the process and dump core. Stop Stop the process.

Page 30: 5 UNIX Processes

Signal NumbersSignal Name

Number Default Action

Meaning

SIGHUP 1 Term Hangup (sent to a process when a modem or network connection is lost, terminal is closed, etc)

SIGINT 2 Term Interrupt (generated by Ctrl-C)

SIGTRAP 5 Core Trace trap

SIGKILL 9 Term Kill

SIGBUS 10 Core Bus error (invalid memory reference)

SIGSEGV 11 Core Segmentation violation

SIGTERM 15 Term Software termination signal (default kill signal)

For a complete reference see the section 7 of the manual on signal

$ man 7 signal

Page 31: 5 UNIX Processes

Summary

UNIX processes How to list them How to prioritise them How to schedule them Parent and Child processes

Signals What are they for? Types of signal

Page 32: 5 UNIX Processes

Next Lecture

UNIX Network utilities