420 likes | 811 Views
Linux+ Guide to Linux Certification, Third Edition. Chapter 9 Managing Linux Processes. Objectives. Categorize the different types of processes on a Linux system View processes using standard Linux utilities Explain the difference between common kill signals
E N D
Linux+ Guide to Linux Certification, Third Edition Chapter 9 Managing Linux Processes
Objectives • Categorize the different types of processes on a Linux system • View processes using standard Linux utilities • Explain the difference between common kill signals • Describe how binary programs and shell scripts are executed Linux+ Guide to Linux Certification, 3e
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, 3e
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, 3e
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): PID of the parent process • The init daemon has a PID of 1 and a PPID of 0 Linux+ Guide to Linux Certification, 3e
Linux Processes (continued) Figure 9-1: Parent and child processes Linux+ Guide to Linux Certification, 3e
Linux Processes (continued) Figure 9-2: Process genealogy Linux+ Guide to Linux Certification, 3e
Viewing Processes • ps command: view processes • Most versatile and 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 • -e option: displays the entire list of processes across all terminals including daemons Linux+ Guide to Linux Certification, 3e
Viewing Processes (continued) • Process flag: indicates particular features of the process • Process state: current processor state of process • Most processes sleeping (S) or running (R) • Zombie process: process finished, but parent has not released child process’s PID • Defunct process • Process state is Z Linux+ Guide to Linux Certification, 3e
Viewing Processes (continued) • Process priority (PRI): priority used by the kernel for the process • Higher value means lower priority • Nice value (NI): can be used to affect the process priority indirectly • Higher value means a greater chance of low priority • pstree command: displays the lineage of a process by tracing its PPIDs until the init daemon Linux+ Guide to Linux Certification, 3e
Viewing Processes (continued) Table 9-1: Common options to the ps command Linux+ Guide to Linux Certification, 3e
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 • Rogue processes can be killed immediately when identified Linux+ Guide to Linux Certification, 3e
Killing Processes • kill command: sends a kill signal to a process to terminate it • 64 types of kill signals • Affect processes in different ways • -l option: displays list of kill signal names and associated numbers • To kill a process, give kill signal and PID • If no kill signal given, the default kill signal, SIGTERM, is used Linux+ Guide to Linux Certification, 3e
Killing Processes (continued) Table 9-2: Common administrative kill signals Linux+ Guide to Linux Certification, 3e
Killing Processes (continued) • Trapping: ignoring a kill signal • The SIGKILL signal cannot be trapped by any process • Use only as last resort • When parent process receives a kill signal, parent process terminates all child processes before terminating itself • To kill several related processes send signal to parent process • Kill parent process in order to kill zombie processes Linux+ Guide to Linux Certification, 3e
Killing Processes (continued) • killall command: kills multiple processes of the same name in one command • Takes kill signal number as an option • Uses process name instead of PID • If no kill signal given, the default kill signal, SIGTERM, is used • Can use top command to kill processes Linux+ Guide to Linux Certification, 3e
Process Execution • Three main types of executable commands • Binary programs • e.g., ls, find, grep • Shell scripts • Shell functions • e.g., cd, exit Linux+ Guide to Linux Certification, 3e
Process Execution (continued) • Forking: act of creating new BASH shell or subshell • Carried out by 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, 3e
Process Execution (continued) Figure 9-3: Process forking Linux+ Guide to Linux Certification, 3e
Running Processes in the Background • Foreground processes: BASH shell must wait for termination to display prompt and accept new commands • Background processes: BASH shell does not wait for termination • Append & metacharacter to command • Upon execution, user receives BASH shell prompt immediately Linux+ Guide to Linux Certification, 3e
Running Processes in the Background (continued) • jobs command: lists background job IDs for processes running in current shell • To terminate background process: • Send kill signal to PID • Send kill signal to background job ID • Prefix job ID with % character Linux+ Guide to Linux Certification, 3e
Running Processes in the Background (continued) • foreground (fg) command: move a background process to the foreground • Use Ctrl+z to pause a foreground process • Assigns the process a background job ID • background (bg) command: send an existing process to the background • Provide background job ID as argument • jobs command indicates the two most recent background processes • By default, commands apply to most recent process Linux+ Guide to Linux Certification, 3e
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, 3e
Process Priorities (continued) • PRI dictates number of time slices a process gets • Low PRI is likely to get more time slices than high PRI • Cannot change PRI value directly • Set NI to indirectly affect priority • Negative NI value, more time slices; positive NI value, less time slices • Processes start with NI of 0 • nice command: change a process’s priority as it starts Linux+ Guide to Linux Certification, 3e
Process Priorities (continued) Figure 9-4: The nice value scale Linux+ Guide to Linux Certification, 3e
Process Priorities (continued) • renice command: alter NI of a process after it has been started • Only root user may change NI to a negative value • -u option: change the NI for all processes owned by the specified user or group • May also change NI of running processes using top utility Linux+ Guide to Linux Certification, 3e
Scheduling Commands • To schedule commands to execute in the future: • 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, 3e
Scheduling Commands with atd • at command: schedule commands and tasks to run at a preset time • Specify the time as an argument –l option: view a list of at job IDs (regular users see only their own jobs) atq command: alias to at -l –c option: view content of a specified at job –d option: delete the specified at job –f option: list commands to be scheduled by at from a shell script Linux+ Guide to Linux Certification, 3e
Scheduling Commands with atd (continued) Table 9-3: Common at commands Linux+ Guide to Linux Certification, 3e
Scheduling Commands with atd (continued) • 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 a file, it is mailed to user Linux+ Guide to Linux Certification, 3e
Scheduling Commands with atd (continued) • /etc/at.allow: file listing all users allowed to use the at daemon • /etc/at.deny: file listing all the users not allowed to use the at daemon • If both files exist, only /etc/at.allow file is processed • On Fedora Linux systems, only /etc/at.deny file exists by default • Initially left blank, all users allowed to use at daemon Linux+ Guide to Linux Certification, 3e
Scheduling Commands with crond • Suitable for scheduling repetitive tasks • Cron tables: configuration files specifying when commands should be executed • Six fields separated by space or tab characters • First five specify times to run the command • Sixth absolute pathname to command to be executed Linux+ Guide to Linux Certification, 3e
Scheduling Commands with crond (continued) • User cron tables: represent tasks scheduled by individual users • System cron tables: contains system tasks • /var/spool/cron: stores user cron tables • /etc/crontab file: contains system cron tables • /etc/cron.d directory: contains system cron tables Linux+ Guide to Linux Certification, 3e
Scheduling Commands with crond (continued) Figure 9-5: User cron table format Linux+ Guide to Linux Certification, 3e
Scheduling Commands with crond (continued) Figure 9-6: Sample user cron table entry Linux+ Guide to Linux Certification, 3e
User Cron Tables • /etc/cron.allow: lists users allowed to use the cron daemon • /etc/cron.deny: lists users not allowed to use the cron daemon • If both files exist, only /etc/cron.allow file is processed • On Fedora Linux systems, only /etc/cron.deny file exists by default • Initially left blank, all users allowed to use cron daemon Linux+ Guide to Linux Certification, 3e
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 cron table and all scheduled jobs -u option: used by root user to edit, list, or remove a specified user’s cron table Linux+ Guide to Linux Certification, 3e
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, 3e
The System Cron Table (continued) • Initial section of cron table specifies execution environment • Remainder similar to user cron table entries • Cron tables located in the /etc/cron.d directory are run by the system as a specified user • Can schedule administrative task by placing a shell script in the appropriate one of the following directories: /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly, and etc/cron.monthly/ Linux+ Guide to Linux Certification, 3e
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, 3e
Summary (continued) • Process information is stored in the /proc filesystem; the ps, pstree 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 and should be killed to improve system performance • You can send kill signals to a process using the kill, killall, and top commands Linux+ Guide to Linux Certification, 3e
Summary (continued) • The BASH shell creates, or 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 nice value • Commands can be scheduled to run at a later time using the at and cron daemons Linux+ Guide to Linux Certification, 3e