首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 系统管理员面试问题

如何列出目录中的所有文件,包括隐藏文件? 删除目录及其内容的 Linux 命令是什么? 中级 Linux 问题: 以下命令有什么作用,您将如何使用它们?...您经常使用哪些快捷键? 高级Linux 问题: 正在运行的进程获得 EAGAIN:读取套接字资源暂时不可用。如何在不终止进程的情况下关闭这个错误的套接字/文件描述符? 你用交换性控制什么?...可以使用什么命令或命令来显示机器上所有打开的端口和/或套接字连接? MySQL问题: 如何创建用户? 如何为用户提供权限? “左”和“右”连接有什么区别?...开发运维问题: 描述一下您创建脚本的工作流程? 什么是 git? 什么是动态链接文件? 有趣的问题: 粗心的系统管理员执行以下命令:chmod 444 /bin/chmod....递归地从 testdir 中删除所有“*.pyc”文件。 在所有 *.py 文件中搜索“wljslmz is no.1”。

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

linux系统中socket错误码:EINTR和EAGAIN的处理

,数据不存在,需要等待;写,缓冲区满或其他原因,需要等待。 (2)当打开某些特殊文件,需要等待某些条件,才能打开。例如:打开中断设备,需要等到连接设备的modem响应才能完成。...-(一般用于非阻塞的系统调用) 非阻塞的系统调用,由于资源限制/不满足条件,导致返回值为EAGAIN 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误...因此就产生了Resource temporarily unavailable的错误(资源暂时不可用),EAGAIN 的意思也很明显,就是要你再次尝试。 从字面上来看,是提示再试一次。...如:以 O_NONBLOCK的标志打开文件/socket/FIFO,如果连续做read操作而没有数据可读。...又例如,当一个系统调用(比如fork)因为没有足够的资源(比如虚拟内存)而执行失败,返回EAGAIN提示其再调用一次(也许下次就能成功)。

5K10

如何快速分析大型系统架构?

配置 IDE,进行源码分析 在腾出了足够的 CPU + 内存资源之后,我们就可以轻松愉快地打开 IDE,进行源码分析。于是,很快地,我就需要等待 IDE 把代码索引完。 好了,IDE 卡住了。...这样一来,我就能从发布包中复制依赖到工程中使用,然后愉快地继续阅读代码了 —— 顺便地也能从依赖分析项目的情况。...暂时没啥好的工具推荐,Google Slides、Sketch 这一类的都可以。 如果是调用关系的话,可以用 Graphviz 来绘制。只是呢,我已经用 Coca 来自动化绘制这个依赖关系了。...用户旅程验证 我们阅读代码,都是从入口开始验证。...回溯版本,重复 考虑到我使用的版本是不能成功编译地版本,所以又花了点时间再下一个旧版本的系统,以验证部分关系是否是正确的。 毕竟只有成功编译地版本,才是正常的版本。 8.

49710

浅谈 non-blocking IO Multiplexing + pollepoll 的正确使用

如果客户端不活跃了,一些不客户端不断开连接,这样就会占用服务器端的连接资源。服务器端也要踢掉不活跃的连接close。 4、使用 C++ erase 的注意点 ?...(注:如果用ET模式,读的时候读到EAGAIN,写的时候直到output buffer写完或者写到EAGAIN) 注:在使用 ET 模式,可以写得更严谨,即将 listenfd 设置为非阻塞...那什么时候重新打开呢? (5)、如果是epoll模型,可以改用edge trigger。...遇到这种情况,先关闭这个空闲文件,获得一个文件描述符名额;再accept(2)拿到socket连接的文件描述符;随后立刻close(2),这样就优雅地断开了与客户端的连接;最后重新打开空闲文件,把“坑”...填上,以备再次出现这种情况使用

1.8K10

对基于 TCP 的网络应用在 socket 非阻塞模式下 send 调用错误原因的深入分析

