一、名词解释
1、什么是进程(what is process)?
答:进程是程序运行的过程,伴有动态,生命和运行状态。(组成:1.已分配内存的地址空间 2.安全属性,包括所有权凭据和特权 3.程序代码的一个或多个执行线程 4.进程状态。通俗来说即进程会有:进程标识PID和PPID;状态;disk IO:需要分配;mem:需要分配;cpu:需要分配;net:需要分配。)
2、什么是进程的生命周期(process life cycle)?
答:父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。PID和父进程PPID是子进程环境的元素,任何进程都可以创建子进程。子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
3、进程状态(process states)?
答:在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
有runing、sleeping、stopped、zombie(僵尸进程)四种状态。
二、查看进程
1、静态查看进程ps
1.1 静态查看进程 ps
[root@tianyun ~]# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128096 6708 ? Ss 16:20 0:01 /usr/lib/systemd/systemd
————————————————————————————
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存
TTY: 进程运行的终端 //可以开启vim 查询到终端名称
STAT: 进程状态 man ps (/STATE)
———————————————————————————
R 运行
S 可中断睡眠 Sleep,(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
D 不可中断睡眠,(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
T 停止的进程
Z 僵尸进程
X 死掉的进程
————————————————————————————
[了解]
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
————————————————————————————
START: 进程的启动时间 //可以开启vim ,在用date验证。
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
1.2 ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状态
ps x 不以终端机来区分
1.3 按占比升降序排列
示例1:[root@tianyun ~]# ps aux --sort %cpu |less //--sort排序,升序(小到大)
示例2:[root@tianyun ~]# ps aux --sort -%cpu |less //-%CPU降序(-表示降序)
示例3:[root@tianyun ~]# ps aux --sort rss |less //以驻留内存升序排序
示例4:[root@tianyun ~]# ps aux --sort -rss |less
1.4 自定义显示字段
[root@tianyun ~]# ps axo user,pid,ppid,%mem,command //xo指定列显示
[root@tianyun ~]# ps axo user,pid,ppid,%mem,command |grep httpd
root 8310 1 0.1 /usr/sbin/httpd
apache 8311 8310 0.0 /usr/sbin/httpd
apache 8312 8310 0.0 /usr/sbin/httpd
apache 8313 8310 0.0 /usr/sbin/httpd
apache 8314 8310 0.0 /usr/sbin/httpd
apache 8315 8310 0.0 /usr/sbin/httpd
apache 8316 8310 0.0 /usr/sbin/httpd
apache 8318 8310 0.0 /usr/sbin/httpd
apache 8319 8310 0.0 /usr/sbin/httpd
root 9236 6798 0.0 grep httpd
-----------------------------------------------------------
[root@tianyun ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less //针对某些程序,显示某些列,再进行排序。简洁明了
1.5 查看指定进程的PID,四种方法(该处指定进程为sshd)
第一种。cat
[root@localhost ~]$ cat /run/sshd.pid
830
第二种。ps
[root@localhost ~]# ps aux |grep sshd
root 10180 0.0 0.0 7224 1024 ? Ss 16:00 0:00 /usr/sbin/sshd
第三种。pgrep
[root@localhost ~]# pgrep -l sshd
10180 sshd
[root@localhost ~]# pgrep sshd
10180
第四种。pidof
[root@localhost ~]# pidof sshd
10180
top -d 1 -p 10180 (动态查看sshd的进程信息)
1.6 查看进程树
[root@localhost ~]# pstree
2.1 动态查看ps进程
2.1.1 上半部分:
第一部分:系统整体统计信息
top - 11:45:08 up 18:54, 4 users, load average: 0.05, 0.05, 0.05
//当前时间;系统运行时间,时:分;当前登录用户数;系统负载,即任务队列的平均长度。三个数值分别为1分钟 、5分钟 、15分钟
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
total 进程总数 running 正在运行的进程数 sleeping 睡眠的进程数 stopped 停止的进程数 zombie 僵尸进程数
Cpu(s):
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi:硬件CPU中断占用百分比
si:软中断占用百分比
st:虚拟机占用百分比
KiB Mem : 3865520 total, 1100000 free, 580268 used, 2185252 buff/cache
KiB Swap: 4063228 total, 4063228 free, 0 used. 2917828 avail Mem (avail Mem表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来。)
负载加权值解释:小于1正常
load average: 0.86, 0.56, 0.78 系统最近 1分钟,5分钟,15分钟平均负载
关于buffers的小实验:做个小实验,观察缓存的作用。
time cp -rf /etc /tmp/etc1
time cp -rf /etc /tmp/etc1
注意观察两次复制的时间,大大缩小,是因第二次的数据已经到了buffer了。在top的buffer/cache会有体现。
2.1.2下半部分:
字段介绍
虚拟内存(VIRT):virtual memory usage :(1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量需要这些内存,但并没有占满。)
常驻内存(RES):resident memory usage :(1、进程当前使用的内存大小 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反用了多少内存)。
共享内存(SHR):shared memory:(1、除了自身进程的共享内存,也包括其他进程的共享内存 2、计算某个进程所占的物理内存大小公式:RES – SHR)
3.1 进程信息
命令
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
< 向前
> 向后
z 彩色,Z设置彩色,使用数字调整
W 保存top环境设置
4.1信号种类
kill -9 pid 强制杀死
kill -1 pid 重新加载配置,进程不会死
kill -15 pid 正常结束
kill -18 pid 继续
kill -19 pid 停止
三、nice优先级设置(人为可设置nice范围-20到19)
法一 :nice -n -5 sleep 6000 &
发二 :top -d 1 -p pid
按r键 //调整进程的优先级(Nice Level) (-20高) ---0--- (19低)(直接回车)
回车 //确认该程序。
-20
回车 //确认修改nice值。
如果直接使用top,使用R调整nice值,先输入PID,再输入nice值即可。
法三:renice -20 pid