unix processes. the unix process a process is an instance of a program in execution. created by...

18
UNIX Processes

Upload: kathryn-french

Post on 24-Dec-2015

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

UNIX Processes

Page 2: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

The UNIX Process

• A process is an instance of a program in execution.

• Created by another parent process as its child.

• One process can be parent of multiple children.

• The shell is the parent of the commands you run.

•The shell’s parent is the init process.

Page 3: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

• PID – The Process ID• When born, logged in the Process Table with unique number• Used to track and kill a process • Shell’s PID is stored in variable $$• To see or show value of $$ use echo $$

• PPID – The Process ID of the Parent• Can be used to kill a child process

Two Important Process Attributes

Page 4: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Other Process Attributes Inherited from Parent

• Real UID and GID

• Effective UID and GID

• Current directory

• File descriptors

• umask value

• Environment variables

Page 5: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

$ ps Display a simple listing of your processesPID TT STAT TIME COMMAND64199 p3 S 0:00.00 -ksh (ksh)64218 p3 R+ 0:00.00 ps

$ ps –a Display all the users’ processes

$ ps –e Display all processes including system processes

$ ps –f Display a full listing of your processes

$ ps –l Display a long detailed listing of processes UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND 83641 75606 75605 0 20 0 1996 540 pause S p3 0:00.00 -ksh (ksh) 83641 75610 75606 0 96 0 5776 992 - R+ p3 0:00.00 ps –l

Displaying Process Status with the ps Command

Page 6: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Daemons in UNIX

• Daemons are system processes that lack terminal control. Examples:

• lpsched• mail, mailx • cron

• Cannot read from terminal nor write to terminal

• ps –e shows all daemons running.

Page 7: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Exporting and Environment Variables• A local variable is not visible in child processes: $ x=5 ; sh Create a child process $ echo $x No value in child!

• An exported variable is visible in all child processes: $ x=5 ; export x x is now environmental $ sh ; echo $x Create a child process 5

• Changes made in child are not available in parent: $ x=7 Value set in child $ exit Child dies; back to parent $ echo $x 5 Original value in parent

Page 8: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

The UNIX Process Cycle• A parent process forks a child by replicating its own process image.

• The child process execs (overwrites) this image with that of another program.

• While the child is running, parent may• wait for child to complete execution (foreground execution).• continue with its other tasks (background execution).

• The process terminates and parent picks up exit status of child.

• Kernel removes entry for dead child from process table.

Page 9: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

When the Child Dies Before the Parent

• When child dies, it leaves behind an exit status in process table.

• Parent process may• pick up exit status; remove child entry in process table; child is now completely dead OR• may not wait; child entry not removed from process table; child in zombie state.

• Zombies can’t be killed but are harmless (they take up space); shown as <defunct> in ps output.

Page 10: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

When the Parent Dies Before the Child

• Child becomes an orphan.

• Child adopted by init process.

• PPID of child changes to 1 (init process).

• Orphan processes continue to operate until killed or ends normally.

• When child dies, init picks up the exit status.

Page 11: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Signals

• Used by kernel to communicate with processes (e.g., notification of occurrence of an event, e.g. a keyboard press).

• Process may• perform the default action OR• ignore the signal OR• catch the signal and invoke a signal-handling function (trap).

• Some important signals• SIGINT (interrupt key) SIGQUIT (quit and core dump)• SIGSTOP (suspend key) SIGKILL (a sure kill, but not a keyboard

event)

Page 12: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

• No keyboard event generates a kill.

• Kill signals cannot be trapped. You must kill using this command.

• kill <pid> Example: $ kill 154339 (kills process 154339)

• Results are not reversible.

Terminating Processes with the kill Command

Page 13: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Running a Job in the Background

• Job is run in background with &. Frees keyboard screen for other uses. Example: sort empl.lst > junk2 &

• If you logout before it’s finished, the job may be terminated.

• Using nohup (no hang up) and &, the job will run even after logging out. Example: nohup sort empl.lst > junk2 &

• Use nohup with every command in a pipeline. Example: nohup grep book | nohup sort > sortedfile &

Page 14: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Job Control• Job control supported by most shells but not Bourne.

• Job accessed by job number usually shown in brackets e.g., [1].

• Apart from background execution, job control allows• suspending a job ([Ctrl-z]).• bringing a background job to foreground: fg %1• moving a suspended job to foreground or background: bg %find

• The jobs command lists all running/ suspended jobs.

•The kill command can also take a job id e.g., kill %3

Page 15: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

Scheduling a Process to Run Periodically

cron

• Kernel started daemon (UNIX’s chronograph)

• Wakes up each minute to execute what is in crontabs file

crontab • Takes as input a user edited file • Used to insert jobs in crontabs file to be executed by cron

daemon• crontab –r (removes content from a user’s crontab file)• crontab –l (lists content of user’s crontab file)• crontab <file> (adds content of user’s file to

crontabs)

Page 16: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

crontab File Format

minutes hours days of month months days of week command

• Minutes: 00 to 59, can be expressed as a range e.g., 00-15, or 0,15,30,45

• Hours : 0 to 23• Day in month: 0 to max # days in month• Month: 1 to 12• Days of week: 0 to 6, where 0=Sunday• Use asterisk (*) to indicate all• Use comma (,) to indicate a set of values• Use hyphen (-) to indicate a range of values

Page 17: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

crontabs File Format Examples

00-10 17 10,20,30 * 1,3 find / -newer .last_time -print >bkup

Execute the find command either 3 days of the month or Monday andWednesday of each month.

55 17 * * 4 find / -newer .last_time -print > bkupExecute the find command every Thursday at 5:55 pm.

0,30 * * * * find / -newer .last_time -print >bkupExecute the find command every 30 minutes on the half hour.

Page 18: UNIX Processes. The UNIX Process A process is an instance of a program in execution. Created by another parent process as its child. One process can be

at hh:mm or at <keywords> Examples: at 15:08 at noon + 1 year at> flush.sh >rep.lst at> cleanup.sh > clean.lst ctl-d ctl-d

batch - put in batch queue and run the job later• runs when resource utilization levels are low. • have lower priority than user foreground jobs. • Example: batch < checkusers.sh

• System may limit use of these commands.

Scheduling a Process to Run Later