summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Batts <vbatts@hashbangbash.com>2011-10-18 20:45:37 -0400
committerVincent Batts <vbatts@hashbangbash.com>2011-10-18 20:45:37 -0400
commite3a90c20046c33bb77f715b31007b26aadd9b3e3 (patch)
tree0641d1bc0b7b28d997ae25c9c00f2a3423cf6472
parent1b60c4c25a2f3f65860b3e3b2a4b3ce3b727f2b0 (diff)
downloadslackbook-e3a90c20046c33bb77f715b31007b26aadd9b3e3.tar.xz
adding more to the 'ps' section of chapter_06
-rw-r--r--chapter_06.xml73
1 files changed, 70 insertions, 3 deletions
diff --git a/chapter_06.xml b/chapter_06.xml
index 785f4da..0b02a4b 100644
--- a/chapter_06.xml
+++ b/chapter_06.xml
@@ -94,7 +94,50 @@ is consuming when <application>ps</application> is run.
</para>
<para>
-Finally, <application>ps</application> can also create a process tree.
+To accomplish bits of this, on a per process basis, <command>ps</command> allows
+one or more process IDs (PIDs) to be provided in the command line, and has the '-o' flag
+to show a particular attribute of the PID.
+</para>
+
+<screen><prompt>darkstar:~$ </prompt><userinput>ps -o cmd -o etime $$</userinput>
+CMD ELAPSED
+/bin/bash 12:22
+</screen>
+
+<para>
+What this is displaying, is the PID's command name (cmd), and its elapsed time (etime).
+The PID in this example, is a shell variable for the PID of the current shell. So you
+can see, in this example, the shell process has existed for 12 minutes, 22 seconds.
+</para>
+
+<para>
+Using the <command>pgrep</command>(1) command, this can get more automatable.
+</para>
+
+<screen><prompt>darkstar:~$ </prompt><userinput>ps -o cmd -o rss -o vsz $(pgrep httpd)</userinput>
+CMD RSS VSZ
+/usr/sbin/httpd -k restart 33456 84816
+/usr/sbin/httpd -k restart 33460 84716
+/usr/sbin/httpd -k restart 33588 84472
+/usr/sbin/httpd -k restart 30424 81608
+/usr/sbin/httpd -k restart 33104 84900
+/usr/sbin/httpd -k restart 33268 85112
+/usr/sbin/httpd -k restart 30640 82724
+/usr/sbin/httpd -k restart 15168 67396
+/usr/sbin/httpd -k restart 33180 84416
+/usr/sbin/httpd -k restart 33396 84592
+/usr/sbin/httpd -k restart 32804 84232
+</screen>
+
+<para>
+In this example, a subshell execution, using <command>pgrep</command>,
+is returning the PIDs of any process, whose command
+name includes 'httpd'. Then <command>ps</command> displaying the command name,
+resident memory size, and virtual memory size.
+</para>
+
+<para>
+Finally, <command>ps</command> 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
<arg>-ejH</arg> argument.
@@ -115,12 +158,36 @@ parent of a child process also ends the child. We do this with the
</screen>
<para>
-As you can see, <application>ps</application> is an incredibly powerful
+As you can see, <command>ps</command>(1) 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.
</para>
+<para>
+As is the case with many of the applications, there is often several tools
+for the job. Similar to the <command>ps -ejH</command> output, but more terse,
+is <command>pstree</command>(1). It displays the process tree, a bit more visually.
+</para>
+
+<screen><prompt>darkstar:~$ </prompt><userinput>pstree</userinput>
+init-+-atd
+ |-crond
+ |-dbus-daemon
+ |-httpd---10*[httpd]
+ |-inetd
+ |-klogd
+ |-mysqld_safe---mysqld---8*[{mysqld}]
+ |-screen-+-4*[bash]
+ | |-bash---pstree
+ | |-2*[bash---ssh]
+ | `-bash---irssi
+ |-2*[sendmail]
+ |-ssh-agent
+ |-sshd---sshd---sshd---bash---screen
+ `-syslogd
+</screen>
+
</section>
<section>
@@ -130,7 +197,7 @@ them.
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 <application>kill</application>(1). Despite the name,
+the job is named <command>kill</command>(1). Despite the name,
<application>kill</application> 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