进程启动的方式:
系统引导启动:与终端无关
用户通过终端启动:与终端相关
进程管理工具中的进程状态表示:
VSZ:虚拟内存集
RSS:Resident Size,常驻内存集
STAT:
R:running 运行状态
S:interruptable sleeping 可中断睡眠
D:uninterruptable sleeping 不可中断睡眠
T:Stopped/TRACED 停止态或追踪状态
Z:zombie 僵死态
进程分类 :
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader首进程
进程管理之ps
ps:report a snapshot of the current processes
a:显示所有与终端相关的进程
u:显示以用户为中心组织进程状态信息
x:显示所有与终端无关的进程
-e:显示所有进程
-f:显示完整格式进程信息
-F:显示更完整格式进程信息
-H:以层级结构显示进程信息
-o field1,field2:自定义显示字段
常用的field:pid,ni,psr,pcpu,stat,comm,tty,ppid,rtprio
不指定任何选项则显示当前用户在当前终端打开的进程
注意:ps选项有三种风格,BSD(选项不带-),GUN(长选项须带--,UNIX选项带-)
常用组合一:ps aux
显示所有进程信息(包括状态信息)
[root@johnson_linux ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 0.1 19356 1584 ? Ss 19:22 0:03 /sbin/init root 2 0.0 0.0 0 0 ? S 19:22 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 19:22 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 19:22 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 19:22 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 19:22 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 19:22 0:00 [events/0] root 8 0.0 0.0 0 0 ? S 19:22 0:00 [events/0] root 9 0.0 0.0 0 0 ? S 19:22 0:00 [events_long] root 10 0.0 0.0 0 0 ? S 19:22 0:00 [events_powe] root 11 0.0 0.0 0 0 ? S 19:22 0:00 [cgroup] 以下内容省略...
常用组合二:ps -ef
显示所有进程的详细信息
[root@johnson_linux ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:22 ? 00:00:03 /sbin/init root 2 0 0 19:22 ? 00:00:00 [kthreadd] root 3 2 0 19:22 ? 00:00:00 [migration/0] root 4 2 0 19:22 ? 00:00:00 [ksoftirqd/0] root 5 2 0 19:22 ? 00:00:00 [stopper/0] root 6 2 0 19:22 ? 00:00:00 [watchdog/0] root 7 2 0 19:22 ? 00:00:00 [events/0] root 8 2 0 19:22 ? 00:00:00 [events/0] root 9 2 0 19:22 ? 00:00:00 [events_long/0] root 10 2 0 19:22 ? 00:00:00 [events_power_ef] root 11 2 0 19:22 ? 00:00:00 [cgroup] root 12 2 0 19:22 ? 00:00:00 [khelper]
常用组合三: ps -eFH
以层级结构显示所有进程的详细信息
[root@johnson_linux ~]# ps -eFH UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 4839 1584 0 19:22 ? 00:00:03 /sbin/init root 570 1 0 2814 1356 0 19:22 ? 00:00:00 /sbin/udevd -d root 2227 570 0 2813 1360 0 19:22 ? 00:00:00 /sbin/udevd -d root 2228 570 0 2813 1340 0 19:22 ? 00:00:00 /sbin/udevd -d root 1569 1 0 44332 8000 0 19:22 ? 00:00:02 /usr/sbin/vmtoolsd root 1594 1 0 12757 9344 0 19:22 ? 00:00:00 /usr/lib/vmware-vg root 1657 1 0 51499 7024 0 19:22 ? 00:00:01 ./ManagementAgentH
常用组合四:ps -eo,axo
显示所有进程指定字段的信息
[root@johnson_linux ~]# ps -eo pid,uid,command PID UID COMMAND 1 0 /sbin/init 2 0 [kthreadd] 3 0 [migration/0] 4 0 [ksoftirqd/0] 5 0 [stopper/0] 6 0 [watchdog/0] 7 0 [events/0] 8 0 [events/0] 9 0 [events_long/0] 基本都是root用户创建的进程
进程管理之top
top:显示系统进程(实时动态)
基本命令:
首部信息开关:(显示或关闭)
uptime信息:l
task和cpu:t
内存信息:m
修改刷新时间:s
终止指定进程:k
退出命令:q
常用选项:
-d #:指定刷新时间间隔
-b:以批次方式显示(所有进程为一批)
-n #:显示多少批次
以批次显示一般搭配重定向输出使用
注意:top命令式根据窗口的宽度来显示信息,宽度不够的情况下显示的信息会不完整
top面板信息详解:
top - 20:10:16 系统当前时间
up 28 min 系统运行的时间
1 users 当前系统登录的用户数
load average: 0.00, 0.00,0.00 系统平均负载
三组数分别对应1分钟,5分钟,15分钟前到现在的平均负载
Tasks:
92 total 当前系统全部进程数
1 running 运行状态的进程数
90 sleeping 睡眠状态的进程数
1 stopped 停止状态的进程数
0 zombie 僵尸态的进程数
Cpu(s):
0.0%us 用户空间占用cpu时间
0.3%sy 内核空间占用cpu时间
0.0%ni 修改过优先升级进程占用cpu的时间
99.7%id cpu 空闲时间
0.0%wa cpu 等待IO的时间
0.0%hi cpu 被硬中断的时间
0.0%si cpu 被软中断的时间
Mem:
1004768k total 系统内存总量
876876k used 已经使用的内存
127892k free 空闲的内存
103828k buffers 用于内核缓存的内存
Swap:
0k total 交换分区总量
0k used 已使用的容量
0k free 空闲的容量
604500k cached 从内存中置换到交换分区,而又重新被写回到内存中的容量
此数据在交换分区中还未被覆盖
PID 进程ID
USER 进程所有者的用户名
PR 进程优先级
NI 进程nice值
VIRT 进程的虚拟内存总量
RES 进程的常驻内存容量(未被置换过)
SHR 进程的共享内存(代表可以被其他进程共享的内存)
S 进程状态(R运行,S睡眠,D不可中断睡眠,T停止,Z僵尸)
%CPU 进程占用cpu百分比
%MEM 进程占用内存百分比
TIME+ 进程占用cpu的时间总和
COMMAN 进程的程序名
示例:
杀掉一个进程(就杀一下top)
top - 20:16:51 up 54 min, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie Cpu(s): 0.4%us, 0.4%sy, 0.0%ni, 99.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1004768k total, 174608k used, 830160k free, 17400k buffers Swap: 0k total, 0k used, 0k free, 74928k cached PID to kill: 3095 (按下k,会提示输入进程PID,输入PID回车即可干掉进程) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3095 root 20 0 15032 1200 928 R 0.4 0.1 0:01.43 top (我们于要杀掉的程序) 3020 root 20 0 4064 544 476 S 0.0 0.1 0:00.00 mingetty 3005 root 20 0 105m 1840 1412 S 0.0 0.2 0:00.07 bash 3001 root 20 0 99972 4028 3056 S 0.0 0.4 0:00.83 sshd
修改刷新时间
top - 20:24:56 up 1:02, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1004768k total, 174204k used, 830564k free, 17456k buffers Swap: 0k total, 0k used, 0k free, 74932k cached Change delay from 3.0 to: 1 (按下s,输入要修改的时间(秒),回车即可) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1569 root 20 0 173m 8004 4536 S 0.2 0.8 0:05.54 vmtoolsd 1657 root 20 0 201m 7024 4088 S 0.2 0.7 0:02.40 ManagementAgent 3001 root 20 0 99972 4028 3056 S 0.2 0.4 0:00.92 sshd 1 root 20 0 19356 1584 1272 S 0.0 0.2 0:03.37 init
进程管理之htop
htop:
top的加强版,支持鼠标操作,相比top而言,使用更加人性化,灵活,可以使用方向键下上滚动选择进程,使用左右方向键左右移动查看跟多信息,而不是如top直接砍掉超出窗口大小的信息,另外,相比top的黑白电视般的画面,htop显得华丽不少
常用选项:
-d #:指定延迟时间间隔
-u USERNAME:显示指定用户的的进程
-s CLUME:以指定字段进行排序
子命令:
l:显示指定进程所打开的文件列表
s:跟踪选定进程的系统调用
t:以层级关系显示各进程状态
底部显示功能快捷键
使用帮助:
帮助信息面板
F2配置信息
顶部系统资源状态信息显示配置
进程属性的隐藏和显示配置
进程属性栏的进程属性选项配置
界面颜色配置
u:仅显示单个用户相关的进程
F6进程排序方式
其他快捷键排序方式:
P:cpu占用时间
M:内存占用时间
T:进程占用cpu时间总和
...
F3进程搜索(只匹配第一个符合条件的进程)
在底下的搜索框中输入进程的名字即可定位到“第一个”符合条件的进程
F4过滤器(只做模糊搜索)
底下Filter提示栏输入命令名字,即可显示所有符合条件的进程
F5树状显示进程(再次按下F5即可关闭树状显示)
可以根据USER用户,PRI优先级,NI nice值,VIRT进程虚拟内存,RES常驻内存...等进程排列
关于进程的属性标示符,可以参考top命令讲解
更多功能请亲自实践!
进程管理之dstat
dstat:系统资源监控工具
集vmstat,iostat,ifstat功能于一身,并且还有额外添加的一些特性,一顶仨,简直没朋友
dstat [-avf] [options] [delay [count]]
[-a]:cpu使用总量、磁盘总体读写、接口流量、页面调度、系统中断和上下文切换的次数
-v:显示进程状态信息、内存负载、页面调度、磁盘读写、系统中断和上下文切换
-f:显示cpu每颗核心的负载、所有单个磁盘负载、每个接口流量、页面调度、系统中断和上下文切换
常用选项:
-c:cpu使用信息
-C:显示指定cop核心负载
-p:显示集成状态信息
-m:内存使用信息
-d:磁盘使用信息
-n:网络接口信息
-r:IO设备读写信息
-g:paging,页面调度
-s:swapped相关数据
示例:
显示指定的cpu核心负载信息
连接相关:
--socket:显示所有socket连接
--tcp:tcp相关的socket
--udp:udp相关的socket
--raw:raw socket
--ipc: Inter-Process Communication进程通讯
示例:
列出各类负载最高:
--top-cpu:显示最占用cpu的进程
--top-mem:最占用内存的进程
--top-io:最占用IO的进程
--top-latency:延迟最大的进程
示例:
更多--top选项请查看man文档
dstat还可以将查看的信息以csv文件格式输出
使用 --output /path/to/file_name
dstat的强大之处还在于能够使用插件扩展其他监控功能,如监控MySQL, 以上为基础使用,更高级用法有待学习!