linux进程(一)
回顾:
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进程(一)的更多相关文章
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
- 如何灵活运用Linux 进程资源监控和进程限制
导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...
- TODO:Golang Linux进程退出说明
TODO:Golang Linux进程退出说明 Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码.传统上,code代码为零表示成功退出,非零错误退出. sysca ...
- Linux进程管理子系统分析【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- linux 进程管理相关内容
简介 当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中 ...
- Linux - 进程查看与管理
标签(空格分隔): Linux 进程的静态查看 查看系统所有进程 ps -ef -- 输出来好乱,看不懂..: ps aux -- a表示所有与终端相关的进程,u表示所有以用户组织的进程状态的信息,x ...
- Linux进程关系
Linux进程关系 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的进程相互之间有一定的关系.比如说,在Linux ...
- Linux进程基础
Linux进程基础 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...
- linux进程编程:子进程创建及执行函数简介
linux进程编程:子进程创建及执行函数简介 子进程创建及执行函数有三个: (1)fork();(2)exec();(3)system(); 下面分别做详细介绍.(1)fork() 函数定 ...
随机推荐
- MySQL 插入 中文数据乱码解决
问题描述: 1.在命令行中进行插入,没有问题.但是显示存在部分乱码 2.在JDBC中插入成功.中文是直接以“??”形式显示. 通过Navicat客户端查看 与在网页中看到的一一致,说明读取没有问题,问 ...
- 使用Python绘制新型冠状肺炎全国增长趋势图
截至1月28日24时,国家卫生健康委收到31个省(区.市)累计报告确诊病例5974例,现有重症病例1239例,累计死亡病例132例,累计治愈出院103例.现有疑似病例9239例.目前累计追踪到密切接触 ...
- oracle 向表中插入BLOB类型数据
提示: 待插入图片必须保存到oracle主机路径上. 步骤: 1.SYSDBA权限用户创建图片所在目录 CREATE OR REPLACE DIRECTORY TEST_DIR AS 'C:\Pict ...
- Social LSTM 实现代码分析
----- 2019.8.5更新 实现代码思维导图 ----- ----- 初始原文 ----- Social LSTM最早提出于文献 "Social LSTM: Human Traject ...
- Windows 远程桌面连接 CentOS7 (xrdp)
Windows 远程桌面连接 CentOS7 (xrdp) 前提: CentOS安装桌面,如果无桌面,请执行: yum -y groups install "GNOME Desktop&qu ...
- 干货 | 京东技术中台的Flutter实践之路
在 2019 年,Flutter 推出了多个正式版本,支持的终端越来越多,使用的项目也越来越多.Flutter 正在经历从小范围尝鲜到大面积应用的过程,越来越多的研发团队加入到 Flutter 的学习 ...
- CPU构架和工作原理
-- CPU -- -- CPU 由三部分组成:时钟:控制单元:算术逻辑单元 -- -- -- 时钟:对CPU内部操作与系统其他硬件进行同步: -- -- -- 控制单元:控制机器指令的执行顺序: - ...
- 27. docker compose 单机 均衡负载
1.编写Dockerfile #Dockerfile FROM python:2.7 LABEL maintaner="eaon eaon123@docker.com" COPY ...
- vue接口交互写死的
vue接口 写死的 RoleOfUserOrgRef: function ({ commit }, param) { return new Promise((resolve) => { $axi ...
- 深入分析Java反射(五)-类实例化和类加载
前提 其实在前面写过的<深入分析Java反射(一)-核心类库和方法>已经介绍过通过类名或者java.lang.Class实例去实例化一个对象,在<浅析Java中的资源加载>中也 ...