420 likes | 631 Views
Linux+ Guide to Linux Certification, Second Edition. Chapter 10 Managing Linux Processes. Objectives. Categorize the different types of processes on a Linux system View processes using standard Linux utilities Illustrate the difference between common kill signals
E N D
Linux+ Guide to Linux Certification, Second Edition Chapter 10 Managing Linux Processes
Objectives • Categorize the different types of processes on a Linux system • View processes using standard Linux utilities • Illustrate the difference between common kill signals • Describe how binary programs and shell scripts are executed Linux+ Guide to Linux Certification, 2e
Objectives (continued) • Create and manipulate background processes • Use standard Linux utilities to modify the priority of a process • Schedule commands to execute in the future using the at daemon • Schedule commands to execute repetitively using the cron daemon Linux+ Guide to Linux Certification, 2e
Linux Processes • Program: Structured set of commands stored in an executable file • Executed to create a process • Process: Program running in memory and on CPU • User process: Process begun by user on a terminal • Daemon process: System process • Not associated with a terminal Linux+ Guide to Linux Certification, 2e
Linux Processes (continued) • Process ID (PID): Unique identifier assigned to a process • Child process: Process started by another process (parent process) • Parent process: Process that has started other processes (child processes) • Parent Process ID (PPID): Parent process’s PID Linux+ Guide to Linux Certification, 2e
Linux Processes (continued) Figure 10-1: Parent and child processes Linux+ Guide to Linux Certification, 2e
Linux Processes (continued) Figure 10-2: Process genealogy Linux+ Guide to Linux Certification, 2e
Viewing Processes • ps command: View processes • Most common process viewing utility • No arguments: Lists all processes running in current shell • PID, terminal, command that started process, CPU time • –f (full) option: More complete information • User identifier (UID), PPID, start time, CPU utilization Linux+ Guide to Linux Certification, 2e
Viewing Processes (continued) • Process state: Current processor state of process • Most processes sleeping (S) or running (R) • Zombie process: Process finished, but parent has not released PID • Defunct process • Process state is Z Linux+ Guide to Linux Certification, 2e
Viewing Processes (continued) • Process priority (PRI): Determines how many processor time slices process will receive • Higher value means lower priority • Nice value (NI): Indirectly represents priority • Higher value means lower priority Linux+ Guide to Linux Certification, 2e
Viewing Processes (continued) Table 10-1: Common options to the ps command Linux+ Guide to Linux Certification, 2e
Viewing Processes (continued) • top command: Displays interactive screen listing processes • Organized by processor time • Processes using most processor time listed first • Rogue process: Faulty process • Consumes excessive system resources • top command can be used to change PRI or kill processes Linux+ Guide to Linux Certification, 2e
Killing Processes • kill signal: Sent to a process by kill command • 64 types of kill signals • Affect processes in different ways • kill command: Kills all instances of a process by command name • To kill a process, give kill signal and PID • If no kill signal given, SIGTERM assumed Linux+ Guide to Linux Certification, 2e
Killing Processes (continued) Table 10-2: Common administrative kill signals Linux+ Guide to Linux Certification, 2e
Killing Processes (continued) • Trapping: Ignore a kill signal • Kill signals sent to processes having children • Parent process terminates all child processes before terminating itself • Often necessary to kill parent process in order to kill zombie processes Linux+ Guide to Linux Certification, 2e
Killing Processes (continued) • killall command: Kills all instances of a process by command name • Uses process name instead of PID • Can use top command to kill processes Linux+ Guide to Linux Certification, 2e
Process Execution • Three main types of executable commands • Binary programs • Shell scripts • Shell functions Linux+ Guide to Linux Certification, 2e
Process Execution (continued) • Forking: Act of creating new BASH shell child process from a parent • Fork function in BASH shell • Subshell executes program or shell script using exec function • Original shell waits for subshell to complete • When done, subshell kills itself • Control returns to original shell Linux+ Guide to Linux Certification, 2e
Process Execution (continued) Figure 10-3: Process forking Linux+ Guide to Linux Certification, 2e
Running Processes in the Background • Foreground processes: BASH shell must wait for termination • Background processes: BASH shell does not wait for termination • & metacharacter • Upon execution, user receives BASH shell prompt immediately Linux+ Guide to Linux Certification, 2e
Running Processes in the Background (continued) • jobs command: Lists background processes running in current shell • foreground (fg) command: Run a background process in foreground • Foreground process may be paused with ctrl Z • background (bg) command: Run a foreground process in background Linux+ Guide to Linux Certification, 2e
Running Processes in the Background (continued) • Jobs command marks two most recent background processes • Commands operate on most recent process, by default Linux+ Guide to Linux Certification, 2e
Process Priorities • Time slice: Amount of time a process is given on a CPU • More time slices mean more execution time on CPU • Executes faster • Usually measured in milliseconds Linux+ Guide to Linux Certification, 2e
Process Priorities (continued) • PRI dictates number of time slices a process gets • Cannot change PRI value directly • Set NI to indirectly affect priority • Processes start with NI of 0 • nice command: Change a process’s priority as it starts Linux+ Guide to Linux Certification, 2e
Process Priorities (continued) Figure 10-4: The nice value scale Linux+ Guide to Linux Certification, 2e
Process Priorities (continued) • renice command: Alter NI of a process after it is running • Only root user may change NI to a negative value • May also change NI of running processes using top utility Linux+ Guide to Linux Certification, 2e
Scheduling Commands • at daemon (atd): System daemon that executes tasks at a future time • cron daemon (crond): System daemon that executes tasks repetitively in the future Linux+ Guide to Linux Certification, 2e
Scheduling Commands with atd • at command: Schedule commands and tasks to run at a preset time • –l option: View a list of scheduled jobs • Regular users see only their own jobs • –c option: View system environment at scheduling time • –d option: Delete a job • –f option: Run scheduled jobs from shell script Linux+ Guide to Linux Certification, 2e
Scheduling Commands with atd (continued) • atq command: Alternative method to view scheduled jobs • at daemon uses current shell’s environment for execution • Shell environment and scheduled commands stored in /var/spool/at • If stdout of scheduled command has not been redirected to file, mailed to user Linux+ Guide to Linux Certification, 2e
Scheduling Commands with atd (continued) Table 10-3: Common at commands Linux+ Guide to Linux Certification, 2e
Scheduling Commands with atd (continued) • /etc/at.allow: File listing all users able to use at command • /etc/at.deny: File listing all the users not able to use at command • On Fedora Linux systems, no /etc/at.allow file exists • Empty by default • All users allowed to use at daemon Linux+ Guide to Linux Certification, 2e
Scheduling Commands with crond • Cron tables: Files specifying tasks for cron daemon to run • Specify when commands should be executed • User and system cron tables • Six fields separated by space or tab characters Linux+ Guide to Linux Certification, 2e
Scheduling Commands with crond (continued) Figure 10-5: User cron table format Linux+ Guide to Linux Certification, 2e
Scheduling Commands with crond (continued) Figure 10-6: Sample user cron table entry Linux+ Guide to Linux Certification, 2e
Scheduling Commands with crond (continued) • /var/spool/cron: Stores user cron tables • /etc/crontab: Contains default system cron table • /etc/cron.d: Contains additional system cron tables Linux+ Guide to Linux Certification, 2e
User Cron Tables • /etc/cron.allow: Lists users able to use cron command • /etc/cron.deny: Lists users not able to access cron command Linux+ Guide to Linux Certification, 2e
User Cron Tables (continued) • crontab command: View and edit user cron tables • –e option: Edit cron tables in vi editor • –l option: List a user cron table • –r option: Remove all scheduled jobs Linux+ Guide to Linux Certification, 2e
The System Cron Table • System maintenance, backups, and CPU-intensive tasks often scheduled for non-business hours • Often scheduled by cron daemon • Entries in system cron table (/etc/crontab) Linux+ Guide to Linux Certification, 2e
The System Cron Table (continued) • Initial section of cron table specifies execution environment • Remainder similar to user cron table entries • Sixth field specifies who to run command as • Remaining fields represent command to run • run-parts command: Execute all files in a directory Linux+ Guide to Linux Certification, 2e
Summary • Processes are programs that are executing on the system • User processes are run in the same terminal as the user who executed them, whereas daemon processes are system processes that do not run on a terminal • Every process has a parent process associated with it and, optionally, several child processes Linux+ Guide to Linux Certification, 2e
Summary (continued) • Process information is stored in the /proc filesystem; the ps and top commands can be used to view this information • Zombie and rogue processes that exist for long periods of time use up system resources • You can send kill signals to a process using the kill, killall, and top commands Linux+ Guide to Linux Certification, 2e
Summary (continued) • The BASH shell forks a subshell to execute most commands • Processes can be run in the background by appending an & to the command name • The priority of a process can be affected indirectly by altering its NI • Commands can be scheduled to run at a later time using the at and cron daemons Linux+ Guide to Linux Certification, 2e