U NIX C OMP -145 L ECTURE 5: UNIX P ROCESSES T EXT : S. D AS, “Y OUR U NIX : T HE ULTIMATE G UIDE...
-
Upload
josephine-goodman -
Category
Documents
-
view
216 -
download
1
Transcript of U NIX C OMP -145 L ECTURE 5: UNIX P ROCESSES T EXT : S. D AS, “Y OUR U NIX : T HE ULTIMATE G UIDE...
UNIX COMP-145
LECTURE 5: UNIX PROCESSES
TEXT: S. DAS, “YOUR UNIX: THE ULTIMATE GUIDE”, 2ND EDITION, MCGRAW HILL, 2006
10/22/2009 rwj BROOKDALE COMMUNITY COLLEGE 1
BROOKDALE COMMUNITY COLLEGE 2
UNIX OPERATING SYSTEM
• THE UNIX PROCESS STRUCTURE• PROCESS INITIALIZATION SEQUENCE• PROCESS CONTROL COMMANDS• RUNNING SHELL SCRIPTS IN BACKGROUND• PROCESS SIGNALING AND EXIT STRUCTURE• EXECUTE &TERMINATE PROCESSES• SCHEDULE A PROCESS TO RUN
AUTOMATICALLY
10/22/2009 rwj
BROOKDALE COMMUNITY COLLEGE 3
THE PROCESS
• AN INSTANCE OF A PROGRAM IN EXECUTION. • IDENTIFIED BY A UNIQUE PID (PROCESS-ID). • CREATED BY ANOTHER PROCESS AS ITS CHILD• ONE PROCESS CAN BE PARENT OF MULTIPLE
CHILDREN• CAN BE KILLED OR STOPPED BY SENDING IT A
SIGNAL
10/22/2009 rwj
THE PROCESS CYCLE
• PARENT FORKS A CHILD BY 1ST REPLICATING ITS OWN PROCESS IMAGE AND LOGGING THE CHILD IN THE PROCESS TABLE.
• CHILD EXECUTES (OVERWRITES) THIS IMAGE WITH THAT OF ANOTHER PROGRAM.
• WHILE CHILD IS RUNNING, PARENT MAY WAIT FOR CHILD TO COMPLETE EXECUTION (IF A CHILD EXECUTING IN
FOREGROUND) CONTINUE WITH ITS OTHER TASKS (IF A CHILD EXECUTING IN
FOREGROUND)
• PROCESS TERMINATES AND PARENT PICKS UP EXIT STATUS OF CHILD. Until Parent picks up exit status of child, process called a ZOMBIE,
because process not removed
• KERNEL REMOVES ENTRY FOR DEAD CHILD FROM PROCESS TABLE.
10/22/2009 rwj BROOKDALE COMMUNITY COLLEGE 4
BROOKDALE COMMUNITY COLLEGE 510/22/2009 rwj
THE PROCESS CYCLE (contd)
• IF PARENT PROCESS DIES BEFORE A CHILD PROCESS CHILD PROCESS CALLED AN ORPHAN PROCESS init BECOMES PARENT OF CHILD,
AS IT IS FOR MOST DAEMONS ORPHAN PROCESSES CONTINUE TO OPERATE UNTIL ITS
KILLED OR ENDS NORMALLY.
BROOKDALE COMMUNITY COLLEGE 610/22/2009 rwj
MORE ON THE PROCESS
• BUILT IN SHELL COMMANDS DO NOT FORK SEPARATE A PROCESS FOR EXAMPLE: cd or pwd
• SHELL SCRIPTS USE SUB-SHELLS TO RUN COMMANDS IN SCRIPT
• SIGNALS: USED BY KERNEL TO COMMUNICATE WITH A PROCESS kill -s, OR GENERATED THROUGH YOUR keyboard
BROOKDALE COMMUNITY COLLEGE 710/22/2009 rwj
PROCESS ATTRIBUTES INHERITED BY CHILD
• Real User ID (UID) and Group (GID)• Effective UID and GID• Current directory• File descriptors• umask value• Environment variables
• PID Process ID – referred to as “pid” When born, logged in Process Table with unique number Used to track and kill a process Stored in variable $$ To see or show value of $$ use echo $$
• PPID Parent PID, referred to as “p-pid” Can be used to kill a child process but only be used if 1 child spawned
$ ps PID TT STAT TIME COMMAND64199 p3 S 0:00.00 -ksh (ksh)64218 p3 R+ 0:00.00 ps$
PROCESS ATTRIBUTES NOT INHERITED BY CHILD
10/22/2009 rwj BROOKDALE COMMUNITY COLLEGE 8
BROOKDALE COMMUNITY COLLEGE 910/22/2009 rwj
PROCESS CONTROL COMMANDS
• ps (PROGRAM STATUS)• kill (TERMINATE PROCESS)
• DISPLAY ENVIRONMENTSPECIFIES A LIST OF DIRECTORIES TO SEARCH.
$ ps –e
PID TT STAT TIME COMMAND64199 p3 S 0:00.00 -ksh (ksh)64304 p3 R+ 0:00.00 ps –e
PROGRAM STATUS (ps)
BROOKDALE COMMUNITY COLLEGE 1010/22/2009 rwj
BROOKDALE COMMUNITY COLLEGE 11
• DISPLAY COMMAND-LINE AND ENVIRONMENT INFO ABOUT SWAPPED OUT PROCESSES. UID OF USE MUST BE 0.
$ ps –f
PID TT STAT TIME COMMAND64199 p3 S 0:00.00 -ksh (ksh)64305 p3 R+ 0:00.00 ps –f
10/22/2009 rwj
PROGRAM STATUS (ps) (contd)
BROOKDALE COMMUNITY COLLEGE 12
• DISPLAY DETAILED PROCESS LISTING
$ ps –lUID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND83641 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
10/22/2009 rwj
PROGRAM STATUS (ps) (contd)
BROOKDALE COMMUNITY COLLEGE 1310/22/2009 rwj
RUNNING JOBS IN THE BACKGROUND
• APPEND & (AMPERSAND) TO THE END OF A SHELL OR COMMAND SHELL OPERATOR TO RUN IN BACKGROUND FREES KEYBOARD AND SCREEN FOR USE.
$ sort empl.lst > junk2 &
BROOKDALE COMMUNITY COLLEGE 1410/22/2009 rwj
RUNNING JOBS IN THE BACKGROUND (contd)
• PREPEND nohup (NO HANG UP) IN FRONT OF A SHELL OR COMMAND SHELL OPERATOR TO NOT TERMINATE THE COMMAND
RUNNING IN BACKGROUND EVEN IF THE SESSION ENDS
$ nohup sort empl.lst > junk2 &
UNIKE & , USE nohup WITH EACH COMMAND IN A PIPELINE, E.G.
$ nohup grep directory | nohup sort > empl_directors_sorted&
BROOKDALE COMMUNITY COLLEGE 1510/22/2009 rwj
PROCESS SIGNALING AND EXIT STRUCTURE
• JOB CONTROL USES <job_id> AS IT RELATES TO PGID MOVE JOBS BETWEEN FOREGROUND AND
BACKGROUND COMMANDS
fg bg suspend (OUTPUT TO TERMINAL) jobs (LISTS CURRENTLY ACTIVE JOBS) kill (TERMINATES JOBS) ctl-z (SUSPENDS CURRENT FOREGROUND
JOB)
BROOKDALE COMMUNITY COLLEGE 1610/22/2009 rwj
EXECUTE & TERMINATE PROCESSES
• JOB CONTROL COMMANDS START A COMMAND IN THE BACKGROUND$ find / -name a.out –print > files_to_remove 2>dev/null &[1] 1287$ ls -lR / > system_list 2>dev/null &[2] 1288$ du -s /usrs1/* > disk_usage &[3] 1289
• STOP OUTPUT TO THE TERMINAL + SUSPEND JOB SUSPENDS JOB WHEN TRIES TO WRITE TO TERMINAL$ stty tostop
BROOKDALE COMMUNITY COLLEGE 1710/22/2009 rwj
EXECUTE & TERMINATE PROCESSES (contd)
• USE OF JOB CONTROL FUNCTIONS USING JOB NUMBER MOVE TO FOREGROUND
$ fg %1
SUSPENDS ONLY A FOREGROUND JOB$ [ctl-z]
USING JOB NUMBER RETURN JOB 1 TO BACKGROUND $ bg %1
WHEN JOB ENDS NORMALLY GET $ [2]- Exit 1 ls -lR / > system_list 2>dev/null
WHEN JOB NEEDS TO BE KILLED MANUALLY USE <job_id> $ kill %2[1] + Terminated ls -lR / > system_list 2>dev/null
BROOKDALE COMMUNITY COLLEGE 1810/22/2009 rwj
• kill <pid> or <job_id>Pid SPECIFIES THE PROCESS THAT THE OS IS TO KILLTHE RESULT IS NOT REVERSIBLE.
$ kill 154339$ kill %1
TERMINATE PROCESSES
BROOKDALE COMMUNITY COLLEGE 1910/22/2009 rwj
DAEMON IN UNIX
• SCRIPTS THAT LACK TERMINAL CONTROL $ lpsched
$ mail, mailx, cron
• ps –e SHOWS cron DAEMON RUNNING.• PROGRAMS INVOKED BY LAUNCHING A SHELL
OR SUB-SHELL SHELL SCRIPTS SUB-SHELL READS & EXECUTES EACH STATEMENT IN
SCRIPT
BROOKDALE COMMUNITY COLLEGE 2010/22/2009 rwj
SCHEDULE A PROCESS TO RUN AUTOMATICALLY
• cron vs crontab cron
KERNEL STARTED DAEMON STARTED EACH MINUTE TO EXECUTE WHAT IS IN A USER’S
crontab FILE crontab
TAKES AS INPUT A USER EDITED FILE USED TO INSERT JOBS 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> (LISTS CONTENT OF USER’S
crontab FILE)
BROOKDALE COMMUNITY COLLEGE 2110/22/2009 rwj
SCHEDULE A PROCESS TO RUN AUTOMATICALLY (contd)
• CRONTAB file’s entry syntax:minutes, hours, days of month, month, days of week, command
o MINUTES: 00 TO 59, CAN BE EXPRESSED AS A RANGE E.G., 00-15, or 0,15,30,45
o HOURS : 0 TO 23, # of hourso DAY IN MONTH: 0 TO MAX # DAYS IN MONTHo MONTH: 1 TO 12o DAYS OF WEEK: 0 TO 6, WHERE 0=SUNDAYo USE ASTERISK (*) TO INDICATE ALLo USE COMMA (,) TO INDICATE A SET OF VALUESo USE HYPHEN (-) TO INDICATE A RANGE OF VALUES
BROOKDALE COMMUNITY COLLEGE 2210/08/2009 rwj
SCHEDULE A PROCESS TO RUN AUTOMATICALLY (contd)
• EXAMPLES OF ENTRIES IN A crontab FILEminutes, hours, days of month, month, days of week, command
00-10 17 10,20,30 * 1,3 find / -newer .last_time -print >backuplist
(EXECUTE THE COMMAND EITHER 3 DAYS OF THE MONTH OR MONDAY AND WEDNESDAY OF EACH MONTH)
55 17 * * 4 find / -newer .last_time -print >backuplist
(EXECUTE THE COMMAND EVERY THURSDAY AT 5:55 PM) 0,30 * * * * find / -newer .last_time -print >backuplist
(EXECUTE THE COMMAND EVERY 3O MINUTES ON THE HALF HOUR)
BROOKDALE COMMUNITY COLLEGE 2310/22/2009 rwj
• UTILITY FOR ONE TIME EXECUTION at <time> - SAME DATE, FORMAT hhmm OR hh:mmat –t <time2>- SCHEDULED, FORMAT [[CC]YY]MMDDhhmm[.SS]
$ at 15:08at> empawk2.sh > rep.lst
at –l - LISTS ITEMS IN “at” QUEUEat -r <job_id> - reMOVES ITEM FROM “at” QUEUEat –m <time>
• EXECUTE AS A BATCH JOB IN “at” QUEUE BATCH JOBS ARE RUN WHEN RESOURCE UTILIZATION LEVELS ARE
LOW, HAVE LOWER PRIORITY THAN USER FOREGROUND JOBS SUBMITS JOB TO RUN IN BATCH QUEUE
batch < empawk22.sh
SCHEDULE A PROCESS TO RUN AUTOMATICALLY (contd)
BROOKDALE COMMUNITY COLLEGE 2410/08/2009 rwj
SUMMARY
• PROCESS CYCLE WHAT PARENT OR CHILD CAN DO WHILE OTHER IS RUNNING
• PROGRAM STATUS COMMAND• RUNNING A PROCESS
BACKGROUND FOREGROUND TERMINATE A PROCESSES
• CRON AND RELATED COMMANDS