(题)Linux查看文件内容的方式,对进程进行排序查看,Apache的工作模式,Nginx与Apache

(一)Linux查看文件内容的方式
1、more指令
more指令会以一页一页的形式显示文件内容,按空白键(space)显示下一页内容,按Enter键会显示下一行内容,按 b 键就会往回(back)一页显示,其基本用法如下:

more file1 查看文件file1的文件内容;

more -num file2 查看文件file2的内容,一次显示num行;

more +num file3 查看文件file3的内容,从第num行开始显示;

2、less指令
less指令查看文件内容时可以向前或向后随意查看内容;

less指令的基本用法为:

less file1 查看文件file1的内容;

less -m file2 查看文件file2的内容,并在屏幕底部显示已显示内容的百分比;

按空格键显示下一屏的内容,按回车键显示下一行的内容;

按 U 向前滚动半页,按 Y 向前滚动一行;

按[PageDown]向下翻动一页,按[PageUp]向上翻动一页;

按 Q 退出less命令;

3.head指令
head指令用于显示文件开头的内容,默认情况下,只显示文件的头10行内容;

head指令的基本用法:

head -n <行数> filename 显示文件内容的前n行;

例如:head -n 5 file1 显示文件file1的前5行内容

head -c <字节> filename 显示文件内容的前n个字节;

例如:head -c 20 file2 显示文件file2的前20个字节内容

4、tail指令
tail指令用于显示文件尾部的内容,默认情况下只显示指定文件的末尾10行;

tail指令的基本用法:

tail file1 显示文件file1的尾部10行内容;

tail -n <行数> filename 显示文件尾部的n行内容;

例如:tail -n 5 file1 显示文件file1的末尾5行内容

tail -c <字节数> filename 显示文件尾部的n个字节内容;

例如:tail -c 20 file2 显示文件file2的末尾20个字节

5、cat指令
使用cat命令时,如果文件内容过多,则只会显示最后一屏的内容;

cat指令的基本用法:

cat file1 用于查看文件名为file1的文件内容;

cat -n file2 查看文件名为file2的文件内容,并从1开始对所有输出的行数(包括空行)进行编号;

cat -b file3 查看文件名为file3的文件内容,并从1开始对所有的非空行进行编号;

6、od----以二进制方式读取文件内容。
注意:
参数-nl表示显示行数(包括空行,-b不包括空行)

(二)Top命令,如何通过cpu 内存,对进程进行排序查看
1、按进程的CPU使用率排序
运行top命令后,键入p
2、按进程的内存使用率排序
运行top命令后,键入m在这里插入图片描述
详细讲解
(三)ps aux 与ps ef 的区别

命令 含义
ps aux 显示系统中所有进程并显示进程用户
ps ef 显示进程详细信息并显示进程父子关系
ps ax 显示当前系统中的所有进程
pstree 显示当前系统的进程树

详细讲解

(四)用户管理的相关操作,如何修改用户组id与用户id

usermod -u 6666 westos ##更改用户uid ,用户id
usermod -g 21 westos ##更改用户的初始组,用户组id
usermod -G 21 westos ##更改用户的附加组
usermod -aG 72 westos ##添加用户的附加组,不覆盖
usermod -G “” westos ##删除用户所有附加组的身份

(五)Apache 的工作模式有哪些
就目前来说,它一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)。它们分别是 prefork、worker 和 event 。
1、Prefork MPM
关键字:多进程
prefork模式可以算是很古老但是非常稳定的模式。Apache在启动之初,就预派生 fork一些子进程,然后等待请求进来,并且总是视图保持一些备用的子进程。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程中只有一个线程,在一个时间点内,只能处理一个请求。

在Unix系统中,父进程通常以root身份运行以便绑定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group指令用于配置子进程的低特权用户。运行子进程的用户必须要对他所服务的内容有读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。在这里插入图片描述
优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理
2、Worker MPM
关键字:多进程+多线程
worker模式比起上一个,是使用了多进程+多线程的模式。它也预先fork了几个子进程(数量比较少),每个子进程能够生成一些服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。

Apache总是试图维持一个备用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。在Unix中,为了能够绑定80端口,父进程一般都是以root身份启动,随后,Apache以较低权限的用户建立子进程和线程。User和Group指令用于配置Apache子进程的权限。虽然子进程必须对其提供的内容拥有读权限,但应该尽可能给予他较少的特权。另外,除非使用了suexec ,否则,这些指令配置的权限将被CGI脚本所继承。

线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下,表现得比 prefork模式好。
有些人会觉得奇怪,那么这里为什么不直接使用多线程呢(即在一个进程内实现多进程),还要引入多进程?

原因主要是需要考虑稳定性,如果一个线程异常挂了,会导致父进程连同其他正常的子线程都挂了(它们都是同一个进程下的)。多进程+多线程模式中,各个进程之间都是独立的,如果某个线程出现异常,受影响的只是Apache的一部分服务,而不是整个服务。其他进程仍然可以工作。
在这里插入图片描述
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
3、Event MPM
关键字:多进程+多线程+epoll

这个是 Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和 worker模式很像,最大的区别在于,它解决了 keep-alive 场景下 ,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。

event MPM中,会有一个专门的线程来管理这些 keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻塞。

event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event MPM的。
在这里插入图片描述
注意一点,event MPM需要Linux系统(Linux 2.6+)对Epoll的支持,才能启用。

还有,需要补充的是HTTPS的连接(SSL),它的运行模式仍然是类似worker的方式,线程会被一直占用,知道连接关闭。部分比较老的资料里,说event MPM不支持SSL,那个说法是几年前的说法,现在已经支持了。
(六)nginx相对于apache的区别是:
1.轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源

2.抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。

3.nginx 处理静态文件好,静态处理性能比 apache 高三倍以上

4.nginx 的设计高度模块化,编写模块相对简单

5.nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃

6.nginx 作为负载均衡服务器,支持 7 层负载均衡

7.nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器

8.启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级

9.社区活跃,各种高性能模块出品迅速
Apache
1.apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache

2.apache 发展到现在,模块超多,基本想到的都可以找到

3.apache 更为成熟,少 bug ,nginx 的 bug 相对较多

4.apache 超稳定

5.apache 对 PHP 支持比较简单,nginx 需要配合其他后端用

6.apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。

7.apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

总结
两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程

一般来说,**需要性能的 web 服务,用 nginx 。如果不需要性能只求稳定,更考虑 apache ,**后者的各种功能模块实现得比前者,例如 ssl 的模块就比前者好,可配置项多。epoll(freebsd 上是 kqueue ) 网络 IO 模型是 nginx 处理性能高的根本理由,但并不是所有的情况下都是 epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的 select 模型或许比 epoll 更高性能。当然,这只是根据网络 IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

更为通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好。
(七)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值