1、什么是进程?

Linux系统中的几乎任何行动都会以进程的形式进行。进程就是已启动的可执行程序的运行实例,进程是系统中正在运行的一个程序,程序一旦运行就是一个进程,进程有以下组成部分:

1.已分配内存的地址空间;
2.安全属性,包括所有权凭据和特权;
3.程序代码的一个或多个执行线程;
4.进程状态;

2、进程的属性

  1. 进程ID(PID):是唯一的数值,用来区分进程;
  2. 父进程的ID(PPID);
  3. 启动进程的用户ID(UID)和所属的组ID(GID);
  4. 进程状态:分别是R(运行)、S(休眠)、Z(僵尸);
  5. 进程执行的优先级;
  6. 进程所连接的终端名;
  7. 进程资源占用:比如占用CPU、内存的大小;

3.进程的查看

  • 使用ps命令查看进程:

1.常用的参数:
a:显示跟当前终端关联的所有进程
u:基于用户的格式显示(U:显示某用户ID所有的进程)
x:显示所有进程,不以终端机来区分

在这里插入图述
以上参数详解①:
USER: 此进程有效用户;
PID:进程ID;注:在Centos5/6中PID为1的进程是init;在Centos7中则是systemd
%CPU:占用CPU的百分比;
%MEM:占用内存的百分比;
VSZ:占用虚拟内存;
RSS:占用常驻内存大小;
TTY:表明线程在哪个终端上运行,如果显示?表示与终端无关的进程,这种一般为内核态进程。另外tty1到tty6是本机上面的登入者程序,若为pts/0等,则表示运行在虚拟终端上的进程;
STAT:该进程目前的状态。Linux进程有5种基本状态:

		R:程序正在运行或者可被运行
		S:可中断的睡眠
		T:停止状态
		Z:僵尸进程(程序已经终止,但是父进程却无法正常地终止它)
		D:不可中断的睡眠

5个基本状态后,还显示一些字母或者符号,如上图②中的所示,它们的含义如下:

		<:表示高优先级的进程
		N:低优先级的进程
		s:系统控制进程(会话进程的领导者)
		l:多线程进程
		+:进程运行在前台

START:该process被触发启动的时间。
TIME:该process实际使用CPU运作的时间。
COMMAND:该程序的实际指令。带[]的为内核态线程,不带[]的则为用户态。
例1:查看进程状态
在这里插入图片描述
在另一个终端上执行:
在这里插入图片描述
在vim test.txt这个终端上按下Ctrl+z
在这里插入图片描述
在另一个终端上执行:
在这里插入图片描述
注:
Ctrl+z 是发送SIGTOP信号,挂起一个进程。将作业放置到后台(暂停)
Ctrl+c 是发送SIGINT信号,终止一个进程。

Ctrl+d 不是发送信号,而是表示一个特殊的二进制值。

2.ps常用的参数:
-e 显示所有进程
-f 显示完整格式输出
我们常用的组合: ps -ef
在这里插入图片描述
ps -ef这个命令中的参数跟上面差不多一个意思,只不过ps aux 是用BSD的格式来显示进程,而ps -ef 是用标准的格式显示进程,其中:
UID:启动这些进程的用户
PPID:父进程的进程号
C:进程生命周期中的CPU利用率

  • 使用uptime命令查看系统负载
    在这里插入图片描述
    弹出的消息含义如下:
22:38:34当前时间
up 3 days,9:24系统运行时间,说明服务器连续运行3天了
load average:0.00,0.01,0.05系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5 分钟、15分钟前到现在的平均值。
4 users当前登录用户数

