正式班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 ...
随机推荐
- 【译】使用 WebView2 将最好的 Web 带到 .NET 桌面应用程序中
在去年的 Build 大会上,我们引入了 WebView2,这是一个浏览器控件,可以用新的基于 Chrome 的 Microsoft Edge 来呈现 Web 内容(HTML / CSS / Java ...
- 共享内存Distributed Memory 与分布式内存Distributed Memory
我们经常说到的多核处理器,是指一个处理器(CPU)上有多个处理核心(CORE),共享内存多核系统我们可以将CPU想象为一个密封的包,在这个包内有多个互相连接的CORES,每个CORE共享一个主存,所有 ...
- springboot项目打包瘦身
默认情况下,Spring Boot 项目发布时会将项目代码和项目的所有依赖文件一起打成一个可执行的 jar 包.但如果项目的依赖包很多,那么这个文件就会非常大.这样每次即使只改动一点东西,就需要将整个 ...
- sprintf_s() 、sprintf()和printf()区别和用法
转载:https://blog.csdn.net/qq_35608277/article/details/80878802 int sprintf_s(char *buffer,size_t size ...
- 使用EasyX和C++写一个消砖块游戏
第一次玩EasyX,写一个比较简单的消砖块游戏. 主函数包括Game的类的开始,运行和结束. 1 #include "BrickElimination.h" 2 3 int mai ...
- object-fit 详解
contain 被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比. 整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加"黑边". cov ...
- Makefile-3-书写规则
目录 前言 概念 Chapter 3:书写规则 3.3 在规则中使用通配符 3.4 文件搜索 3.8 自动生成依赖性 原理 * 直接解析例子 ** sed 命令 参考 书籍 前言 本笔记主要记录Mak ...
- MeteoInfoLab脚本示例:inpolygon
inpollygon函数是用来判断带坐标(x/y)的数据是否在某个或者一组多边形(Polygon)中,返回的结果中如果做多边形内则值为1,否则值为-1.下面一个例子演示了利用一个shape文件和inp ...
- java字符流与字节流的区别是什么
java中字符流与字节流的区别: 1.字节流操作的基本单元为字节:字符流操作的基本单元为Unicode码元. 2.字节流默认不使用缓冲区:字符流使用缓冲区. 3.字节流通常用于处理二进制数据,实际上它 ...
- git commit 代码提交规范
格式 type: description 1. type 类型 type 是 commit 的类别,只允许如下几种标识: fix: 修复bug add: 新功能 update: 更新 refactor ...