正式班D21
2020.11.03星期二 正式班D21
11.5 源码包
11.5.1 预先安装编译安装依赖的库
- 安装编译器 
- 安装解释器 - [root@ccc ~]# yum groupinstall -y "开发工具"
 [root@ccc ~]# yum -y install gcc gcc-c++ autoconf automake make
 [root@ccc ~]# yum -y install gcc gcc-c++ autoconf automake make
 
11.5.2 官网下载源码包
- 浏览器下载 
- 或者执行命令 - [root@ccc ~]# cd /root
 [root@ccc ~]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
 
11.5.3 解压、编译、编译安装
- 解压 - [root@ccc ~]# tar xvf nginx-1.18.0.tar.gz -C /tmp/
 [root@ccc ~]# cd /tmp/nginx-1.18.0/
 
- 配置 - [root@ccc nginx-1.18.0]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module
 - # 1、如果报错,先执行make clean all,再重新执行配置操作
 # 2、--prefix指定安装目录,/usr/local/nginx是安装目录
 # 3、带ssl stub_status模块 添加steam模块 -with-stream,能传输tcp协议
 # 4、http_stub_status_module 状态监控
 # 5、http_ssl_module 配置https
 # 6、stream 配置tcp的转发
 # 7、http_gzip_static_module 压缩
 # 8、http_sub_module 替换请求
 
- 编译安装 - [root@ccc nginx-1.18.0]# make && make install
 
- 清理安装包 - [root@ccc nginx-1.18.0]# rm -rf /tmp/nginx-1.18.0/
 
- 将程序设定软链接,便于后续升级 - [root@ccc ~]# ln -s /usr/local/nginx/ /soft/nginx
 [root@ccc ~]# ll /soft/
 总用量 0
 lrwxrwxrwx 1 root root 17 11月 3 15:24 nginx -> /usr/local/nginx/
 
- 启动测试 - [root@ccc nginx-1.18.0]# useradd www
 [root@ccc nginx-1.18.0]# /usr/local/nginx/sbin/nginx
 打开浏览器:输入服务器的IP地址,可以看到欢迎界面
 
- 总结 - # ./configure --prefix=/usr/local/nginx
 1、指定安装路径,例如--prefix=DIR
 2、启用或禁用某项功能,例如--enable-ssl,--disable-filter --with-http_ssl_module
 3、和其他软件关联,例如--with-pcre=/root/pcre-8.31
 4、检查安装环境,例如是否有编辑器gcc,是否满足软件的依赖需求
 5、最终生成:MAkefile
 # make # 按Makefile文件编辑,可以使用-j 2指定两颗CPU编译
 # make install # 安装
 如果中途发生错误,多半是因为缺少必要的库的支持,先清理
 # make clean all # 清理以前编译后产生的*.o目标文件
 然后安装依赖库,重新执行三部曲
 
12 进程管理
12.1 进程概念
12.1.1 什么是进程?
- 程序:存放代码的文件-->静态 - 进程:程序的运行过程-->动态(进程是操作系统最核心的概念) -  操作系统控制着硬件去执行程序的过程 
- 并发:多个任务看起来是同时运行的 - 并行:多个任务是真正的同时运行,只有多核才能实现并行 
- 线程:进程内代码的执行过程,一个进程至少有一个线程 -  线程才是CPU的执行单位 - Tips:CPU是运行代码,不是做I/O的 
- 一个进程的多个线程共享该进程的内存资源 - 不同进程的多个线程的内存资源互相隔离 
- 提交任务的方式: - 同步:在原地等 - 异步:不在原地等 
12.1.2 进程状态
- 进程 - 1、正在执行的程序 - 2、正在计算机上执行的程序实例 - 3、能分配处理器并由处理器执行的实体 - 进程的两个基本元素是程序代码和代码相关联的数据集。进程是一种动态描述,但不代表所有的进程都在运行,进程在内存中会有各种状态。 
- 进程状态 - R # 可执行状态(运行状态)
 S # 可中断睡眠状态(sleeping)
 D # 不可中断睡眠(disk sleep)
 T # 暂停状态
 z # 僵死状态
 X # 死亡状态或退出状态(dead)
 
