Linux+ Guide to Linux Certification
Transcription
Linux+ Guide to Linux Certification
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 2 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 3 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 4 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 5 Linux Processes (continued) Figure 9-1: Parent and child processes Linux+ Guide to Linux Certification, 3e 6 Linux Processes (continued) Figure 9-2: Process genealogy Linux+ Guide to Linux Certification, 3e 7 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 8 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 9 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 10 Viewing Processes (continued) Table 9-1: Common options to the ps command Linux+ Guide to Linux Certification, 3e 11 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 12 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 13 Killing Processes (continued) Table 9-2: Common administrative kill signals Linux+ Guide to Linux Certification, 3e 14 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 15 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 16 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 17 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 18 Process Execution (continued) Figure 9-3: Process forking Linux+ Guide to Linux Certification, 3e 19 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 20 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 21 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 22 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 23 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 24 Process Priorities (continued) Figure 9-4: The nice value scale Linux+ Guide to Linux Certification, 3e 25 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 26 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 27 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 28 Scheduling Commands with atd (continued) Table 9-3: Common at commands Linux+ Guide to Linux Certification, 3e 29 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 30 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 31 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 32 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 33 Scheduling Commands with crond (continued) Figure 9-5: User cron table format Linux+ Guide to Linux Certification, 3e 34 Scheduling Commands with crond (continued) Figure 9-6: Sample user cron table entry Linux+ Guide to Linux Certification, 3e 35 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 36 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 37 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 38 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 39 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 40 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 41 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 42