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