Linux 进程及作业管理

==============================================================================

概述:

我们在实际的运维工作中经常要对服务器做各种监控,以了解其相关状态,比如,CPU利用率,磁盘空间利用率,等等,这就需要我们了解相关的数据并学会使用各种工具来分析数据。本章就将总结Linux系统中进程管理和作业管理的相关命令、参数和工具,包括:进程的相关定义、分类、状态以及进程查看和管理工具,如:pstree、ps、pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill ,以及作业管理的相 关内容:job, bg, fg, nice,renice

==============================================================================

第一篇:进程管理

进程的相关概念

1.相关定义:

★内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等;

★进程定义:通俗的来说进程是运行起来的程序。唯一标识进程的是进程描述符(PID),在linux内核中是通过 task_struck和task_list来定义和管理进程的 ;

◆task struct:Linux内核存储进程信息的数据结构格式;

◆task list:多个任务的的task struct组成的链表;

★进程Process:

运行中的程序的一个副本,是被载入内存的一个指令集合;进程ID(Process ID,PID)号码被用来标记各个进程;

UID、GID、和SELinux语境决定对文件系统的存取和访问权限;

通常从执行进程的用户来继承;

存在生命周期;

2.进程创建:

★init:第一个进程,由内核创建剩余所有的进程都是有父子关系的

★进程:都由其父进程创建,COW(写实复制)fork(), clone()

★创建过程:系统首先以fock的方式复制(cow)一个与父进程相同的进程,这个进程与父进程唯一的差别就是PID不同,但是这个进程还会多一个PPID的参数,PPID就是父进程的程序识别码PID;

然后新产生的进程开始加载实际要运行的程序进行执行。

3.进程优先级:

★优先级:

☉进程的优先级是用数字0-139来表示的,分为两类:99-1:实时优先级,由内核维护(数字越大,优先级越高)

100-139:静态优先级,使用nice值来调整(数字越小,优先级越高);

☉Nice值-20,19对应静态优先级100-139

☉Big o时间复杂度,用时和规模的关系

O(1) :无论复杂度多大,解决问题所消耗的时间是相同的,是最理想的状态。

O(logn), O(n)线性,O(n^2)抛物线,O(2^n)

4.进程内存:

★进程内存

☉Page Frame:页框,用来存储页面数据,存储Page 4k;

☉LRU:

Least Recently Used 近期最少使用算法,释放内存;内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。

☉物理地址空间和线性地址空间:

☉MMU(内存管理单元):负责转换线性和物理地址MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址以及提供硬件机制的内存访问授权,多用户多进程操作系统。

5.IPC 进程间通信:

★IPC:进程间通信 Inter Process Communication在计算机网络体系中,主机与主机之间的通信,实质上是主机进程与主机进程之间的通信,也就是进程间的通信;

☉同一主机上:signal:信号指令;

shm:shared memory 共享内存空间;

semophore:信号量,一种计数器;

☉不同主机上:rpc:remote procedure call (远程过程调用)

socket:套接字,IP和端口号

6.Linux内核及进程类型:

★Linux内核:抢占式多任务

★进程类型:

根据进程与终端的关系可以分为:

☉守护进程:daemon,在系统引导过程中启动的进程,和终端无关的进程;

☉前台进程:跟终端相关,通过终端启动的进程;

注意:两者可相互转化

7.进程状态及进程的分类:

★进程状态:

进程被内核调度的过程中的状态可以分为:

◆运行态:running

◆就绪态:ready

◆睡眠态:可中断:interruptable

不可中断:uninterruptable,(通常是指被IO阻塞的过程,等待IO满足之前无法继续运行。)

◆停止态:stopped,暂停于内存中,但不会被调度,除非手动启动;

◆僵死态:zombie,结束进程,父进程结束前,子进程不关闭;

★进程的分类:CPU-Bound:CPU密集型,非交互;

IO-Bound:IO密集型,交互;

◆根据在linux不同模式下运行分为:核心态:这类进程运行在内核模式下,执行一些内核指令(Ring 0)。

用户态:这类进程工作在用户模式下,执行用户指令(Ring 3)。如果用户态的进程要执行一些核心态的指令,此时就会产生系统调用,系统调用会请求内核指令完成相关的请求,就执行的结果返回给用户态进程。

8.进程与线程的关系:

★进程与线程的关系:进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位;

线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源;

进程——资源分配的最小单位,线程——程序执行的最小单位

从函数调用上来说,进程创建使用fork()操作;线程创建使用clone()操作

参考资料:

《Linux内核设计与实现》《深入理解Linux内核》

进程的系统管理工具

★Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill   pkill, job, bg, fg, nohup

★不同发行版上的 init 程序:CentOS 5:SysV init

CentOS 6:upstart

CentOS 7:systemd

1.pstree命令及/proc 内核中的状态信息;

★作用:pstree-display a tree of processes(显示查看进程树)

★/proc:内核中的状态信息;

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

