回顾:
CentOS6的启动过程
开机自检->找硬盘->操作系统->内核->进程->登录

Systemd借鉴了很多launchd的思想,他的重要特性如下:
1.同SysVinit和系统初始化脚本兼容。
    CentOS5 init
    CentOS6 upstart
    CentOS7 systemd
2.更快的启动速度
3.通过按需启动能力
4.更优的进程跟踪特性和管理进程的生命周期
5.内建自动挂载服务
6.实现事务性依赖关系管理
7.能够对系统进行快照和恢复
8.自带journeald日志服务
    centos5/6 syslog

什么是进程

进程是已启动的可执行程序的运行实例,进程有以下部分组成
        分配内存,已分配内存的地址空间
        安全属性,进程的运行身份和权限
        进程代码,运行一个或多个线程
        进程状态,进程运行后的多种状态

静态程序,二进制文件,静态/usr/bin/ls,/usr/bin/sshd
动态进程,程序运行的过程,有生命周期及运行状态

进程的运行状态,包括以下部分
局部和全局变量
当前的调度上下文
分配给进程使用的系统资源,例如文件描述符、网络端口等
给进程分配对应的PID,PPID

进程生命周期

程序运行时进程的状态关系
父进程复制自己的地址空间创建新的子进程,子进程可以继承父进程(PPID)的环境变量。
每个进程都有自己的唯一ID(PID)
进程是由systemd这个父进程派生出来的子进程
子进程在运行自己的程序代码的时候,父进程往往会进入到睡眠状态
子进程完成程序代码发出退出信号请求
子进程已经关闭或丢弃其资源环境,剩余的部分称之为僵停(僵尸Zombie)
父进程在子进程退出时收到信号会被唤醒,清理剩余的结构,然后继续执行其自己的程序代码

监控和管理进程

在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程
在进程运行时,它对CPU时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

静态监控进程

静态查看进程退出使用ps命令

了解进程如下选项:

PID,PPID

当前的进程状态

内存的分配情况

CPU和已花费的时间

用户UID决定进程的特权

[root@localhost ~]# ps aux|less

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

root          1  0.0  0.0 125336  3800 ?        Ss   10:39   0:01 /usr/lib/systemd/systemd --switched-root --system

USER: //运行进程的用户

PID: //进程ID

%CPU: //CPU 占用率

%MEM:  //内存占用率

VSZ: //占用虚拟内存

RSS:  //占用实际内存 驻留内存

TTY: //进程运行的终端

STAT: //进程状态 man ps (/STATE)

R //进程运行

S //可中断睡眠

D //不可中断睡眠

Z //僵尸进程

X //进程已经退出

T //进程被暂停

Ss s //进程的领导者,父进程

S< < //优先级较高的进程

SN N //优先级较低的进程

R+ + //表示是前台的进程组

Sl //以线程的方式运行

START: //进程的启动时间

TIME: //进程占用CPU的总时间

COMMAND: //进程文件,文件名

ps -ef

//对进程的cpu进行排序展示

[root@localhost ~]# ps aux --sort %cpu | less

[root@localhost ~]# ps aux --sort -%cpu | less

//显示进程的子进程

[root@localhost ~]# yum install -y httpd

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# ps auxf | grep httpd

root       1990  0.0  0.0 112728   972 pts/0    S+   20:02   0:00          \_ grep --color=auto httpd

root       1963  0.0  0.1 224064  5004 ?        Ss   19:50   0:00 /usr/sbin/httpd -DFOREGROUND

apache     1964  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1965  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1966  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1967  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1968  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

//自定义显示字段

[root@localhost ~]# ps axo user,pid,ppid,%mem,command | grep httpd

root       1963      1  0.1 /usr/sbin/httpd -DFOREGROUND

apache     1964   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1965   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1966   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1967   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1968   1963  0.0 /usr/sbin/httpd -DFOREGROUND

root       1992   1884  0.0 grep --color=auto httpd

//查看指定进程PID

[root@localhost ~]# ps aux | grep sshd

root       1123  0.0  0.1 112920  4360 ?        Ss   10:40   0:00 /usr/sbin/sshd -D

root       1882  0.0  0.1 161528  6084 ?        Ss   19:34   0:00 sshd: root@pts/0

root       1997  0.0  0.0 112728   968 pts/0    R+   20:18   0:00 grep --color=auto sshd

[root@localhost ~]# cat /run/sshd.pid

1123

[root@localhost ~]# ps aux |grep ssh|awk 'NR==1{print $2}'

1123

//pgrep常用参数,-l,-a

[root@localhost ~]# pgrep sshd

1123

1882

[root@localhost ~]# pidof sshd

1882 1123

//查看进程树

[root@localhost ~]# pstree

systemd─┬─NetworkManager───2*[{NetworkManager}]

├─agetty

├─auditd───{auditd}

├─crond

├─dbus-daemon

├─firewalld───{firewalld}

├─httpd───5*[httpd]

├─lvmetad

├─master─┬─pickup

│        └─qmgr

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

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

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

├─systemd-journal

├─systemd-logind

├─systemd-udevd

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

动态监控进程

[root@localhost ~]# top

[root@localhost ~]# top -d 1

[root@localhost ~]# top -d 1 -p 31 查看指定进程的动态信息