问题来源 本文首先观察出现问题的应用程序的逻辑,如图1所示;Client通过TCP协议与Server进行连接,socket选项设置为非阻塞,之后循环调用send发送报文直至完成发送;但在应用程序实际使用过程中...分析问题 本节通过两个视角来分析问题,一是UNIX系统中send函数,二是TCP协议栈的流量控制策略,综合这两点便能分析出本文‘问题来源’中所述send函数失败的原因; send函数 头文件:...Category #4:暂时不能发送的数据(52~95 bytes)。...10000000bytes数据 ] [ 图 10 通过wireshark查看的TCP包 ] 从图9中可知,客户端循环发送10000000bytes数据,但是当发送了3387000bytes之后send调用返回-1,并提示资源临时不可用信息...结论 当发送端流量远远大于接收端流量,虽然send函数在初期会返回,但是随着接收端缓冲区被填满,发送端的发送窗口会缩小为0,最终发送缓冲区也被填满,导致send函数返回-1,errno被设置为EAGAIN

2.1K02

Hduisa_ctf_wee4_fucksql

,做题的时候刚好崩了,所以过了一天才得到密码… 登录成功后进入hhh.php页面,页面中出现好几个提示 第一个提示摆明了就是vim下写了网页,所以进入cat.php后尝试下载缓存文件,cat.php~...2.post 进入数据库的key1查询返回行中key2等于所post的key2,返回flag 3.post 进入的数据过滤了大部分语句,(),但仍旧存在注入漏洞。...由于对sql和sql注入并没有学习,所以一下子卡住了… 后来经过学长的提醒,这个地方使用了groupby的黑魔法,去百度了两天并没有什么结果,于是去看mysql的官方文档。...–… 这样就拿到了flag,由于最后的sql注入完全是靠学长,所以这个flag暂时不提交了… 0x02 FuckMySQL2 上道题给出的一串字符,用base64解下是乱码,观察下,全部都是大写,...所以打开py解base32,得到: ‘Ni Xiang Yao Shell Me?

24530

GitHub文件下载慢?无法克隆项目?多种方法提升项目下载与克隆体验

官方也提供了在线转换器: https://www.jsdelivr.com/github [官方转换器] 当然,最近听说jsdelivr在调整,cdn.jsdelivr.net大陆可能无法访问了,可以暂时使用...我搭建了一个Demo:https://tool.mintimate.cn/gh 公共资源,仅供临时使用,如需大范围使用,请看后续操作后自行搭建。...复制 index.js : [打开index.js] 到左侧代码框: [粘贴后] 默认配置是:文件下载走jsdelivr,克隆走Fastgit; 如果这两个不能使用,或者需要改为走Worker流量,可以按提示修改...vim/vim [重定向效果] 如果你出现port 443: Connection timed out,就需要自定义域名绑定到Cloudflare Worker,可以参考后续的高级使用。...workers.dev顶级域名下的二级域名,所以如果使用Opt1的Cloudflare Workers方法,如果遇到workers.dev域名污染,就需要绑定自己的域名。

2.8K180

关于IO模型,和select、poll、epoll的区别

所谓阻塞方式的意思是指,当试图对该文件描述符进行读写,如果当时没有东西可读,或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止;而对于非阻塞状态,如果没有东西可读,或者不可写,读写函数马上返回...,而不会等待,O_NONBLOCK 的标志打开文件/Socket/FIFO句柄,如果连续做 read 操作而没有数据可读,此时程序不会阻塞起来等待数据准备就绪返回,read 函数会返回一个错误 EAGAIN...vi /etc/security/limits.conf 添加 *  soft  nofile  65536 *  hard  nofile  65536 系统文件描述符上限, 文件描述符一定会占用资源...,在有限的硬件条件下,比方内存等系统资源文件描述符必定会有上限,但远大于进程文件描述符大小: [root@ff353cc400a7 ~]# cat /proc/sys/fs/file-max 782683...epoll监听文件句柄的个数,则是系统文件描述符上限,句柄上限是系统最大可以打开文件的数目,这个通常可以达到百万量级; // 创建一个 epoll 的句柄,size 用来告诉内核这个监听的数目一共有多大

33720

Ubuntu 安装nginx 来搭建推流服务器

