跳轉到內容

LPI Linux 認證/建立、監控和終止程序

來自華夏公益教科書,開放的書籍,開放的世界

詳細目標

[編輯 | 編輯原始碼]

(LPIC-1 版本 5.0)

權重:4

描述
考生應該能夠執行基本的程序管理。

關鍵知識領域

  • 在前景和後臺執行作業。
  • 訊號程式在登出後繼續執行。
  • 監控活動程序。
  • 選擇和排序程序以顯示。
  • 向程序傳送訊號。

以下是使用檔案、術語和實用程式的部分列表

  • &
  • bg
  • fg
  • jobs
  • kill
  • nohup
  • ps
  • top
  • free
  • uptime
  • pgrep
  • pkill
  • killall
  • watch
  • screen
  • tmux

建立程序

[編輯 | 編輯原始碼]

正在執行的應用程式是程序。每個程序都有:程序 ID、父程序 ID、當前目錄 PWD、檔案描述符表、正在執行的程式、環境變數(從其父程序繼承)、stdin、stdout、stderr(標準錯誤),以及可能還有更多(可選)特徵。

Bash 是一個程式,當它被執行時,它就會成為一個程序。每次在 shell 中執行命令時,都會建立一個新程序。除了內建的 shell 命令。它們在 shell 上下文中執行。使用 type 檢查命令是否為內建的 shell 命令。

示例

type cp ls which type

監控程序

[編輯 | 編輯原始碼]

要即時監控程序,請使用 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 是任務使用的物理記憶體總量。SHARE 是任務使用的共享記憶體量。%CPU 是任務的 CPU 時間份額。%MEM 是任務的物理記憶體份額。top 執行後,也可以執行互動式命令。

  • 鍵入 N 按 pid 排序任務。
  • 鍵入 A 按年齡排序任務(最新的排在最前面)。
  • 鍵入 P 按 CPU 使用率排序任務。
  • 鍵入 M 按記憶體使用率排序任務。
  • 鍵入 k 終止程序(注意:系統會提示你輸入程序的 pid)。

系統啟動並執行後,從終端可以檢視哪些程序正在執行,方法是使用 ps 程式。

要顯示系統中所有程序的長格式,請使用以下命令

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

ps 程式將顯示所有正在執行的程序及其 PID 號和其他資訊。要檢視登入會話中程序的長格式,請使用

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

終止程序

[編輯 | 編輯原始碼]

ps 程式將顯示所有正在執行的程序及其 PID 號。知道 PID 後,就可以向程序傳送訊號。

  • SIGSTOP 停止程序。
  • SIGCONT 繼續停止的程序。
  • SIGKILL 終止程序。

向程序傳送訊號的程式稱為 kill。

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

預設情況下,程序在前景啟動,它是唯一接收鍵盤輸入的程序。使用 CTRL+Z 暫停它。

要在後臺啟動程序,請使用 &。

bash &
xeyes &

在 bash 程序中,可以啟動多個作業。用於操作作業的命令是 jobs。

jobs      # List all the active jobs
bg %job   # Resume job in background
fg %job   # Resume job in foreground
kill %job # Kill background job

當 bash 終止時,所有從會話啟動的程序都將收到 SIGHUP 訊號。預設情況下,這將終止程序。

要防止程序終止,可以使用 nohup 命令啟動程式。

nohup mydaemon

1. 如何控制 PID 為 3196 的 CPU 使用率


華夏公益教科書