Skip to content

Latest commit

 

History

History
117 lines (72 loc) · 4.17 KB

Linux问题.md

File metadata and controls

117 lines (72 loc) · 4.17 KB

Linux问题

1、Linux中有多个文件,从里面匹配一个字符串命令?(百度)(美团)

cat a.txt b.txt | grep string

2、查看网络是否连通的指令?(网易)(有赞)

netstat

3、查看所有进程?

ps -ef

4、查看文件内容有哪些指令?

vi 文件名 #编辑方式查看,可修改 cat 文件名 #显示全部文件内容 more 文件名 #分页显示文件内容 less 文件名 #与 more 相似,更好的是可以往前翻页 tail 文件名 #仅查看尾部,还可以指定行数 head 文件名 #仅查看头部,还可以指定行数

5、复制文件指令?连同文件夹一起复制?

cp -r

6、删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?

rm -r

7、对一个文件的内容进行统计的指令?(行数、字节数、单词数)

wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。

8、grep指令的作用?

是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

9、如何查看后台任务?

job -l

10、终止进程?

kill -9 pid

11、搜索文件的命令?

find、whereis、locate等等

12、查看使用过的命令的列表?

history

13、查看磁盘使用空间?

df -hl Size(总空间) Used(已用) Avail(可用) Use%(使用百分比) Mounted on(挂载区)

14、如何一页一页的查看大文件的内容?

cat a.txt | more

15、IO多路复用?(百度)(字节)

IO多路复用的目的就是为了设计一个高性能的网络服务器,可供多个客户端去连接。之所以我们不用多线程的方式去设计是因为多线程环境下的上下文切换带来的消耗也是很大的。

在Linux系统中,一切都是文件,每一个网络连接(socket)在内核中都是以文件描述符(fd)的形式存放。

select实现IO多路复用的实现方式

#select函数实现
使用 fd_set 实现里面装的是文件描述符大小限制为 1024bit
select()函数会将 fd_set 数组从用户态一次性的拷入内核态交由内核处理会大大提升效率
当有数据到达一个描述符时select函数会返回在此之前是阻塞的然后遍历 fd_set 找到那个有数据到达的文件描述符 O(n)的时间复杂度获取到相关描述符缺点1fd_set 不可重用
2用户态到内核态数据拷贝的开销
3O(n)时间复杂度的轮询

epoll实现IO多路复用的实现方式

// epoll函数实现
epoll_create() 创建一个白板是一块用户态和内核态共享的一块内存空间存放fd_events
epoll_ctl() 用于向内核注册新的描述符或者是改变某个文件描述符的状态已注册的描述符在内核中会被维护在一棵红黑树上epoll_wait 通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理进程调用 epoll_wait() 便可以得到事件完成的描述符 O(1)的时间复杂度获取到相关描述符优点完全解决了select的所有问题

epoll支持两种触发模式:

LT:水平触发epoll_wait() 检测到描述符事件到达时,将此事件通知进程,进程可以不立即处理该事件,下次调用 epoll_wait() 会再次通知进程。是默认的一种模式,并且同时支持 Blocking 和 No-Blocking。 ET:边缘触发 和 LT 模式不同的是,通知之后进程必须立即处理事件。 下次再调用 epoll_wait() 时不会再得到事件到达的通知。很大程度上减少了 epoll 事件被重复触发的次数, 因此效率要比 LT 模式高。只支持 No-Blocking,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。

16、了解什么基本的命令?

17、秒杀中的日志中记录了某个商品的下单情况,统计出秒杀失败的人数统计?(美团)

cat miaoshalog | wc -w failperson

18、查看当前IP的网络链接指令?(美团)

netstat