如果安装命令回车之后出现如下信息,请参考【Ubuntu “无法获得锁”解决方案】解决,但是我亲测对我没用,直接重启搞定 E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用...下载nginx的依赖pcre源码 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz 下载完成之后使用.../nginx-rtmp-module-master/ 配置好之后会多出一个Makefile文件(一种配置文件,定义了一系列的规则来指定编译操作)与objs文件夹 ?...目录,使用vim编辑nginx.conf文件 cd /usr/local/nginx/conf sudo vim nginx.conf 配置Nginx,支持http协议拉流 location /hls...�打开流 OK,rmtp打开正常,hls就不演示了,一样的 ? rmtp打开成功

2.4K20

今天我们结合代码详细聊聊BIO,NIO和AIO

在类似于网络中进行read, write, connect一类的系统调用时会被卡住。 举个例子,当用read去读取网络的数据,是无法预知对方是否已经发送数据的。...我们使用在时刻t1,使用epoll_wait监听他们的事件。在时刻t2,两个fd都到了100bytes数据,于是在时刻t3, epoll_wait返回了两个fd进行处理。...而不是次次被socket尚有数据的状态烦扰;写入数据也是如此。比如希望将一个资源A写入到socket。当socket的buffer充足,epoll_wait会返回这个fd是准备好的。...但是资源A此时不一定准备好。如果使用水平触发,每次经过epoll_wait也总会被打扰。在边沿触发下,开发者有机会更精细的定制这里的控制逻辑。 但不好的一面,边沿触发也大大的提高了编程的难度。...处理代码有可能需要读写文件,可能会很慢,从而干扰整个程序的效率; 处理代码有可能是一段复杂的数据计算,计算量很大的话,就会卡住整个执行流程; 处理代码有bug,可能直接进入了一段死循环…… 这时你会发现

62550

不用Linux也可以的强大文本处理方法