- 进程状态切换 - # 三种状态
 # 就绪态:进程已分配到除CPU以外的所有必要资源,只要获得处理机便可执行
 # 执行态(Running):进程已获得处理机,其程序正在处理机上执行
 # 阻塞态(Blocked):正在执行的进程,由于等待某个事件发生而无法执行时,就放弃处理机进入阻塞态。例如I/O、申请缓冲区不能满足、等待信号(信件)等 # 状态切换
 就绪->执行
 处在就绪态的进程,当调度器为其分配了处理机后就变成了执行态 执行->就绪
 执行态的进程在其执行过程中,时间片跑完了不得不让出处理机,从执行态变成就绪态 执行->阻塞
 正在执行的进程等待某种事件而无法继续执行时,便从执行态变成阻塞态 阻塞->就绪
 处于阻塞态的进程,等待的事件结束,就从阻塞态变成就绪态
 
12.2 查看进程信息
12.2.1 ps aux
- 查看进程用户、PID、占用CPU百分比、占用内存百分比、状态、执行的命令等 - -a # 显示一个终端的所有进程
 -u # 选择有效的用户ID或用户名
 -x # 显示没有控制终端的进程,同时显示各个命令的具体路径 [root@ccc ~]# ps aux | head -5
 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
 root 1 0.0 0.3 125356 3792 ? Ss 14:43 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
 root 2 0.0 0.0 0 0 ? S 14:43 0:00 [kthreadd]
 root 4 0.0 0.0 0 0 ? S< 14:43 0:00 [kworker/0:0H]
 root 6 0.0 0.0 0 0 ? S 14:43 0:00 [ksoftirqd/0]
 - USER # 进行进程的用户
 PID # 进程ID
 %CPU # CPU占用率
 %MEN # 内存占用率
 VSZ # 占用虚拟内存(kb),表示已分配的内存空间大小,不等于实际用到的内存大小
 RSS # 占用实际内存(kb),常驻内存大小,即进程实际占用的物理内存大小
 TTY # 进程运行的终端
 STAT # 进程状态
 START # 进程的启动时间
 TIME # 进程占用CPU的总时间
 COMMAND # 进程文件,进程名。带[]代表内核态进程,不带[]代表用户态进程
 
- STAT进程状态 - R # 运行
 S # 可中断睡眠sleep,即在睡眠的过程中可以接收信号唤醒->执行的I/O操作能得到硬件设备的相应
 D # 不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒->执行的I/O操作得不到硬件设备的响应
 T # 停止的进程
 Z # 僵尸进程
 X # 死掉的进程(几乎看不见,死掉会被立即回收)
 < # 优先级较高的进程
 N # 优先级较低的进程
 s # 包含子进程
 + # 是前台的进程组
 l # 小写字母l代表以线程的方式运行,即多线程
 | # 多进程
 
- 两种睡眠状态 - # 1、可中断睡眠状态(S) Interrupt Sleep
 处于这种睡眠状态的进程是可以通过给他发送signal来唤醒的。
 如HUP信号给nginx的master进程,可以让nginx重新加载配置文件而不需要重新启动nginx进程。
 # 2、不可中断睡眠(D) Uninterruptible Sleep
 处于这种状态的进程不接受任何外来的signal
 包括但不限于kill、kill -9、kill -15、ctrl+c、ctrl+z # 解释
 处于D状态是因为进程长时间等待I/O都没有响应,且被ps看到,意味着可能I/O出现问题或外设本身出现问题或NFS挂载的远程文件系统不可访问。
 只有等待I/O恢复或者重启整个Linux系统才能从D状态恢复。 # 强调
 D不可中断睡眠状态和Z僵尸进程都不可以用kill -9杀死
 
