十万个为什么

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^

以上是关于十万个为什么的主要内容,如果未能解决你的问题,请参考以下文章

几句java代码搞定十万个为什么数据

十万个为什么

linux的软件安装-十万个为什么?

4星|大象公会《一个观点,不一定对》:新十万个为什么

十万个不为什么

十万个不为什么