Linux进程介绍
- linux程序与进程
- Linux进程基础
- linux进程管理工具
- pstree命令
- pgrep命令
- killall,kill
- htop
- vmstat命令
linux程序与进程
程序是一组指令及参数的集合,按照指定的逻辑控制计算机运行用来完成特定任务。
进程则是运行这的程序,是操作系统执行的基本单位,是程序运行的过程,动态,有生命周期及运行状态。
- 从用户的角度来看进程是程序的一次动态执行过程。
- 从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。
- 进程是资源分配的最小单位。
- 每一个进程都有自己独立的地址空间与执行状态。
- 像Linux这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程。
程序和进程的区别: - 进程是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程。
- 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程。
- 进程还具有并发性和交往行,而程序却是封闭的。
进程和线程的区别: - 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
- 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
Linux进程基础
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
父子进程的关系:子进程是由一个进程所产生的进程,产生这个子进程的进程为父进程 在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。父进程终止子进程自然终止。
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出exit信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
linux进程管理工具
pstree命令
pstree:用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚地看出来是谁创建了谁。
-A:各进程树之间链接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p:同时列出每个进程的PID
-u:同时列出每个进程的所属账号名称
ps命令:
-A:所有的进程均显示出来,与-e具有同样的效用;
-a:显示现行终端机下的所有进程,包括其他用户的进程;
-u:以用户为主的进程状态;
-x:通常与a这个参数一起使用,课列出较完整信息;
- USER:该进程属于哪个使用者账号
- PID:该进程的进程ID号
- %CPU:该进程使用掉的CPU资源百分比
- %MEM:该进程所占用的物理内存百分比
- VSZ:该进程使用掉的虚拟内存量
- RSS:该进程占用的固定的内存量
- TTY:该进程是在哪个终端机上边运作,若与终端机无关,则显示?。另外,tty1-6是本机上面的登入者程序,若为pts/0等等的,则表示为由网络连接进主机的程序。
- STAT:该程序目前的状态,主要的状态有:
- R:该程序目前正在运行,或者是可被运作;
- S:该程序目前正在睡眠当中,但可被某些讯号唤醒。
- T:该程序目前正在侦测或者是停止了;
- Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成Zombie程序的状态。
- START:该进程被触发启动的时间
- TIME:该进程实际使用CPU运作的时间
- COMMAND:该程序的实际指令
pgrep命令
pgrep:经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程。
-l:同时显示进程名和PID
-o:当匹配多个进程时,显示进程号最小的那个
-n:当匹配多个进程时,显示进程号最大的那个
注:进程号越大,并不一定意味着进程的启动时间就越晚
killall,kill
linux中killall命令用于杀死指定名字的进程。kill用来杀死指定进程的PID的进程。
杀死所有同名进程:
killall命令:
-Z:只杀死拥有scontest的进程
-e:要求匹配进程的名称
-g:杀死进程组而不是进程
killall nginx
killall -9 bash
kill命令:
-p 指定kill命令只打印相关进程的进程号,而不发送任何信号。
-s:指定发送信号。
-u:指定用户。
-l:列出所有信号名称。
说明:
- 1 终端断线
- 2 中断(同ctrl+c)
- 3 退出(同ctrl+\)
- 15 终止
- 9 强制终止
htop
监控软件Htop,称之为top的增强版,相比top有着很多自身的优势:
- 两者相比起来,top比较繁琐
- 默认支持图形界面的鼠标操作
- 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行
- 杀进程时不需要输入进程号等
再图中界面划分了四个区域,其中:
左上区域:显示了CPU,物理内存和交换分区的信息;
右上区域:显示了任务数量,平均负载量和连接运行时间等信息;
进程区域:显示出当前系统中的所有进程,这里同top显示一致。
提示区域:也就是最后一行,会有f1-f10的用法说明。
vmstat命令
vmstat命令是最常见的linux/unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,io读写情况。
用法:vmstat [-V] [-n] [-S unit] [delay[count]]
上图中vmstat 2 6 2代表每两秒采集一次 6代表采集次数。