CPU和内存类

  • top命令
    在这里插入图片描述
    可以看到top命令第一行弹出的内容和uptime命令弹出的消息一样,以下是参数详解:(当有多个CPU时这些内容可能会超过两行(按1查看))

    asks:97 total:进程总数
    running:正在运行的进程数
    sleeping:睡眠的进程数
    stopped:停止的进程数
    zombie:僵尸进程数
    Cpu(s): 1.3 us:系统用户进程使用CPU百分比
    sy:内核中的进程占用CPU百分比
    ni:用户进程空间内改变过优先级的进程占用CPU百分比
    id :空闲CPU百分比
    wa:CPU等待I/O完成的时间总量
    hi:硬件中断时间
    si:软件中断时间,占用率过高的时候,很可能某些外设出现问题,导致产生大量的irq请求,这时候通过检查 /proc/interrupts 文件来深究问题所在;
    st:被偷走的时间,在虚拟机情况下才有意义,因为虚拟机下 CPU 也是共享物理 CPU 的,所以这段时间表明虚拟机等待 hypervisor 调度 CPU 的时间,也意味着这段时间 hypervisor 将 CPU 调度给别的 CPU 执行,这个时段的 CPU 资源被“stolen”了
    Mem:1014864 total:物理内存总量,total = free + used + buff/cache
    free空闲内存量
    used已使用的内存量
    buff/cache用作内核缓存的内存量。和free -k 一个意思
    Swap交换区总量
    avail Mem总的可利用内存量

    注:如果swap分区被使用,那么表示你的内存有点紧张哦!

    名称含义
    PR优先级
    NI进程优先级。也就是nice值,负值表示高优先级,正直表示低优先级。
    VIRT虚拟内存。
    RES常驻内存,是进程使用的物理内存,实际使用的内存。
    SHR共享内存大小,单位是kb,计算某个进程所占的物理内存大小:RES-SHR
  • top快捷键:

     M:根据驻留内存大小进行排序
     P:根据CPU使用百分比进行排序
     T:根据累计时间进行排序
     l:是否显示平均负载和启动时间
     t:是否显示进程和CPU状态相关信息
     m:是否显示内存相关信息
     c:是否显示完整的命令信息
     q:退出top
     k:终止某个进程
     数字1:显示每个内核的CPU使用率
     u/U:指定显示的用户
    

网络类

  • netstat命令

显示自系统启动以来各个协议的总体数据信息。通常用来检测端口和连接信息。

netstat -antup # 显示所有TCP连接
netstat -lntp #列出本地所有TCP监听套接字,不推荐跟-a参数一起使用
  • sar

该命令主要用于收集、报告或保存系统的活动信息,CPU、磁盘、页面交换有关都管。

sar -n TCP,UDP 1 1 # 统计网络信息
  • tcpdump

tcpdump是linux上的抓包命令,类似win中的wireshark。使用 tcpdump 进行抓包,当问题复现(比如日志显示或者某个状态显现)的时候,就可以结束抓包了,而且 tcpdump 本身带有 -C/-W 参数,可以限制抓取包存储文件的大小,当达到这个这个限制的时候保存的包数据自动 rotate,所以抓包数量总体还是可控的。此后将数据包拿下线来,用 wireshark 想怎么看就怎么看,岂不乐哉!tcpdump 虽然没有 GUI 界面,但是抓包的功能丝毫不弱,可以指定网卡、主机、端口、协议等各项过滤参数,抓下来的包完整又带有时间戳,所以线上程序的数据包分析也可以这么简单。

  • kill 命令关闭进程

使用kill -l列出所有支持的信号
在这里插入图片描述
关闭进程三个命令:kill、killall、pkill,用法:

kill 进程号 —>关闭单个进程

killall 通过进程名终止进程
-w #等待所有被终止的进程死去,如果进程停留在僵死状态,那么killall可能会永久等待
-u #终止指定用户的进程

pkill 通过进程名终止指定的进程,可杀死指定进程及子进程
-t #杀死指定终端的进程
-u #杀死指定用户的进程
我们常用的信号有:

	1) SIGHUP   重新加载配置
	2) SIGINT 键盘中断 crtl+c
	3) SIGQUIT 退出
	9) SIGKILL 强制终止
	15) SIGTERM 终止(正常结束),缺省信号
	18) SIGCONT 继续
	19) SIGSTOP 停止
	20) SIGTSTP 暂停 crtl+z
Logo

更多推荐