linux做题时小结
1、在传输大文件数据时,应禁用nagle,换言之,如果有必要,就应禁用nagle算法。
nagle算法使用与否在网络流量上差别不大,但是使用nagle算法的传输速度更慢。只需要将套接字可选项TCP_NODELAY改为1,其实翻译过来就是不延迟。
2、firmware是固件,不是防火墙,下次别瞎了。
固件分析:
固件是一种写入硬件设备的软件,作用是对应用和各项系统功能实时控制。
固件分析可以采用人工和工具方式进行,如:文件分析,熵分析,脚本分析;
熵分析用以分析二进制固件文件的加密情况,常用工具是binwalk-E;
自动化遍历固件文件系统的所有敏感文件内容常用脚本工具是firmwalker
提取固件二进制镜像中的根文件系统,是对固件进行分析的前提条件:binwalk是提取固件文件系统。
fireware-mod-kid工具的功能和binwalk工具类似;
file命令用来探测给定文件的类型,file命令对文件的 检查分为:文件系统,魔法幻术检查和语言检查3个过程。
3、父进程和子进程拥有独立的地址空间和进程号PID,所以子进程不会继承父进程的地址空间。
5、死锁的4个必要条件:
互斥条件:一个资源每次只能被一个进程使用;
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;
不剥夺条件:进程已获得的资源,在使用完之前,不能强行剥夺;
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
6、/etc/passwd:这个文件存放着所有用户账号的信息,包括用户名和密码。因此它对系统来说是至关重要的;
/etc/shadow:用于存储linux系统中用户的密码信息,又称为“影子文件”。在/etc/shadow中第二字段为用户的加密密码。如果摩玛是“!!”或"*"则代表没有密码不能登录,需要用户 登录验证。
/etc/inittab:配置文件用来设置系统的默认运行级别;
/etc/group:用户组配置文件,即用户组的所有信息都存放此文件中。
page fault(缺页中断)出现的原因:
页面中找不到对应地址的PTE(无效地址/ 有效地址但是没有载入主存)
对应虚拟地址的PTE拒绝访问。
也就是page fault和虚拟机内存有关。处理方法是:page fault被CPU捕获,跳转到page_fault_handler进行处理。
7、fopen是打开文件的函数,文件也可以看成是一个设备,打开一个设备将导致给设备所属的驱动程序发送一个IRP,而与真实硬件相关的驱动都运行于内核;
exit函数是结束进程的函数,结束进程需要访问PCB(进程控制块)和TCB(线程控制块)等等一些数据结构,而这些数据都存在于内核中;
memcpy和strlen我们可以直接不用调用任意函数写出来这种函数,肯定不会实现在内核的。
8、页式------可能产生内零头;
段式------外零头。
9、关机命令:halt ,init 0,poweroff,shutdown -h 时间
重启命令:reboot,init 6,shutdown -r 时间
所以shutdown不仅仅是关机命令,还需要看后面的选项参数
10、
- 硬链接不管有多少个,都指向同一个节点,会把节点的连接数增加,只要节点的连接数不是0,文件就一直存在,不管你删除的是源文件还是连接的文件,只要有一个存在文件就存在。
- 当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改,软链接不直接使用iNode节点号作为文件指针,而是使用文件路径作为指针,所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到指向的文件。软链接有自己的inode,并在磁盘上有一小片空间存放路径名。
- 只有软链接(符号链接)才产生新的inode节点;
- 软链接可以跨文件系统,硬链接不可以;
- 软链接可以对一个不存在的文件名进行连接;
- 软链接可以对目录进行连接;
11、linux系统调用是指:用户进程调用内核功能的接口
12、linux主机上完全安装了RHEL5,这时系统会默认安装DHCP服务器软件包。关于DHCP服务器的配置文件:
配置文件为/etc/dhcpd.conf;
配置文件默认是不存在的,需要手动创建。
13、Ctrl+c是强制中断程序的执行,回到shell(比如使用redis时);
Ctrl+z是将任务中断,但是此任务并没有结束,只是回到后台中维持挂起的状态;
Ctrl+d不是发送信号,而是表示一个特殊的二进制值,表示EOF。
可以使用fg/bg操作继续前台或后台的任务:
fg命令把被中断的任务放在前台执行;
bg命令把被中断的任务放在后台执行;
使用fork或vfork创建子进程后,子进程通常会调用exec函数来执行另外一个程序。系统调用exec用于执行一个可执行程序以代替当前进程的执行映像,exec没有生成新进程。一个进程一旦调用exec函数,它本身就“死亡”了,系统把代码段替代成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段和堆栈段,唯一保留的就是ID,也就是说,对系统而言,还是同一个进程,不过执行的是另外一个进程了。
jobs查看当前有多少在后台运行的命令。
14、git命令合并代码:
- git merge
- git pull;
- git cherry-pick;
git blame :该命令执行时,会逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期等。
15、ndd:删除当前行开始的连续n行;
1,10d表示删除1到10行;
n,$d:删除从第n行开始至文本末尾。
16、ping命令常用来查看网络连接是否相通,底层是ICMP协议;
traceroute:是常用的路由器查看命令,用来查看数据到达某个主机经过的路由地址;
nestat:用来查看本机的传输层连接状态,例如TCP连接,端口等信息。