☉内核参数:可设置其值从而调整内核运行特性的参数,在/proc/sys/下;

状态变量:其用于输出内核中统计信息或状态信息,仅用于查看;

☉参数:模拟成文件系统;

☉进程:/proc/#:(# 为 PID)

★启动进程的方式:系统启动过程中自动启动:与终端无关的进程;

用户通过终端启动:与终端相关的进程;

CentOS 6 和 CentOS 7 的区别如下:# centos 6 进程树如下

[root@CentOS6 ~]# pstree

init─┬─NetworkManager───{NetworkManager}

├─abrtd

├─acpid

├─atd

├─auditd───{auditd}

├─automount───4*[{automount}]

├─console-kit-dae───63*[{console-kit-da}]

├─crond

├─cupsd

├─dbus-daemon

├─hald─┬─hald-runner─┬─hald-addon-acpi

│      │             └─hald-addon-inpu

│      └─{hald}

├─master─┬─pickup

│        └─qmgr

├─6*[mingetty]

├─modem-manager

├─polkitd

├─portreserve

├─rpc.statd

├─rpcbind

├─rsyslogd───3*[{rsyslogd}]

├─sshd───sshd───bash───pstree

├─udevd───2*[udevd]

├─wpa_supplicant

└─xinetd

# centos 7

[root@centos7 ~]# pstree

systemd─┬─NetworkManager─┬─dhclient

│                └─2*[{NetworkManager}]

├─2*[abrt-watch-log]

├─abrtd

├─agetty

├─alsactl

├─atd

├─auditd─┬─audispd─┬─sedispatch

│        │         └─{audispd}

│        └─{auditd}

├─automount───4*[{automount}]

├─chronyd

├─crond

├─cupsd

├─dbus-daemon

├─gssproxy───5*[{gssproxy}]

├─lsmd

├─lvmetad

├─master─┬─pickup

│        └─qmgr

├─polkitd───5*[{polkitd}]

├─rsyslogd───2*[{rsyslogd}]

├─smartd

├─sshd───sshd───bash───pstree

├─systemd-journal

├─systemd-logind

├─systemd-udevd

├─tuned───4*[{tuned}]

└─wpa_supplicant

2.ps:显示系统当前进程的运行情况;

★ps:查看进程信息

☉语法:ps [OPTION]...

☉支持三种选项:UNIX选项:如 -a

BSD选项:如 a

GUN选项:如 --help

◆选项和参数

默认显示当前终端中的进程;a:所有与终端相关的进程;

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

u:显示进程所有者的信息;

f:显示进程的父进程;

o:属性… 选项显示定制的信息:

☉常见组合

◆aux

首行代表的含义如下:

◆- ef-e:显示所有进程

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

首行代表的含义如下:

◆-eFH-F: 显示更完整格式的进程信息

C:cpu utillization(cpu使用率)

PSR:运行于哪颗cpu之上

-H: 以进程层级格式显示进程相关信息

◆-eo axoo field1,field2...:自定义要显示的字段,以逗号分隔

常用的字段:pid,ni,pri,pcpu,stat,comm,tty,ppid

ni:nice值

priority:优先级

psr:processor, CPU编号

rtprio:实时优先级

演示:[root@CentOS6 ~]# ps

PID TTY          TIME CMD

3614 pts/1    00:00:00 bash

5905 pts/1    00:00:00 ps

[root@CentOS6 ~]# ps a

PID TTY      STAT   TIME COMMAND

1921 tty1     Ss+    0:00 /sbin/mingetty /dev/tty1

1923 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2

1925 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3

1927 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4

1929 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5

1931 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6

3614 pts/1    Ss     0:00 -bash

5907 pts/1    R+     0:00 ps a

3.搜索进程;

★ps 选项| grep (最灵活的方式)

★pgrep,pkill按预定义的模式检索,显示指定的进程信息;

☉语法:pgrep [options] patter

☉选项:-u uid:effective user,生效者

-U user:real user,显示以指定用户身份运行的进程;

-t terminal:与指定终端相关的进程;

-l:显示pid和进程名;

-a:显示完整格式的进程名;

-P pid:显示此进程的子进程;

直接按模式搜索:

★pidof 命令根据进程名取其pid

语法:pidof PROGRAM(给定命令行程序)

演示:

1.使用grep 过滤[root@CentOS6 ~]# ps aux |grep postfix

root       1844  0.0  0.3  80896  3440 ?        Ss   09:08   0:00 /usr/libexec/postfix/master

postfix    1855  0.0  0.3  81144  3440 ?        S    09:08   0:00 qmgr -l -t fifo -u

postfix    5952  0.0  0.3  80976  3404 ?        S    22:28   0:00 pickup -l -t fifo -u

root       5992  0.0  0.0 103320   844 pts/1    S+   22:46   0:00 grep postfix

2.pgrep使用[root@CentOS6 ~]# pgrep -U postfix

1855

5952

[root@centos7 ~]# pgrep -U postfix -l

1180 qmgr

2896 pickup

