天天看點

linux程序管理

程序管理 

程序 Process 

某應用程式打開的程序 

PID Process ID

類型: 

使用者空間程序 

核心空間程序 

靜态檢視程序的狀态

# ps

[root@localhost ~]# ps >>>>檢視本終端的程序 

  PID TTY          TIME CMD

 4206 pts/0    00:00:00 bash

 4378 pts/0    00:00:00 ps

選項的使用方式:

BSD風格:選項沒有橫線- ps aux

SysV風格:選項需要帶有橫線-   ps -elf

BSD風格: 

a 顯示與終端相關的程序

u 顯示啟動程序的使用者

x 顯示與終端無關的程序

root@localhost ~]# ps a

  PID TTY      STAT   TIME COMMAND

 3303 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2

 3305 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3

[root@localhost ~]# ps u

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root      3303  0.0  0.0   4064   544 tty2     Ss+  09:06   0:00 /sbin/mingetty /dev/tty2

root      3305  0.0  0.0   4064   544 tty3     Ss+  09:06   0:00 /sbin/mingetty /dev/tty3

USER 運作程序的使用者 

%CPU 程序所占用的CPU百分比

%MEM 程序所戰勝的MEM百分比

VSZ 虛拟記憶體集,程序獨有的記憶體+共享存在

RSS 程序獨有的記憶體 

STAT 程序的狀态

D:不可中斷的睡眠 (等待磁盤IO完成)

S:可中斷的睡眠(不需要等待磁盤IO完成) 

R:運作或就緒

T:停止

Z:僵死 Zombie

<:高優先級程序 

會被CPU優先執行

會擷取更多的CPU執行時間

N:低優先級程序 

+:前台程序組中的程序 

l:多線程程序(Thread)

s:會話程序首程序,某一個連接配接的父程序 

[root@localhost ~]# ps aux | less 

root         1  0.0  0.0  19364  1536 ?        Ss   09:05   0:00 /sbin/init

root         2  0.0  0.0      0     0 ?        S    09:05   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    09:05   0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    09:05   0:00 [ksoftirqd/0]

帶有方括号為系統進行(Linux核心啟動)

無方括号的(使用者程序)

[root@localhost ~]# ps aux | grep vim

root      5550  0.2  0.0 143972  3760 pts/2    S+   10:25   0:00 vim /etc/fstab

root      5564  0.0  0.0 103260   860 pts/0    S+   10:25   0:00 grep --color vim

SysV風格選項:

-e 顯示所有程序

-l 詳細資訊

-f 以長格式顯示(更多字段内容)

[root@localhost ~]# ps -elf | less

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD

4 S root         1     0  0  80   0 -  4841 poll_s 09:05 ?        00:00:00 /sbin/init

1 S root         2     0  0  80   0 -     0 kthrea 09:05 ?        00:00:00 [kthreadd]

1 S root         3     2  0 -40   - -     0 migrat 09:05 ?        00:00:00 [migration/0]

1 S root         4     2  0  80   0 -     0 ksofti 09:05 ?        00:00:00 [ksoftirqd/0]

1 S root         5     2  0 -40   - -     0 cpu_st 09:05 ?        00:00:00 [stopper/0]

5 S root         6     2  0 -40   - -     0 watchd 09:05 ?        00:00:00 [watchdog/0]

1 S root         7     2  0 -40   - -     0 migrat 09:05 ?        00:00:00 [migration/1]

程序優先級:

0----139

資料越小,越先級越高 

高優先級程序:

擷取CPU更多的執行時間

nice值:

新優先級=舊優先級+NICE值

-20----19 

普通使用者僅能夠調大nice值,即降低程序優先級

root使用者可随意調整nice值

顯示程序樹 

[root@localhost ~]# pstree

init─┬─abrtd

     ├─acpid

     ├─atd

     ├─auditd───{auditd}

     ├─automount───4*[{automount}]

     ├─bonobo-activati───{bonobo-activat}

     ├─certmonger

     ├─clock-applet

     ├─console-kit-dae───63*[{console-kit-da}]

     ├─crond

顯示程序PID  

[root@localhost ~]# pidof vim

5696

[root@localhost ~]# 

動态檢視程序的狀态 

# top 

top - 10:53:46 up  1:48,  3 users,  load average: 0.12, 0.19, 0.16

Tasks: 239 total,   2 running, 237 sleeping,   0 stopped,   0 zombie

Cpu(s):  7.6%us,  1.6%sy,  0.0%ni, 90.6%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st

Mem:  16084568k total,  2529012k used, 13555556k free,    70044k buffers

Swap:  8388604k total,        0k used,  8388604k free,   626388k cached

7.6%us 使用者程序占用的CPU

1.6%sy   系統程序占用的CPU

0.0%ni 調整過優先級的程序占用的CPU

90.6%id CPU空閑

0.0%wa 等待磁盤IO的程序所占用的CPU

Cpu(s):顯示所有CPU平均比,按1可顯示每顆CPU的使用情況

top互動式指令 :

M:按記憶體使用排序

P:按CPU使用排序

T:按運作時間排序 

l:是否顯示TOP第1行資訊

m:是否顯示記憶體使用資訊

t:是否顯示CPU及任務資訊

c:是否顯示完整的指令行

q:退出TOP

顯示目前時刻CPU的使用情況

[root@localhost ~]# uptime 

 11:00:25 up  1:54,  3 users,  load average: 0.39, 0.26, 0.19

top選項:

-d 1:指定top資訊重新整理的頻率

-b:以批模式顯示程序資訊

-n 2:共顯示兩批資訊 

# top -d 1 -b -n 2 

檢視伺服器性能:

1、ps, top 

2、df -hT 

3、free -m 

 11:39:00 up  3:24,  4 users,  load average: 0.00, 0.01, 0.05

# mpstat 檢視 CPU 

# vmstat 檢視記憶體 

# iostat 檢視磁盤

[root@localhost ~]# rpm -qf /usr/bin/iostat 

sysstat-10.1.5-7.el7.x86_64

程序控制

信号:Signal

檢視所有信号 

[root@localhost ~]# kill -l

 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

常用信号:

1  SIGHUP:讓一個程序不用重新開機,就可以重讀其配置檔案,并讓新配置生效  

2  SIGINT:硬體中斷信号,ctrl+c 

9  SIGKILL:殺死一個程序

15 SIGTERM:終止一個程序

如何調用一個信号?

信号号碼:kill -9 <PID>

信号名稱:kill -SIGKILL <PID>

信号名稱簡寫:kill -KILL <PID>

# kill <PID> 

# killall <PROCESS_NAME>

控制程序的運作方式(前台/背景)

前台: 占用指令提示符 

1) 控制指令在背景運作 

# command & 

[root@localhost ~]# firefox &

2) 檢視背景的應用程式 

[root@localhost ~]# jobs -l

[1]+ 12066 Running                 firefox &

3) 将正在運作的指令放入背景,并暫停運作 

ctrl+z 

4) 将背景的程式調回前台繼續運作 

# fg <背景任務編号>

[root@localhost ~]# fg 1

繼續閱讀