?? basics-processes.html
字號:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>進程</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手冊" href="index.html" /><link rel="UP" title="UNIX 基礎" href="basics.html" /><link rel="PREVIOUS" title="文件系統的掛接和卸下" href="mount-unmount.html" /><link rel="NEXT" title="守護進程,信號和殺死進程" href="basics-daemons.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手冊</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="mount-unmount.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 3. UNIX 基礎</td><td width="10%" align="right" valign="bottom"><a href="basics-daemons.html"accesskey="N">前進</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="BASICS-PROCESSES" name="BASICS-PROCESSES">3.7. 進程</a></h1><p>FreeBSD 是一個多任務操作系統。 這就意味著好像一次可以運行一個以上的程序。每個占用一定時間運行的程序就叫<i class="FIRSTTERM">process</i>。每個程序啟動運行時至少有一個新進程,并在所有運行的時候保持有一個系統進程的編號,而一直由系統對它監管。</p><p>每個進程用來標識的一個編號就叫 <i class="FIRSTTERM">進程 ID</i>, 或叫 <iclass="FIRSTTERM">PID</i>。 而且,就像文件那樣,每個進程也有所屬用戶和所屬群體。所屬用戶和所屬群體使用在這方面:確定這個進程可以打開那些文件和那些設備,從而在初期使用文件的權限。 多數的進程都同樣有一個父進程, 而進程是依靠父進程來啟動的。例如,假如你把命令輸入到shell里那shell是一個進程,而你運行的各個命令同樣是進程,那么,shell就是你各個運行進程的父進程。 而這方面有一個例外的進程就叫<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">init</span>(8)</span>。 <ttclass="COMMAND">init</tt>始終是首個進程,,所以他的PID始終是1, 而<ttclass="COMMAND">init</tt>在FreeBSD起動時由內核自動啟動。</p><p>在系統上,有兩個命令對進程觀察非常有用:<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ps</span>(1)</span> 和 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">top</span>(1)</span>。 這個<ttclass="COMMAND">ps</tt>命令作用是觀察當前運行進程的狀態,顯示他們的PID,使用了多少內存,它們啟動的命令行。 而<ttclass="COMMAND">top</tt>命令則是顯示所有運行進程,并在以秒計的短時內更新數據。你能交互式的觀察你計算機的工作。</p><p>默認情況下, <tt class="COMMAND">ps</tt>僅顯示出你自己所運行的命令。 例如:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">ps</kbd> PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh10735 p4 IWs 0:00.00 tcsh20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish</pre><p>在這個例子里你可看到,從 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ps</span>(1)</span> 輸出的每一列是有規律的。 <varclass="LITERAL">PID</var> 就是進程ID,這個較早前已討論過了。 PID號的分配由1一直上升直到99999, 當你運行到超過限制時,這些編號會回轉分配。 <varclass="LITERAL">TT</var>這一列顯示了程序運行所在的終端, 目前可以安全地忽略。 <varclass="LITERAL">STAT</var> 顯示程序的狀態,也可以安全地被忽略。 <varclass="LITERAL">TIME</var>是程序在CPU處理時間--運行的時間量,并不是指你程序啟動到現在的所用的時間。許多程序碰巧遇到某方面在他們之前要花費大量CPU處理時間時,他們就必須等候。 Finally, <varclass="LITERAL">COMMAND</var> is the command line that was used to run the program.</p><p><span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ps</span>(1)</span>支持使用各種選項去改變顯示出來的內容,最有用的一個就是<var class="LITERAL">auxww</var>。 <varclass="OPTION">a</var>選項顯示出所有運行進程的內容,而且顯示出進程的并一定是你的進程。<var class="OPTION">u</var>選項顯示出進程所歸屬的用戶名字以及內存使用, <varclass="OPTION">x</var> 選項顯示出后臺進程。 而 <var class="OPTION">ww</var> 選項表示為<span class="CITEREFENTRY"><span class="REFENTRYTITLE">ps</span>(1)</span>把整個命令行全部顯示完, 而不是由于命令行過長就把它從屏幕上截去。</p><p>下面和從<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">top</span>(1)</span>輸出是類似的,一個示例式對話就象這樣子:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">top</kbd>last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:1047 processes: 1 running, 46 sleepingCPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idleMem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K FreeSwap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt...</pre><p>這個輸出分成兩部份。 前面部份(起始前五行) 顯示了:運行于最后進程的PID、 系統負載均衡(那個是指系統繁忙時的調節方式)、 系統正常運行時間 ( 指從啟動算起所用的時間) 和當前時間。前面部份另外的圖表 涉及:多少進程在運行(這個情況是47), 多少內存和多少交換分區在使用,和在不同CPU狀態里系統消耗多少時間。</p><p>在那下面一連串的縱列和從<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ps</span>(1)</span>輸出的的內存是相似的。 如以前<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">ps</span>(1)</span>一樣,你能見到:PID、用戶名、CPU處理時間合計、運行的命令。<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">top</span>(1)</span>默認是顯示你的進程所用內存空間的合計。內存空間這里分成兩列,一列為總體大小,另一列是必須請求駐留大小是多少內存--總體大小。而駐留大小實際上是瞬間使用的多少。 在以上那個例子,你會看到那<b class="APPLICATION"><spanclass="TRADEMARK">Netscape</span>®</b>總計需要30 MB內存,但實際只用了9 MB。</p><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">top</span>(1)</span>每兩秒自動刷新一次,你可以用<var class="OPTION">s</var>改變刷新的秒數。</p></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="mount-unmount.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起點</a></td><td width="33%" align="right" valign="top"><a href="basics-daemons.html"accesskey="N">前進</a></td></tr><tr><td width="33%" align="left" valign="top">文件系統的掛接和卸下</td><td width="34%" align="center" valign="top"><a href="basics.html"accesskey="U">上一級</a></td><td width="33%" align="right" valign="top">守護進程,信號和殺死進程</td></tr></table></div></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -