进程及进程的管理

首先得理解进程的含义,进程不同于程序,进程是程序的一次运行实例,当一个程序运行时,就会产生相应的进程,因此,程序是死的,而进程是活的。一个进程可以包含若干线程,线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。

进程是由内核进行管理的,内核在正常启动并且全面接管硬件资源之后,会创建一个Init的进程;而这个名叫init的进程负责用户空间的进程管理;此外,每个进程的组织结构是一致的。

CentOS5及以前:SysV Init,Classic Init,这种方式有缺陷:在启动系统时,Init通过写脚本的方式来创建各个子进程;利用shell来实现,因此其执行速度非常慢;导致系统的启动速度和进程的创建速度都非常慢;

CentOS6:upstart,有Ubuntu研发的新型的Init进程;可以并行的启动某些有关联的服务进程,在创建进程的时候,可以多线创建进程;如果有多个CPU或这有多颗CPU核心的话,其进程的创建速度会有比较明显的变化;第一个进程名称仍然是init;

CentOS7:Systemd,参考了MAC OS的启动逻辑开发一款新版的init程序;其可以以其自身独立完成整个操作系统的启动工作;也就是说,在开机并加载内核之后,只需要启动一个systemd进程就可以将其他各服务进程启动起来,从而引导整个系统启动;

由此可以看出,centos7创建进程的方式是最快的,也就是为什么centos7开机速度快的根本原因。

除了init进程之外,其他的各个进程都是由其父进程创建的;任何的进程的父子关系都保存在task struct中,每个子进程的生命周期也由父进程决定,于是会出现一种特殊情况,就是当父进程“死亡”之后,其子进程会一直存在于内存中,成为“僵尸”,这对系统来说必定是有害的。

每个父进程通过fork()系统调用,复制自身的数据给子进程使用;这种复制方式不是立即复制,而是写时复制(CoW);所谓写时复制,就是只有进程空间的各段内容要发生改变时,才会将父进程的内容复制给子进程。

进程的优先级为0-139中的140个整数,其中1-99为实时优先级,数字越大优先级越高;在系统启动时启动的进程;而100-139为静态优先级,数字越小优先级越高;在用户执行某些应用程序的时候启动的进程;

更改优先级的方法为使用nice值,nice值的范围为-20-19,默认的nice值为0,只有管理员才能使用负整数的nice值,以提升进程的优先级;而普通用户只能使用正整数的nice值,以降低进程的优先级;

进程的类型有以下几种分类:

按照进程的启动方式:

守护进程:

Daemon,通常是在系统引导的过程被启动的,与任何的终端无关;也可以通过终端启动;

用户进程:

用户登录到系统之后,通过终端启动的进程;

按照进程的运行位置:

前台进程:

在进程启动之后,进程一直占用标准输出或者标准输入或者同时占用标准输出和标准输入;

后台进程:

在进程启动之后,进程不占用标准输出和标准输入;

按照进程对于资源消耗:

CPU-Bond:非交互式的进程;

IO-Bond:编辑器等各种交互式进程;

Linux系统上进程管理的相关命令:

1,pstree,顾名思义,就是将子父进程以树的方式显式出来

2,ps,报告一个当前进程的快照,其后接的选项有三种风格,UNIX,BSD,和GNU,以下是各选项的意义:

BSD风格的选项:

a:显示所有与终端相关的进程;

x;显示所有与终端无关的进程;

u:显示发起进程的用户的账户名称;

常用的选项组合之一:aux

ps aux命令显示的结果中各字段的含义:

USER:进程的所有者

PID:进程标识符

%CPU:进程占用的CPU处理时间的百分比;

%MEM:进程占用的物理内存的百分比;

VSZ:虚拟内存集(可交换内存集)

RSS:常驻内存集

TTY:进程与哪个终端相关;?表示与终端无关;

STAT:

R:running,正在运行的进程;

S:interuptible sleeping,可中断的睡眠状态;

D:uninteruptible sleeping,不可中断的睡眠状态;Disk Block;

T:Trace/STOPPED,被跟踪/已停止;

Z:Zombie,僵死态;

+:前台进程

l:包含多线程的进程

<:高优先级进程

N:低优先级进程

s:session leader,有子进程的父进程;

START:进程开始执行的时候时间戳

TIME:进程累计的CPU占用时间;

COMMAND:启动进程的命令行参数;

UNIX风格的选项:

-e:显示所有进程

-f:显示完整格式的进程信息

-F:显示完整格式的进程信息,与-f几乎相同;

常用的选项组合之二:-ef

PPID:父进程PID

C:表示进程占用的CPU时间的百分比

常用的选项组合之三:-eF

SZ:虚拟内存集

RSS:常驻内存集

PSR:表示此进程在哪个CPU核心上运行;

-H:以层级机构显示进程的父子关系;

常用的选项组合之四:-eFH

o|-o field1,field2,...:以自定义字段的方式显示进程相关信息;

field:pid, ppid, ni, rtprio, psr, pcpu, stat, comm, user, tty, vsz, rss,...

