Linux 伺服器系統管理第七章 行程管理  上一頁    下一頁

7-3 行程記錄 記錄

內容:

  • 7-3-1 系統行程目錄 - /proc

  • 7-3-2 使用者登入範例

7-3-1 系統行程目錄 - /proc

系統在正常運作情況下,會產生許多動態的行程,以及系統運作的相關參數,都會被儲存於 /proc/ 目錄底下;基本上,這些訊息的內容都是隨時變動的,並保存於主記憶體內,但為了系統操作將他們以磁碟檔案格式儲存。再掛載於 /proc/ 目錄底下,我們首先觀察 /proc/ 目錄下有哪些檔案(本書範例):

[root@Linux-1 ~]# ls  /proc

1     1670  2074  2226  2605  2722  4270       buddyinfo    irq         self

1237  1685  2083  223   2609  2724  4272       bus          kallsyms  slabinfo

1238  1687  2113  2231  2634  2737  4296       cmdline      kcore       stat

1239  1710  2123  2243  2637  2739  4298       cpuinfo      keys        swaps

1240  1831  2132  2265  2638  2741  4319       crypto       key-users   sys

………….

1594  2024  2168  2483  2707  2818  87         fs           mounts

1611  2033  2175  2488  2709  3     925        ide          mtrr

1629  2042  2190  2578  2711  388   acpi       interrupts   net

1643  2059  2206  2602  2713  4     asound     iomem        partitions

1647  2065  2217  2603  2716  4269  bluetooth  ioports      pci

上述範例中,每一個檔案或目錄表示一個行程或核心參數記錄,其中數字是行程的 PIDProcess ID)號碼;以目錄名稱 4269 為例,它代表著 PID=2693 的行程(本書範例,sshd),可由此目錄下觀察出該行程的狀態,操作範例如下:

$ ps -ef | grep  sshd       [查閱 sshd 行程]

root      1487     1  0 10:20 ?        00:00:00 /usr/sbin/sshd

root      2676  1487  0 10:20 ?        00:00:00 sshd: student01 [priv]

student+  2693  2676  0 10:21 ?        00:00:00 sshd: student01@pts/0

student+  2786  2696  0 10:25 pts/0    00:00:00 grep --color=auto sshd

$ cat /proc/2693/status         [查閱行程狀態]

Name:   sshd

State:  S (sleeping)

…..

7-3-2 使用者登入範例

系統啟動後,第一個程序為 /sbin/init,它會根據 RC Scrip 設定檔,啟動執行系統所需的行程。可利用 ps –ef 命令觀察,如下:

# ps -ef | grep init

root         1     0  0 Nov04 ?        00:00:03 init

root     29268 29243  0 13:38 pts/0    00:00:00 grep init

系統啟動之後,再由 init 行程產生其他行程,因此,可將此行程視為系統的最大行程(PID=1)。

當系統啟動之後,必須隨時監視是否有使用者登入,或其他客戶端的要求服務(如伺服器)。當客戶端(或使用者登入)要求服務時,系統會立即產生另一個『子程序』(Sub-process),來專屬服務該客戶。本書利用一個使用者(tsnien),透過網路登入系統作為範例,來探討系統由啟動後,一直到接受服務的過程如何。圖 12-5 是當系統啟動後立即產生 xientd 超級服務程式,由它來監視是否有使用者登入系統;待使用者登入後,系統會立即產生 in.telnetd 程序來處理網路連線的工作,並產生 login 程序來等待使用者輸入命令,之間過程所產生的程序如下:

$ ps –ef        [執行命令]

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 Nov04 ?        00:00:03 init

….

Root      1682     1  0 Nov04 ?        00:00:00 xinetd –stayalive –reuse –pidfil

….

Root     29402  1682  0 19:32 ?        00:00:00 in.telnetd: 220-133-42-19

….

Root     29403 29402  0 19:32 ?        00:00:00 [login]

…..

tsnien   29404 29403  0 19:32 pts/0    00:00:00 –bash

tsnien   29438 29404  0 19:53 pts/0    00:00:00 ps –ef

7-3 啟動後登入範例

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: