十万个为什么
Posted 礁之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十万个为什么相关的知识,希望对你有一定的参考价值。
文章目录
(1)如果有一个20个G的硬盘,里面有10个G的东西,删完之后发现还有10个G是则么回事?
- 一个文件分为:inode号和容量组成
- rm -rf 删除文件只是删除了inode号,底层的数据还在。当开始写一下一个文件的时候,被删除的文件的容量才被一点一点覆盖。
- 完全删除应该先使用重定向 > 文件名 先使用空覆盖文件内容,然后再使用rm -rf 删除文件
- 当误删除一个文件时,只要不要再写入数据,那么这个文件就可以找回来
(2)常见状态返回码
200 | 表示页面成功访问 ok |
---|---|
301 | 请求的页面永久跳转了 |
403 | 禁止访问该页面 |
404 | 找不到该页面 |
500 | 服务器内部错误 |
502 | 网关错误 |
503 | 当前服务不可用 |
504 | 网关请求超时 |
302 | 请求的页面临时跳转 |
(3)查看系统中数据包的状态
******(1)查看系统中所有连接
netstat -anto
******(2)查看系统中所有TCP和UDP的连接并且统计
netstat -anto | awk '/^tcp|^udp/state[$6]++ENDfor(i in state)print i,state[i]'
(4)keep-alive长连接是什么以及长连接占据问题
keep-alive长连接: 即tcp连接在发送后仍然与客户端保持连接状态,客户端的浏览器可以通过相同的连接去发送请求,这样虽然节省了为每个请求建立新连接的时间、节约了带宽并且减少了重复请求的次数加快了客户端访问的速度。
长连接占据问题: 虽然长连接加快了客户端访问的速度,但是在长连接状态下,进行长连接的接口是无法和新的请求进行连接的,从而导致进程越来越多,使cpu和内存过度负载,导致服务器卡顿
(5)apache中的静态编译和动态编译
httpd是高度模块化的程序,也就是说httpd的各种功能都需要加载对应的模块来执行,但是前提是必须将使用功能的对应模块进行编译,方便httpd进行加载
- 静态编译: 直接将模块编译到httpd的核心当中。静态编译的所有模块都会随着httpd主程序进行启动和关闭
- 动态编译: 将模块编译好,但是不编译到httpd的核心当中。想要启动动态编译的模块,需要在httpd的配置文件中使用loadModule指令去加载使用
(6)apache如何使用户无法访问主目录,即所有目录的页面
[root@rzy aaa]# vim /usr/local/httpd/conf/httpd.conf
。。。。。。
131 <Directory "/usr/local/httpd/htdocs">
132 Options Indexes FollowSymLinks #把Indexes删除
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
#删除后:
131 <Directory "/usr/local/httpd/htdocs">
132 Options FollowSymLinks
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
[root@rzy aaa]# /etc/init.d/httpd restart #重启服务
这样用户就访问不到所有的页面,必须在网址后面加指定的网页目录才可以
(7)为什么nginx比apache高效
因为nginx使用epoll模型,采用异步非阻塞模式,还有内存映射机制,读取数据的时候会映射一个和被读取数据相同的inode号,当nginx需要读取时,会直接使用,而不是又回到内核空间遍历inode号。
而apache使用的是select模型,采用异步半阻塞模式,select查找数据需要线性遍历inode号,所以apache效率比nginx慢
(8)Nginx中的$http_referer变量有什么用
直接访问淘宝时,出现的URL是这样的:
而通过百度搜索淘宝进行访问,是这样的:
这一大串访问资源不用管,那么有什么区别呢,一般都是公司通过某个搜索引擎发布广告,然后用户如果是从这个搜索引擎访问的这个公司,就会有相应的记录,从而让公司知道在这个搜索引擎发广告花的钱值不值
(9)连接限制和请求限制那个更加有效:
同一时刻只允许一个连接,和只允许一个请求,虽然都是一个,但是一个连接可以接受多个请求,而一个请求就是一个请求,所以说限制请求比限制连接更加有效
(10)查看两个文件是否相同
md5sum VERSION.txt #取加密后的值
0f426f8fce98b96b734f39af209a015c VERSION.txt #值相同则表示文件s
(11)静态查看cpu使用率
[root@s5027-dal9 ~]# top -bn 1 -i -c
top - 03:42:35 up 31 days, 6:52, 4 users, load average: 0.51, 1.35, 0.76
Tasks: 231 total, 2 running, 178 sleeping, 27 stopped, 24 zombie
%Cpu(s): 2.7 us, 2.7 sy, 0.0 ni, 94.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st #这一列 “ 94.5 id”为未使用
KiB Mem : 16418272 total, 4522736 free, 1620680 used, 10274856 buff/cache
KiB Swap: 2096444 total, 2091580 free, 4864 used. 14411200 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17631 root 20 0 627472 33944 15708 S 5.9 0.2 0:00.79 node /usr/src/app/share-ls.js
18573 root 20 0 162132 2160 1604 R 5.9 0.0 0:00.03 top -bn 1 -i -c
#注释:
top命令可以看到总体的系统运行状态和cpu使用效率
%us: 表示用户空间程序的cpu使用效率
%sy:表示系统空间程序的cpu使用效率
%ni: 表示用户空间通过nice调度过的程序的cpu使用效率
%id: 空闲cpu
%wa:cpu运行时等待io的时间
%hi: cpu运行过程中硬中断的数量
%si: cpu处理软中断的数量
%st: 被虚拟机偷走的cpu
(12)win文件转换为linux文件
报错信息:
$'\\r': command not found
原因:
存现这种错误是因为 编写的 shell脚本是在win下编写的,每行结尾是\\r\\n 的Unix 结果行是\\n
所以在Linux下运行脚本 会任务\\r 是一个字符,所以运行错误,需要把文件转换下
命令:
dos2unix 脚本名
本文会持续更新,欢迎在评论区提供一些小技巧或者纠正博主的错误^w^
!
以上是关于十万个为什么的主要内容,如果未能解决你的问题,请参考以下文章