当前不可用,也可能不值得折腾。...初识VIM VIM分多种状态模式,写入模式,正常模式,可视化模式。 正常模式:打开或新建文件默认在正常模式,可以浏览,但不可以写入内容。...进入写入模式后,VIM使用起来可以跟记事本一样了。在写入文字,可以利用组合键CTRL+n和CTRL+p完成写作单词的自动匹配补全,从而加快输入速度,保证输入的前后一致。...首先也是把每篇文章的信息处理为单行显示,一样的模式更容易操作,去掉第一行行首不一致的部分 使用上下箭头可以回溯之前的命令,类似于Linux终端下的操作 %s/.*title":"\([^"]*\)....在匹配文章题目使用了[^"]*而不是.*,是考虑到正则表达式的匹配是贪婪的,会囊括更多的内容进来,就有可能出现非预期情况,所以做这么个限定,匹配所有非"内容。

1.4K60

Linux 如何手动释放Swap、Buffer和Cache

作为物理内存的扩展,linux会在物理内存不足使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容...其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需 要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存,刚才被交换出去的页面...服务异常等问题,linux虽 然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。...buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序...为了验证我们的结论是否正确,可以通过vi打开一个非常大的文件,看看cached的变化,然后再次vi这个文件,感觉一下两次打开的速度有何异同,是不是第二次打开的速度明显快于第一次呢?

7.8K20

聊聊BIO,NIO和AIO (1)到底什么是“IO Block”BIONIOIO多路复用用epoll实现的IO多路复用epoll的优势水平触发和边沿触发再来思考一下什么是“Block”总结

在类似于网络中进行read, write, connect一类的系统调用时会被卡住。 举个例子,当用read去读取网络的数据,是无法预知对方是否已经发送数据的。...我们使用在时刻t1,使用epoll_wait监听他们的事件。在时刻t2,两个fd都到了100bytes数据,于是在时刻t3, epoll_wait返回了两个fd进行处理。...而不是次次被socket尚有数据的状态烦扰;写入数据也是如此。比如希望将一个资源A写入到socket。当socket的buffer充足,epoll_wait会返回这个fd是准备好的。...但是资源A此时不一定准备好。如果使用水平触发,每次经过epoll_wait也总会被打扰。在边沿触发下,开发者有机会更精细的定制这里的控制逻辑。 但不好的一面,边沿触发也大大的提高了编程的难度。...处理代码有可能需要读写文件,可能会很慢,从而干扰整个程序的效率; 处理代码有可能是一段复杂的数据计算,计算量很大的话,就会卡住整个执行流程; 处理代码有bug,可能直接进入了一段死循环…… 这时你会发现

1.8K80

non-blocking IO Multiplexing + pollepoll 的正确使用

如果客户端不活跃了,一些不客户端不断开连接,这样就会占用服务器端的连接资源。服务器端也要踢掉不活跃的连接close。 4、使用 C++ erase 的注意点 ?...(注:如果用ET模式,读的时候读到EAGAIN,写的时候直到output buffer写完或者写到EAGAIN) 10、accept(2)返回EMFILE的处理(文件描述符已经用完) (1)、...那什么时候重新打开呢? (5)、如果是epoll模型,可以改用edge trigger。...遇到这种情况,先关闭这个空闲文件,获得一个文件描述符名额;再accept(2)拿到socket连接的文件描述符;随后立刻close(2),这样就优雅地断开了与客户端的连接;最后重新打开空闲文件,把“坑”...填上,以备再次出现这种情况使用

94020

Linux如何手动释放Swap、Buffer和Cache

作为物理内存的扩展,linux会在物理内存不足使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容...其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需 要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存,刚才被交换出去的页面...服务异常等问题,linux虽 然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。...buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件,会首先在buffers 与cached内存区查找,如果找到,直接读出传送给应用程序...为了验证我们的结论是否正确,可以通过vi打开一个非常大的文件,看看cached的变化,然后再次vi这个文件,感觉一下两次打开的速度有何异同,是不是第二次打开的速度明显快于第一次呢?

2.1K30

排查线上问题的9种方式

斯坦门茨在电机旁仔细观察,经过计算,用粉笔在电机外壳划了一条线,说:“从这里打开,把里面的线圈减少16圈。”工人们照他说的一试,电机果然运转如初,福特公司给他酬金,他索价一万美元。...执行某个测试能导致产生缺陷的数据被覆盖,而只有在试图使用脏数据才会再现。...比如程序正在写一个文件,这时候用命令行执行vim,可能导致fd文件描述符失效。关于文件描述符可参考《白话linux操作系统原理》或《趣谈IO多路复用的本质》。...感兴趣的朋友甚至可以自己实现一下fd文件描述符失效: 第一步:进程打开日志文件,使用lsof -p pid 第二步:vim打开文件前(或者打开vim没进行wq保存) 第三步:当vim 修改文件后wq...,会提示 提示文件在读期间被修改了,我们选择yes 第四步:此时再使用lsof -p pid命令来查看打开文件描述符,进程打开文件描述符的状态变为了deleted状态。

63510

聊聊BIO,NIO和AIO (1)

在类似于网络中进行read, write, connect一类的系统调用时会被卡住。 举个例子,当用read去读取网络的数据,是无法预知对方是否已经发送数据的。...我们使用在时刻t1,使用epoll_wait监听他们的事件。在时刻t2,两个fd都到了100bytes数据,于是在时刻t3, epoll_wait返回了两个fd进行处理。...而不是次次被socket尚有数据的状态烦扰;写入数据也是如此。比如希望将一个资源A写入到socket。当socket的buffer充足,epoll_wait会返回这个fd是准备好的。...但是资源A此时不一定准备好。如果使用水平触发,每次经过epoll_wait也总会被打扰。在边沿触发下,开发者有机会更精细的定制这里的控制逻辑。 但不好的一面,边沿触发也大大的提高了编程的难度。...处理代码有可能需要读写文件,可能会很慢,从而干扰整个程序的效率; 处理代码有可能是一段复杂的数据计算,计算量很大的话,就会卡住整个执行流程; 处理代码有bug,可能直接进入了一段死循环…… 这时你会发现

75330
领券