[root@centos7 ~]# pgrep -U postfix -a

1180 qmgr -l -t unix -u

2896 pickup -l -t unix -u

[root@centos7 ~]# ps -eFH |grep sshd

root       2236   1088  0 36394  5572   0 14:34 ?        00:00:02     sshd: root@pts/1

[root@centos7 ~]# pgrep -P 1088

2236

[root@centos7 ~]# pgrep ssh  #按ssh 开头的的进程搜索

1088

2236

[root@centos7 ~]# pgrep ss

821

1088

2236

3.pidof 命令[root@centos7 ~]# pidof sshd

2236 1088

linux进程及作业管理实验,Linux 进程及作业管理(一)相关推荐

  1. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)

    Linux 进程及作业管理 概述: 一.进程的相关概念: 1.相关定义:内核的功用:   进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等: 通俗的来说进程是运行起来的程序.唯一标识进程的 ...

  2. linux共享存储通信实验,Linux进程通信——共享存储

    共享内存是进程间通信最有用的方式,也是最快的IPC形式.共享内存是说:同一块内存被映射到多个进程的地址空间.但是共享内存并不提供同步机制,因此需要互斥锁或者信号量.使用共享内存唯一需要注意的是:当前如 ...

  3. linux下编辑文件实验,Linux实验_修改

    java资料 实验一 Linux的认识 一.实验的目的要求 通过实验,使学生初步熟悉Linux环境,了解Linux的目录结构和文件,了解Linux命令的特点,能够完成登录和密码修改工作. 二.实验内容 ...

  4. linux下编辑文件实验,Linux上最常用的文本编辑器vi/vim使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interfa ...

  5. linux下的程序开发实验,Linux程序实验.docx

    Linux程序实验 <Linux程序设计>教学大纲Linux Program Design课程类别:学科专业教育课程 课程名称:Linux程序设计开课单位:软件学院课程编号:总 学 时:3 ...

  6. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

    linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...

  7. linux 实验2 进程创建,实验2Linux进程控制与通信

    实验2Linux进程控制与通信 实验 2 Linux 进程控制与通信1. 实验目的(1 ) 进一步认识并发执行的概念,认识父子进程及进程创建原理:(2 ) 了解 Linux 系统中进程通信的基本原理. ...

  8. Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc

    实验三进程的创建和简单控制(学生分析 实验 进程的创建和简单控制 实验目的: 掌握进程的概念和进程的状态,对进程有感性的认识: 掌握进程创建方法: 认识进程的并发执行,了解进程族之间各种标识及其存在的 ...

  9. linux进程管理命令实验,实验2Linux进程管理.doc

    实验2Linux进程管理 实验2 Linux进程管理 实验目的 1.加深对进程概念的理解,明确进程和程序的区别 2.进一步认识并发执行的实质 3.分析进程争用资源的现象,学习解决进程互斥的方法 实验性 ...

最新文章

  1. PCL采样一致性算法
  2. 从用户角度看,DBMS应当提供哪些功能?
  3. telegram 搭建 私聊机器人 转发私聊信息 保护隐私
  4. 卡在linuxctrld进系统_Linux系统卡死后紧急处理
  5. java 正则表达式使用_如何用正则表达式杀死Java
  6. mysql 删除数据 分页_PHP实现对mysql数据库内容分页显示
  7. IIS7 部署MVC 运行不了 注意事项
  8. php通用查询系统excel,php+excel通用课表查询系统
  9. iphone刷android怎么刷机,不用刷机 让iPhone运行Android 6.0
  10. wince车机刷carplay_WINCE 使用 CarPlay,老唐开新花
  11. 矩阵连乘问题C++实现
  12. hadoop学习路线
  13. Cloudreved云盘搭建及配置Aria2离线下载
  14. 介绍几种初学者学习电脑入门知识的方法
  15. 名片管理系统python详解_详解Python做一个名片管理系统
  16. QQ相册(html)实例详述----Div布局
  17. 干净实用:装机必备绿色软件集锦
  18. 小程序多少钱?一个小程序多少钱?
  19. 智能机器人-(一)常用传感器及其原理
  20. .net开发安卓入门 - Hello world!

热门文章

  1. Python编写只允许实例化一个对象的类
  2. Python图像处理模块pillow子模块Image用法精要
  3. python爬取新闻发送微信_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)...
  4. android adb 模拟来电,在Android模拟器中模拟GPS、打电话、发短信……
  5. cgcs2000高斯平面直角坐标_多元微积分——环量、旋度与格林、斯托克斯公式,通量、散度与高斯公式...
  6. Linux离线的nginx安装启动,linux-离线安装nginx
  7. linux的vim怎么配置文件路径,Linux_Linux系统配置VI或VIM的技巧,1、VI或VIM的配置文件的路径 - phpStudy...
  8. 关闭 启动_win10系统关闭快速启动功能教程
  9. springcloud项目的启动顺序_spring boot/cloud 启动方式说明
  10. 系统syslog网络转发配置