12.2.2 ps -elf
- 查看ppid 
- ps -ef只打印进程,而ps -elf会打印所有的线程,同时加了两列。 - [root@ccc ~]# ps -ef | head -10
 UID PID PPID C STIME TTY TIME CMD
 root 1 0 0 14:43 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
 root 2 0 0 14:43 ? 00:00:00 [kthreadd]
 root 4 2 0 14:43 ? 00:00:00 [kworker/0:0H]
 root 6 2 0 14:43 ? 00:00:00 [ksoftirqd/0]
 root 7 2 0 14:43 ? 00:00:00 [migration/0]
 root 8 2 0 14:43 ? 00:00:00 [rcu_bh]
 root 9 2 0 14:43 ? 00:00:00 [rcu_sched]
 root 10 2 0 14:43 ? 00:00:00 [lru-add-drain]
 root 11 2 0 14:43 ? 00:00:00 [watchdog/0]
 [root@ccc ~]# ps -elf | head -10
 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
 4 S root 1 0 0 80 0 - 31339 ep_pol 14:43 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
 1 S root 2 0 0 80 0 - 0 kthrea 14:43 ? 00:00:00 [kthreadd]
 1 S root 4 2 0 60 -20 - 0 worker 14:43 ? 00:00:00 [kworker/0:0H]
 1 S root 6 2 0 80 0 - 0 smpboo 14:43 ? 00:00:00 [ksoftirqd/0]
 1 S root 7 2 0 -40 - - 0 smpboo 14:43 ? 00:00:00 [migration/0]
 1 S root 8 2 0 80 0 - 0 rcu_gp 14:43 ? 00:00:00 [rcu_bh]
 1 R root 9 2 0 80 0 - 0 - 14:43 ? 00:00:00 [rcu_sched]
 1 S root 10 2 0 60 -20 - 0 rescue 14:43 ? 00:00:00 [lru-add-drain]
 5 S root 11 2 0 -40 - - 0 smpboo 14:43 ? 00:00:00 [watchdog/0]
 
12.2.3 pstree进程树
- 查看进程树 - [root@ccc ~]# rpm -qf `which pstree`
 psmisc-22.20-16.el7.x86_64
 [root@ccc ~]# pstree
 systemd─┬─NetworkManager───2*[{NetworkManager}]
 ├─VGAuthService
 ├─agetty
 ├─auditd───{auditd}
 ├─chronyd
 ├─crond
 ├─dbus-daemon
 ├─master─┬─pickup
 │ └─qmgr
 ├─nginx───nginx
 ├─polkitd───6*[{polkitd}]
 ├─rsyslogd───2*[{rsyslogd}]
 ├─sshd───sshd───bash───pstree
 ├─systemd-journal
 ├─systemd-logind
 ├─systemd-udevd
 ├─tuned───4*[{tuned}]
 └─vmtoolsd───{vmtoolsd}
 [root@ccc ~]# pstree 4032
 nginx───nginx
 
12.2.4 top动态查看
- 基本用法 - [root@ccc ~]# top
 [root@ccc ~]# top -d 1 # 1秒刷新一次
 [root@ccc ~]# top -d 1 -p 进程的PID
 [root@ccc ~]# top -d 1 -p `pgrep nginx | head -1`
 [root@ccc ~]# top -d 1 -p `pgrep nginx | head -1`,33 # 查看sshd及PID33的进程
 [root@ccc ~]# top -d 1 -u cjx # 查看指定用户的进程
 [root@ccc ~]# top -b -n 2 > top.txt # 将两次top的信息写入文件
 
- 显示信息解释 
 
12.3 管理进程
12.3.1 优先级设置
- 在启动进程时用nice命令设置优先级 - # 1、命令
 nice [-n 优先级] # 2、选项介绍
- 对已运行的进程设置新的优先级 - [root@ccc ~]# renice -20 11111
 
12.3.2 给进程发信号kill
12.3.3 HUP信号
12.4 查看网络状态
12.5 proc文件系统
12.5.1 查看硬盘状态df
12.5.2 查看内存状态free
12.5.3 查看CPU状态lscpu
12.6 管理后台进程(了解)
12.7 管道
12.8 僵尸进程与孤儿进程
正式班D21的更多相关文章
- 正式班D5
		2020.10.10星期六 正式班D5 一.上节课复习 1.硬盘分类  1.机械磁盘  io时间=平均寻道时间+平均延迟时间  buffer:写缓冲区  cache:都缓存  2.固态硬盘 ... 
