From 274465e8a5b47f3d34c63f21dfefa0fe897b183a Mon Sep 17 00:00:00 2001 From: Alan Hicks Date: Sat, 1 May 2010 14:43:21 -0400 Subject: Began process control chapter. ps is fleshed out and should be complete. kill is started. --- chapter_06.xml | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 122 insertions(+), 3 deletions(-) diff --git a/chapter_06.xml b/chapter_06.xml index c757993..8366fe8 100644 --- a/chapter_06.xml +++ b/chapter_06.xml @@ -5,24 +5,143 @@ Process Control + +Slackware systems often run hundreds or thousands of programs, each of +which is refered to as a process. Managing these processes is an +important part of system administration. So how exactly do we handle +all of these seperate processes? + +
-Why Use Slackware? +ps + + +The first step in managing processes is figuring out what processes are +currently running. The most popular and powerful tool for this is +ps(1). Without any arguments, +ps won't tell you much information. By +default, it only tells you what processes are running in your currently +active shell. If we want more information, we'll need to look deeper. + + +darkstar:~$ ps + PID TTY TIME CMD +12220 pts/4 00:00:00 bash +12236 pts/4 00:00:00 ps + + + +Here you can see what processes you are running in your currently +active shell or terminal and only some information is included. The +PID is the "Process ID"; every process is assigned a unique number. The +TTY tells you what terminal device the process is attached to. +Naturally, CMD is the command that was run. You might be a little +confused by TIME though, since it seems to move so slowly. This isn't +the amount of real time the process has been running, but rather the +amount of CPU time the process has consumed. An idle process uses +virtually no CPU time, so this value may not increase quickly. + + + +Viewing only our own processes isn't very much fun, so let's take a +look at all the processes on the system with the -e +argument. + + +darkstar:~$ ps -e + PID TTY TIME CMD + 1 ? 00:00:00 init + 2 ? 00:00:00 kthreadd + 3 ? 00:00:00 migration/0 + 4 ? 00:00:00 ksoftirqd/0 + 7 ? 00:00:11 events/0 + 9 ? 00:00:01 work_on_cpu/0 + 11 ? 00:00:00 khelper + 102 ? 00:00:02 kblockd/0 + 105 ? 00:01:19 kacpid + 106 ? 00:00:01 kacpi_notify +... many more lines ommitted ... + + + +The above example uses the standard ps +syntax, but much more information can be discovered if we use BSD +syntax. In order to do so, we must use the aux argument. + + + +This is distinct from the -aux argument, but in most cases +the two arguments are equivilant. This is a decades-old relic. For more +information, see the man page for ps. + + +darkstar:~$ ps aux +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.0 0.0 3928 632 ? Ss Apr05 0:00 init [3] +root 2 0.0 0.0 0 0 ? S< Apr05 0:00 [kthreadd] +root 3 0.0 0.0 0 0 ? S< Apr05 0:00 [migration/0] +root 4 0.0 0.0 0 0 ? S< Apr05 0:00 [ksoftirqd/0] +root 7 0.0 0.0 0 0 ? S< Apr05 0:11 [events/0] +root 9 0.0 0.0 0 0 ? S< Apr05 0:01 [work_on_cpu/0] +root 11 0.0 0.0 0 0 ? S< Apr05 0:00 [khelper] +... many more lines ommitted .... + + + +As you can see, BSD syntax offers much more information, including what +user controls the process and what percentage of RAM and CPU the process +is consuming when ps is run. + + + +Finally, ps can also create a process tree. +This shows you which processes have children processes. Ending the +parent of a child process also ends the child. We do this with the +-ejH argument. + + +darkstar:~$ ps -ejH +... many lines ommitted ... + 3660 3660 3660 tty1 00:00:00 bash +29947 29947 3660 tty1 00:00:00 startx +29963 29947 3660 tty1 00:00:00 xinit +29964 29964 29964 tty7 00:27:11 X +29972 29972 3660 tty1 00:00:00 sh +29977 29972 3660 tty1 00:00:05 xscreensaver +29988 29972 3660 tty1 00:00:04 xfce4-session +29997 29972 3660 tty1 00:00:16 xfwm4 +29999 29972 3660 tty1 00:00:02 Thunar +... many more lines ommitted ... + +As you can see, ps is an incredibly powerful +tool for determining not only what processes are currently active on +your system, but also for learning lots of important information about +them.
-Differences Compared to Other Linux Distributions +kill and killall +Managing processes isn't only about knowing which ones are running, but +also about communicating with them to change their behavior. The most +common way of managing a program is to terminate it. Thus, the tool for +the job is named kill(1). Despite the name, +kill doesn't actually terminate processes, +but sends signals to them. The most common signal is a SIGTERM, which +tells the process to finish up what it is doing and terminate. There +are a variety of other signals that can be sent, but the three most +common are SIGTERM, SIGHUP, and SIGKILL.
-Licensing +top -- cgit v1.2.3