程序:程序是保存在外部存储介质(如硬盘)中的可执行代码和数据的静态集合

进程:进程是运行在CPU及内存中出于动态执行状态的计算机程序,每个程序启动后可以创建多个进程

例如web,大量用户同时访问是,httpd服务会创建多个进程来提供服务


1.查看进程

(1.ps命令:查看静态的进程统计信息(ProcessesStatistic)

    a:显示当前终端下的所有进程,包括其他用户的进程,与x选项结合是将显示系统中左右的进程信息

    u:使用以用户为主的格式输出进程信息

    x:显示当前用户所有终端下的进程信息

    -e:显示系统内的所有进程信息

    -l:使用长(long)格式显示进程信息

    -f:使用完整的(Full)格式显示进程信息

以上是ps命令常用选项,有些选项是不带“-”的,带上以后可能会有出入,习惯把上面的选项组合用如:ps aux 或 ps -elf 命令



ps aux 输出命令解释

# ps aux

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

root         1  0.0  0.2  19232  1576 ?        Ss   09:40   0:01 /sbin/init

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


USER:启动该进程的用户帐号名称

PID:该进程在系统中的数字ID号,唯一的

%CPU:占用CPU的百分比

%MEM:占用内存空间的百分比

VSZ:占用虚拟内存(swap空间)的大小

RSS:占用物理内存的大小

TTY:表明该进程在那个终端上运行。

STAT:显示了进程当前的状态,S(休眠),R(运行),Z(僵死),< (高级先级),N(低优先级),S(父进程),+(前台进程)。对于僵死状态的进程应该基于手动终止。

START:启动该进程的时间。

TIME:启动该进程的时间

COMMAND:启动该进程的命令名称


若执行ps -elf命令,则会以长格式显示所有进程,并且包含更丰富的内容,例如,输出信息中还包括PPID列(表示对应进程的父进程的PID号)

直接执行PS 不添加任何参数的话,只会显示当前正在运行的进程

由于执行命令以后显示的进程数量较多,需要借用管道符和grep 对显示的进程进行过滤,例如:查看bash进程

ps -elf | grep bash


(2.top命令:查看进程动态信息

top可以动态的查看进程信息,CPU,内存等系统资源的占用情况,默认情况下每三秒更新一次,top类似于windows系统的任务管理器。


top命令输出解释

系统任务(Tasks)信息:total 总进程数;running 正在运行的进程数;sleeping 休眠的进程数;stopped 终止的进程数;zombie 僵死无响应的进程数

CPU占用信息:us,用户占用;sy 内核占用;ni 优先级调度占用;id 空闲CPU;wa I/O等待占用;hi 硬件中断占用;si 软件中断占用;st 虚拟化占用,要了解空闲的CPU百分比,主要是看%id部分。

内存占用信息:total 总内存空间;used 已用内存;free 空闲内存;buffers 缓冲区域

交换空间占用:同上


(3.pgrep命令:查询进程信息

格式:

pgrep [参数] [进程名]

-l 查询名字

-U 查询用户

-t 查询运行在特定终端上的进程


(4.pstree命令:查看进程树

pstree命令可以输出liux系统中各进程的树形结构

格式:

pstree [参数] [用户名/服务名]

-p 选项使用时可以同时列出对应的PID号

-u 选项可以列出对应的用户名

-a 选项可以列出完整的命令信息


2.控制进程

(1.手动启动进程

进程可以分为前台运行和后台运行两种,前台运行需要等待运行完成后才可以运行下一个命令,后台运行的话,可以直接运行下一个命令。

怎么让进程在后台运行呢?在命令后面添加“&”,就可以了

例: service vncserver restart &


(2.挂起当前的进程(调入后台并停止执行)

Ctrl+z 当进程正在运行的时候按 Ctrl+z 组合键可以停止执行服务并调用到后台。


(3.查看后台的进程

jobs -l  查看隐藏的进程


(4.恢复后台运行的进程

恢复后继续在后台运行

bg [进程号](BackGrourd,后台),可以查看后进程来查看后台进程的编号。

fg [进程号](ForeGround,前台)


(5.使用kill终止进程运行

使用kill命令前,要使用进程的PID号作为参数

pgrep -l "ping"

kill 1

如果没有反映,就需要用 -9 参数强杀

kill -9 [进程号]


(6.killall

killall 可以通过用那个户名杀掉进程


(7.pkill杀掉指定的进程

格式:pkill [参数] [用户/终端号]

参数:-U  制定用户

      -t  指定终端

      -9  强杀


https://blog.51cto.com/0kaishi/1678162