程序管理:pstree、ps、Top、nice 修改程序優先級 、Kill、前台背景程序切換 、free 檢視記憶體、screen
程式與程序:
程式是靜态的(檔案),程序是動态的(運作的程式)。
程序和線程:
一個程式至少有一個程序,一個程序至少有一個線程.
程序之間記憶體是獨立
線程之間記憶體共享 ,高并發好一些 。 安全性差一些。
[root@localhost ~]# pstree ##檢視程序樹
systemd─┬─NetworkManager───2[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5[{polkitd}]
├─rhnsd
├─rhsmcertd
├─rsyslogd───2[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4[{tuned}]
└─wpa_supplicant
[root@localhost ~]# pstree -p ##顯示程序号
systemd(1)─┬─NetworkManager(1023)─┬─{NetworkManager}(1037)
│ └─{NetworkManager}(1042)
├─agetty(971)
├─auditd(930)───{auditd}(938)
├─crond(968)
├─dbus-daemon(958)───{dbus-daemon}(964)
├─firewalld(954)───{firewalld}(1334)
├─lvmetad(825)
├─master(1856)─┬─pickup(16851)
│ └─qmgr(1866)
├─polkitd(1047)─┬─{polkitd}(1054)
│ ├─{polkitd}(1055)
│ ├─{polkitd}(1058)
│ ├─{polkitd}(1060)
│ └─{polkitd}(1064)
├─rhnsd(1547)
├─rhsmcertd(1540)
├─rsyslogd(952)─┬─{rsyslogd}(961)
│ └─{rsyslogd}(962)
├─sshd(1533)───sshd(16884)───bash(16888)───pstree(16922)
├─systemd-journal(805)
├─systemd-logind(955)
├─systemd-udevd(835)
├─tuned(1534)─┬─{tuned}(1677)
│ ├─{tuned}(1680)
│ ├─{tuned}(1682)
│ └─{tuned}(1687)
└─wpa_supplicant(1050)
列出目前所有的正在記憶體當中的程序
ps -aux
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 188928 4000 ? Ss 06:57 0:02 /usr/lib/systemd/systemd --switched-root --system --deseri
root 2 0.0 0.0 0 0 ? S 06:57 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 06:57 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 06:57 0:00 [kworker/0:0H]
USER:運作此程序的使用者名
• PID :該 process 的号碼。
• %CPU:該 process 使用掉的 CPU 資源百分比;
• %MEM:該 process 所占用的實體記憶體百分比;
• VSZ :該 process 使用掉的虛拟記憶體量 (Kbytes)
• RSS :該 process 占用的固定的記憶體量 (Kbytes)
• TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,若為 pts/0 等等的,則表示為由網絡連接配接進主機的程式。
• STAT:該程式目前的狀态,Linux程序有5種基本狀态:
R :(正在運作或在運作隊列中等待) ;
S :該程式目前正在睡眠當中 ,但可被某些訊号 (signal) 喚醒。
T :該程式目前暫停了
例: vim a.txt 按下: ctrl+z
[root@localhost ~]# ps -aux |grep vim
root 16924 0.1 0.2 151716 5292 pts/0 T 07:50 0:00 vim a.txt
root 16926 0.0 0.0 112660 968 pts/0 R+ 07:51 0:00 grep --color=auto vim
ctrl-c 是發送 SIGINT 信号,終止一個程序 停止
ctrl-z 是發送 SIGSTOP信号,挂起一個程序 暫停
Z :該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie (疆屍) 程式的狀态
D: 不可中斷狀态.
< 高優先級的
N 低優先級的
s 包含子程序
l 多線程
前台程式
START:該 process 被觸發啟動的時間;
• TIME :該 process 實際使用 CPU 運作的時間。
• COMMAND:該程式的實際指令
了解:
ps -ef
ps -aux 是用BSD的格式來顯示程序。
ps -ef 是用标準的格式顯示程序。
top 動态檢視程序
統計資訊區前五行是系統整體的統計資訊。
1、第一行是任務隊列資訊
同 uptime 指令的執行結果:
[root@localhost ~]# uptime
21:13:25 up 52 min, 4 users, load average: 0.06, 0.03, 0.05
其内容如下:
21:13:25 目前時間
up 52 min 系統運作時間,格式為時:分
4 users, 目前登入使用者數
load average: 0.06, 0.03, 0.05 系統負載,即任務隊列的平均長度。 三個數值分别為 1分鐘、5分鐘、15分鐘前到現在的平均值。
一般來說,每個CPU核心目前活動程序數不大于3,則系統運作表現良好!當然這裡說的是每個cpu核心,也就是如果你的主機是四核cpu的話,那麼隻要uptime最後輸出的一串字元數值小于4*3=12即表示系統負載不是很嚴重.
2. 第二、三行為程序和CPU的資訊
當有多個CPU時,這些内容可能會超過兩行。内容如下:
Tasks: 29 total 程序總數
1 running 正在運作的程序數
28 sleeping 睡眠的程序數
1 stopped 停止的程序數
0 zombie 僵屍程序數
Cpu(s):
0.3% us 系統使用者程序使用CPU百分比。 不包括調高優先級的程序。 CPU%是由每個核的CPU占用律之和算出來的。如果你是4核CPU,核1,CPU使用率為100%,核2,CPU使用率為100%。 則會出會CPU 高于100%的現象,最終為200%
1.0% sy 核心中的程序占用CPU百分比
0.0% ni 使用者程序空間内改變過優先級的程序占用CPU百分比
98.7% id 空閑CPU百分比
第四五行為記憶體資訊。内容如下:
Mem: 191272k total 實體記憶體總量
173656k used 使用的實體記憶體總量
17616k free 空閑記憶體總量
22052k buff/cache 用作核心緩存的記憶體量。
和free –k 一個意思
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閑交換區總量
3123008 avail Mem 總的可利用記憶體是多少
二. 程序資訊
列名 含義
PID 程序id
USER 程序所有者的使用者名
NI 程序優先級。 nice值。負值表示高優先級,正值表示低優先級
RES 實際使用記憶體大小。
S 程序狀态。
D=不可中斷的睡眠狀态
R=運作
S=睡眠
T=跟蹤/停止
Z=僵屍程序
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 程序使用的實體記憶體百分比
TIME+ 程序使用的CPU時間總計,機關1/100秒
COMMAND 指令名/指令行
top快捷鍵:
預設3s重新整理一次
空格 :立即重新整理。
q退出
M按記憶體排序
P按CPU排序
<> 翻頁
控制(關閉)程序:
kill 給程序發送信号(停止程序)
常用信号:
1 HUP 重新加載配置檔案。類似重新開機。
2 INT 和ctrl+c一樣 一般用于通知前台程序組終止程序
9 KILL 強行中斷
19 STOP 和ctrl+z一樣
例:
文法:kill -9 pid
[root@localhost ~]# ps -aux | grep top
root 39747 0.4 0.0 146512 2428 pts/0 S+ 08:21 0:04 top
[root@localhost ~]# kill -9 39747
killall 通過程式的名稱,直接殺死所有程序
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# ps -aux | grep httpd
root 39962 0.0 0.1 226128 5052 ? Ss 08:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39974 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39975 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39976 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39977 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
apache 39978 0.0 0.0 228212 3128 ? S 08:39 0:00 /usr/sbin/httpd -DFOREGROUND
root 39985 0.0 0.0 112644 956 pts/1 S+ 08:39 0:00 grep --color=auto httpd
[root@localhost ~]# killall httpd
或者
pkill httpd
擴充:
vim a.txt #出現以下情況
E325: ATTENTION
Found a swap file by the name ".a.txt.swp"
owned by: root dated: Fri Dec 4 20:59:24 2015
解決思路:
1)檢視一下有沒有對應的程序,有的話殺死
[root@localhost ~]# ps -aux | grep vim
root 39395 0.0 0.1 151452 5136 pts/0 T 07:50 0:00 vim a.txt
root 40034 0.0 0.0 112644 956 pts/0 S+ 08:43 0:00 grep --color=auto vim
[root@localhost ~]# kill -9 39395
2)如果還不能解決
[root@localhost ~]# rm -rf .a.txt.swp
優先級控制:
nice值 -20 ~ 19 越小優先級越高 普通使用者0-19
nice
作用:以什麼優先級運作程序 。預設優先級是0
文法: nice -n 優先級數字
[root@localhost ~]# nice -n -5 vim a.txt
root 40128 0.0 0.1 151452 5152 pts/0 S<+ 08:48 0:00 vim a.txt
root 40149 0.0 0.0 112644 956 pts/1 S+ 08:49 0:00 grep --color=auto vim
[root@localhost ~]# top -p 40128
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
40128 root 15 -5 151452 5152 2528 S 0.0 0.1 0:00.05 vim
renice #修改正在運作的程序的優先級
[root@localhost ~]# renice -n 5 40168
35281 (process ID) old priority 0, new priority 5
前背景程序切換:
任務:nohup 如何建立一個背景指令
jobs 列出所有的背景程序
[root@localhost ~]# vim b.txt &
[2] 40281
[root@localhost ~]# jobs
[1]- Stopped nice -n -5 vim a.txt
[2]+ Stopped vim b.txt
fg把背景程序調到前台
[root@localhost ~]# fg 2
free 檢視系統記憶體使用狀況
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 3937 613 2606 10 717 2999
Swap: 2047 0 2047
buffers #緩存從磁盤讀出的内容
cached #緩存需要寫入磁盤的内容
[root@localhost ~]# dd if=/dev/zero of=/a.txt count=10 bs=100M
清空緩存
reboot
[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches
Mem: 3937 561 3194 10 181 3174
本文轉自信自己belive51CTO部落格,原文連結:http://blog.51cto.com/11638205/2048799 ,如需轉載請自行聯系原作者