LPI Linux Certification/Create, Monitor And Kill Processes

Detailed Objectives
(LPIC-1 Version 5.0)

Weight: 4

Description: Candidates should be able to perform basic process management.

Key Knowledge Areas:
 * Run jobs in the foreground and background.
 * Signal a program to continue running after logout.
 * Monitor active processes.
 * Select and sort processes for display.
 * Send signals to processes.

The following is a partial list of the used files, terms and utilities:

Create processes
A running application is a process. Every process has: a process ID, a parent process ID, a current directory PWD, a file descriptor table, a program which it is executing, environment variables (inherited from its parent process), stdin, stdout, stderr (standard error), and possibly even more (optional) traits.

Bash is a program that when it is executed becomes a process. Each time you execute a command in a shell a new process is created. Except for the built-in shell command. They run in the shell context. Use type to check if a command is a built-in shell command.

Example:

type cp ls which type

Monitor processes
To monitor the processes in real-time, use top.

top - 9:20am up  2:48,  4 users,  load average: 0.15, 0.13, 0.09 78 processes: 75 sleeping, 3 running, 0 zombie, 0 stopped CPU states: 15.3% user, 0.3% system,  0.0% nice, 84.2% idle Mem:  254896K av,  251204K used,    3692K free,       0K shrd,   27384K buff Swap: 514072K av,       0K used,  514072K free                  120488K cached PID USER    PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND 1517 rarrigon  0   0 40816  39M 17372 R    15.0 16.0   2:59 mozilla-bin 1727 rarrigon 19   0   988  988   768 R     0.3  0.3   0:00 top 1 root     20   0   220  220   188 S     0.0  0.0   0:04 init 2 root     20   0     0    0     0 SW    0.0  0.0   0:00 keventd

RSS is the total amount of physical memory used by the task. SHARE is the amount of shared memory used by the task. %CPU is the task's share of the  CPU  time. %MEM is the task's share of the physical memory. Once top is running it is also possible to execute interactive commands:
 * Type N to sort tasks by pid.
 * Type A to sort tasks by age (newest first).
 * Type P to sort tasks by CPU usage.
 * Type M to sort tasks by memory usage.
 * Type k to kill a process (NOTE: You will be prompted for the process' pid).

Once the system is up and running from a terminal it is possible to see which processes are running with the ps program.

To display a long format of all the processes in the system, use the following:

ps -Al F S  UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD 004 S    0     1     0  0  80   0 -   112 do_sel ? 00:00:04 init 004 S    0   381     1  0  80   0 -   332 do_sel ? 00:00:00 dhcpcd 006 S    0  1000     1  0  80   0 -   339 do_sel ? 00:00:00 inetd 044 R    0  1524  1222  0  79   0 -   761 -      pts/3    00:00:00 ps

The ps program will display all the processes running and their PID numbers and other information. To see a long format of the processes in your login session, use:

ps -l F S  UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD 000 S  500  1154  1139  0  80   0 -   724 wait4  pts/1    00:00:00 bash 002 S  500  1285  1283  0  77   0 - 24432 wait_f pts/1    00:00:00 soffice.bin 040 R  500  1442  1435  0  79   0 -   768 -      pts/4    00:00:00 ps F: Process Flags 002: being created, 040: forked but didn't exec, 400: killed by a signal. S: Process States: R: runnable, S: sleeping, Z: zompbie UID: User ID, PID: Process ID, PPID: Parent Process ID, C: Scheduler, PRI: priority NI: Nice value, SZ: size of routine, WCHAN: name of routine

Kill processes
The ps program will display all the processes running and their PID numbers. Once the PID is known, it is possible to send signals to the process:
 * SIGSTOP to stop a process.
 * SIGCONT to continue a stopped process.
 * SIGKILL to kill a process.

The program to send a signal to a process is called kill.

kill -SIGKILL [pid] kill -63 [pid] kill -l

By default a process is started in the foreground and it is the only one to receive keyboard input. Use CTRL+Z to suspend it.

To start a process in the background use the &. bash & xeyes &

In a bash process it is possible to start multiple jobs. The command to manipulate jobs is jobs. jobs     # List all the active jobs bg %job  # Resume job in background fg %job  # Resume job in foreground kill %job # Kill background job

When bash is terminated all processes that have been started from the session will receive the SIGHUP signal. This will by default terminate the process.

To prevent the termination of a process, the program can be started with the nohup command.

nohup mydaemon

Exercises
1. How can you control CPU usage for PID 3196


 * Exercises results