常用的选项组合之五:-eo | axo field1,field2,...

3,pgrep,pkill,根据进程名称或其他属性查看进行或向进程发送信号;

pgrep [options] pattern

pkill [options] pattern

常用选项:

-u uid:显示进程的有效用户

-U uid:显示进程的真实用户

-t TERM:显示与指定的终端相关的进程

-l:显示进程名称

-a:显示进程的完整的命令行参数

4,pidof,示指定进程名称对应的进程ID

5,top:

剩下的命令待续!

时间: 2025-01-01 08:36:04

进程及进程的管理的相关文章

linux学习笔记——进程的查看和管理、systemctl命令

###########################################################################第七单元##########################################################################1.什么是进程.线程进程是一个具有独立功能的程序关于某个数据集合的一次运动活动,进程也就是系统正在做的事情线程是进程作为分配资源的基本单位. 2.进程状态运行休眠停止继续结束僵尸进程(已经结束了

漫漫运维路——进程基本概念及管理相关工具介绍

进程的概念     进程是系统进行资源分配的基本单位,当一个应用程序启动时就向内核发起请求,然后由进程创建出新的进程,此时应用程序就启动了.创建进程的进程此时被称作父进程,而被创建出来的进程被称为子进程,此外子进程不可脱离父进程而存在,当一个父进程被销毁时,其子进程也会一并被销毁. 在Linux中,进程被内核所管理,内核为每一个进程虚拟处一块内存空间,所以当进程被调度到内存中执行时,只能看到自己和内核,从而避免进程之间发生冲突,影响其他进程的运行.但是进程独立并不代表其不能互相通信,当进程之间需

Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六)

日期 内核版本 架构 作者 GitHub CSDN 2016-05-29 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的创建 前言 Linux下有3个特殊的进程,idle进程(PID=0), init进程(PID=1)和kthreadd(PID=2) * idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产

C++中的结构体,C管理进程代码,C++管理进程代码,C语言中的联合体

 1.C++中的结构体 #include<iostream> struct lstruct { int num; }; struct MyStruct { int num; double db = 10.8;//可以有默认的值 //MyStruct sx;//拒绝内部定义自己,也就是说不能够内部指向自己 MyStruct *pnext; MyStruct *phead; lstruct  l1; void boss()  //可以有方法 { } }; struct MyStructA {

linux进程的查看与管理

一.进程的查看与管理1.查看a.ps 静态查看格式:ps [选项]选项:a:与终端相关的x:与终端无关的u:以用户为中心-e:显示所有进程-f:显示完整格式程序信息-l:显示完整的列-H: 以进程层级格式显示进程相关信息 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND VSZ: Virtual memory SiZe,虚拟内存集 RSS: ReSident Size, 常驻内存集 STAT:进程状态 R:runn

进程(二) —— 进程控制块

进程(二) —— 进程控制块 进程控制块(PCB, Process Control Block) 定义: 操作系统管理和控制进程运行所用的信息集合 操作系统用 PCB 来 描述进程的 基本情况 以及 运行变化 的过程 PCB是进程存在的唯一标志 每个进程都在 操作系统 中有一个对应的PCB 进程控制块的使用 进程创建 生成 该进程的 PCB 进程终止 回收它的PCB 进程的组织管理 通过对PCB的组织管理来实现 进程控制块内容 进程标志信息 处理机现场保存 进程控制信息 进程控制信息 调度和状态

进程篇—进程整理(转)

一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下: kthreadd进程: 是所有内核进程的父进程 init进程 : 是所有用户进程的父进程(或者父父进程) zygote进程 : 是所有上层Java进程的父进程,另外zygote的父进程是init进程. 1.2 重量级进程 在Android进程中,有3个非常重要的进程(

linux内核之进程的基本概念(进程,进程组,会话关系)

进程是操作系统的一个核心概念.每个进程都有自己唯一的标识:进程ID,也有自己的生命周期.一个典型的进程的生命周期如图4-1所示. 进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家族树.除此以外,进程还有其他层次关系:进程.进程组和会话. 进程组和会话在进程之间形成了两级的层次:进程组是一组相关进程的集合,会话是一组相关进程组的集合. 这样说来,一个进程会有如下ID: ·PID:进程的唯一标识.对于多线程的进程而言,所有线程调用getpid函数会返回相同的值. ·PGID:进

Linux - 进程 (二) 进程创建

详细见:https://github.com/ZhangzheBJUT/linux 一 进程概述 一个进程都由另一个称之为父进程的进程启动,被父进程启动的进程叫做子进程.Linux系统启动时候,它将运行一个名为init的进程,该进程是系统运行的第一个进程,它的进程号为1,它负责管理其它进程,可以把它看做是操作系统进程管理器,它是其它所有进程的祖先进程.系统中的进程要么是由init进程启动,要么是由init进程启动的其他进程启动. 使用ps命令输出中的PPID栏给出的是父进程的进程ID,它是启动这

Python全栈开发——线程与进程(进程)

三 multiprocessing模块 Multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency,effectively side-stepping the Global Interpreter Lock