- 正式班D7
		2020.10.13星期二 正式班D7 一.上节课复习 Linux发展 批处理系统 多道技术 分时操作系统 multics->Unix->minix->Linux(如Redhat.c ... 
- 正式班D8
		2020.10.15星期四 正式班D8 一.上节课复习 OSI七层协议 socket socket是对传输层以下的封装 IP+port标识唯一一个基于网络通讯的软件 TCP与UDP TCP:因为在通信 ... 
- 正式班D9
		2020.10.16星期五 正式班D9 一.vmware workstation的使用 虚拟机管理软件 定义 虚拟机(Virtual Machine)软件是一套特殊的软件,它可以作为操作系统独立运行, ... 
- 正式班D11
		2020.10.20星期二 正式班D11 bash解释器交互式环境特性 命令和文件自动补全(Tab只能补全命令和文件) 快捷键 CTRL+C ==>终止前台运行的程序 CTRL+D ==> ... 
- 正式班D12
		2020.10.21星期三 正式班D12 一.目录结构 系统目录结构 目录 文件夹:存放的是具体有哪些文件 文件:存放的就是具体的数据 需要记住的 /dev/cdrom # 光盘设备,光盘里存放的内容 ... 
- 正式班D13
		2020.10.22星期四 正式班D13 修改文件内容 vim编辑 vim基础 可理解为Windows下的文本编辑器 vim可用来修改配置.写脚本 三种模式(命令模式.输入模式.末行模式) 命令模式按 ... 
- 正式班D14
		2020.10.23星期五 正式班D14 9.5 文件处理三剑客(支持|) 9.5.1 sed流式编辑器 事先制定好编辑文件的指令,让sed自动完成对文件的整体编辑(同一时间内存中只有文件中一条) # ... 
- 正式班D16
		2020.10.27星期二 正式班D16 目录 9.9 字符处理命令 9.9.1 sort排序 9.9.2 uniq去重 9.9.3 cut处理规律文本 9.9.4 tr替换 9.9.5 wc统计 9 ... 
随机推荐
- ser  序列化的使用
			2.序列化(serializers.Serializer) 1)序列化(正向查找) from rest_framework import serializers from users.models i ... 
- Linux系统编程 —线程属性
			在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性.一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题. 但是, ... 
- c++中CreateEvent函数
			参考:https://blog.csdn.net/u011642774/article/details/52789969 函数原型: HANDLE CreateEvent( LPSECURITY_AT ... 
- MeteoInfoLab脚本示例:线性拟合
			MeteoInfoLab提供一个线性拟合函数linregress,参数是参与拟合的两个数据序列,返回拟合的斜率.截距和相关系数.有了上述拟合参数可以用polyval函数生成拟合数据(直线).然后可以将 ... 
- day63 Pyhton 框架Django 06
			内容回顾 1.装饰器 装饰器:是一个闭包函数,在不改变原函数的代码和调用方式的基础上,给原函数增加功能. def wrapper(func): def inner(*args,**kwargs): # ... 
- 网页添加 Live2D 看板娘
			我是先参考别人的[点击跳转]博客来做的.不过我发现网上很多人都没有把一些细节写出来,用了别人那里下载的文件后里面的一些跳转链接就跳到他们的页面了.所以我这里写一写如何修改这些跳转链接吧. 1. ... 
- Privileged Permission开机授权时序图  SourceCode android-10.0.0_r36
			Privileged Permission开机授权时序图 | SourceCode:android-10.0.0_r36 | Author:秋城 | v1.1SystemServerSystemSer ... 
- Zookeeper(1)---初识
			一.ZK简述 Zookeeper,它是一个分布式程序的协调服务,它主要是用来解决分布式应用中的一些数据管理问题,比如集群管理,分布式应用配置,分布式锁,服务注册/发现等等. 它是一个类似于文件系统的树 ... 
- spring boot: 用redis的消息订阅功能更新应用内的caffeine本地缓存(spring boot 2.3.2)
			一,为什么要更新caffeine缓存? 1,caffeine缓存的优点和缺点 生产环境中,caffeine缓存是我们在应用中使用的本地缓存, 它的优势在于存在于应用内,访问速度最快,通常都不到1ms就 ... 
- matplotlib条形图
			三个班级平均分 import matplotlib.pyplot as plt import matplotlib as mpl classes = ['class1','class2','class ... 