[root@localhost ~]# top -d 1 -p 1372,1

[root@localhost ~]# top -d 1 -u apache

[root@localhost ~]# top -d 1 -b -n 2 > top.txt

top常见指令

h 查看帮助

z 以彩色信息展示

l 显示所有cpu的负载

s 设置刷新时间

b 高亮显示处于R状态的进程

M 按内存使用百分比排序输出

P 按cpu使用百分比排序输出

R 对排序进行反转

f 自定义显示字段

k kill掉指定PID进程

w 保存top环境设置 ~/.toprc

q 退出

案例:web压力测试

ab -c 10 -n 1000 https://www.baidu.com/index.html

-c 10表示并发用户数为10

-n 1000表示请求总数为1000

https://www.baidu.com/index.html  表示请求的目标url

请求10次,1000个并发

linux有两个特殊的设备文件

/dev/zero 无穷大的文件

/dev/null 黑洞文件

系统负载的计算和意义

进程以及子进程和线程产生的计算指令都会让cpu执行,产生请求的这些进程组成“运行队列”,等待cpu执行,这个队列就是系统负载,系统负载是所有cpu

的运行队列的总和

[root@localhost ~]# w

13:16:13 up 21 min,  2 users,  load average: 0.00, 0.01, 0.05

//假设当前计算机有4个核心的cpu,当前的负载是2.94

cpu1   cpu2  cpu3  cpu4

2.94/4(个cpu核心)=73%的cpu资源被使用,剩下的27%的cpu计算资源是空闲的

//假设当前计算机有2个核心的cpu,当前的负载是2.92

2.92/2=146% 已经验证超过了cpu的处理能力

top的进程优先级

nice

priority

值越小,越优先

0   FIFO 先进先出 first input first output

-20 RR LL 低延迟队列

20

做优先级为了区分服务

企业流量优先级

音频

视频

总结:

进程查看命令:

静态:

ps pstree pgrep pidof

动态:

top

zabbix

linux进程(一)的更多相关文章

  1. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  2. 如何灵活运用Linux 进程资源监控和进程限制

    导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...

  3. TODO:Golang Linux进程退出说明

    TODO:Golang Linux进程退出说明 Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码.传统上,code代码为零表示成功退出,非零错误退出. sysca ...

  4. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  5. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  6. linux 进程管理相关内容

    简介 当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中 ...

  7. Linux - 进程查看与管理

    标签(空格分隔): Linux 进程的静态查看 查看系统所有进程 ps -ef -- 输出来好乱,看不懂..: ps aux -- a表示所有与终端相关的进程,u表示所有以用户组织的进程状态的信息,x ...

  8. Linux进程关系

    Linux进程关系   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的进程相互之间有一定的关系.比如说,在Linux ...

  9. Linux进程基础

    Linux进程基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...

  10. linux进程编程:子进程创建及执行函数简介

    linux进程编程:子进程创建及执行函数简介 子进程创建及执行函数有三个: (1)fork();(2)exec();(3)system();    下面分别做详细介绍.(1)fork()    函数定 ...

随机推荐

  1. POJ 1260:Pearls 珍珠DP

    Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7947   Accepted: 3949 Descriptio ...

  2. VC++ DLL 2 静态链接库

    这一篇以VS2013为例子介绍怎样编写一个静态链接库和调用. 1.打开VS2013,新建Visual C++ 的win32项目: 新建后工程分支如下: 添加头文件和源文件: 编写头文件和源文件内容: ...

  3. LeetCode——155. 最小栈

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...

  4. KL散度与JS散度

    1.KL散度 KL散度( Kullback–Leibler divergence)是描述两个概率分布P和Q差异的一种测度.对于两个概率分布P.Q,二者越相似,KL散度越小. KL散度的性质:P表示真实 ...

  5. 1.4CAD2017绘图基础

    1.新建(ctrl+n) 命令:new 回车——默认样板(acadiso.dwt) 2.打开(ctr+o) 3.保存(ctrl+S) 4.鼠标的应用: 左键:点击拖选等: 中间滚轮:a.滚动,放大缩小 ...

  6. Java中常用的API(三)——缓冲区字符串

    前两节中分别介绍了Object和String,这一节主要介绍StringBuffer和StringBuilder. StringBuffer 由于String是不可变的,所以导致String对象泛滥, ...

  7. zip4j 2.0压缩 加密压缩

    https://github.com/srikanth-lingala/zip4j ZipParameters zipParameters = new ZipParameters(); zipPara ...

  8. 1.2 NumPy数组基础

    目录 第一章 numpy入门 1.2 numpy数组基础 1.2.1 数组的属性 1.2.2 数组的索引:获取单个元素 1.2.3 数组切片:获取子数组 1.2.4 数组的变形 1.2.5 数组的拼接 ...

  9. 用Chrome网页获取PDF?

    在网页浏览的时候,我常常想保存网页上的内容 这时候有几种选择,要么copy and paste,要么windows自带截图,要么就是借用tencent的截图工具... 但是对于一些用chrome预览的 ...

  10. Java线程(一)——创建线程的两种方法

    Thread 和 Runnable Java程序是通过线程执行的,线程在程序中具有独立的执行路径.当多条线程执行时,它们之间的路径可以不同,例如,一条线程可能在执行switch的一个case语句,另一 ...