牛客网-Linux刷题知识点总结

  • Linux crontab中* * * * */usr/local/run.sh中的5个*号代表分钟 小时 日 月 星期
    crond用于执行周期性人物进程
  • hosts文件是一个存储计算机网络中各节点信息的计算机文件,这个文件负责将主机名称映射到相应的IP地址,hosts文件通常用于补充或替换网络中DNS的功能,和DNS不同的是计算机中用户可以直接对hosts文件进行控制;
  • MMUMemory Manage Unit的缩写,即是存储管理单元,其功能是和物理内存之间进行地址转换 在CPU和物理内存之间进行地址转换,将地址从逻辑空间映映射到物理地址空间;
  • UFS在Linux2.6.*下默认不支持,需要重新编译内核获得支持;
  • Linux中,当所需访问虚拟内存未被装载时,会发生page fault
  • 硬链接和软链接
    • 硬链接
      只能引用同一文件系统中的文件,引用的是文件在文件系统中的物理索引(也称inode)。当移动或删除原始文件时,硬链接被破坏,因为它引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件所在目录,有助于文件安全性。若删除的文件有相应硬链接,则文件依然会保留,知道所有对它的引用都被删除;
    • 软链接
      其实就是新建立一个文件,这个文件就是专门用来执行别的文件的(相当一Windows中的快捷方式)。所产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删除这个软链接文件,就相当于不需要这个链接,和原来存在的实体原文件没有任何关系,但删除原来的文件,则相应的软链接不可用;
    • 两者区别
      硬链接不会建立inode,只是在文件原来的inode link count域再增加1,因此硬链接是不可跨文件系统的;而软链接会重建一个inode,其结构与其他的不一样,只是一个指明源文件的字符串信息。源文件一旦删除,软链接将毫无意义;软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名进行链接,硬链接不可以;软链接可以对目录进行连接,硬链接不可以;ln默认创建的是硬链接,使用-s可以创建软链接;
  • swapon:启动交换文件的指令;mkswap:设置交换区,将磁盘分区或文件设为Linux的交换区;swapoff:关闭系统交换分区;
  • dchp.conf中用于向某个客户主机分配固定IP地址的参数时fixed-address
  • vsftpd服务流量控制的参数:
    • anon_max_rate=0:设置匿名登入者使用的最大传输速度,单位为B/s,0表示不限制速度,默认值为0;
    • local_max_rate=0:本地用户使用的最大传输速度,单位为B/s,0表示不限制速度,预设值为0;
  • 进程相关操作命令:
    • ps:列出系统中当前运行的那些进程;
    • pg:提供一次性的查看进程结果,所提供的查看结果不是动态连续的;
    • jobs:查看后台进程作业;
  • 文件I/O中,要从一个文件读取数据,应用程序先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对打开的文件是唯一的识别依据;
  • Unix系统中,以下都可用于进程通信:
    • Socket;
    • 共享内存;
    • 命名管道;
    • 消息队列;
    • 信号量;
  • 用于合并代码的git命令:
    • git pull --rebase
    • git cherry-pick
    • git merge
  • DVM指dalivk的虚拟机,每个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalivk虚拟机实例,而每个DVM都是在Linux中的一种进程,所以可以认为是同一个概念;
  • Linux中用户磁盘配额配置文件aquota.user的默认访问权限是:600
  • 函数库调用时语言或应用程序的一部分,而系统调用是操作系统的一部分(C.pwrite属于系统调用);
  • Unix系统中,目录结构采用带链接树形目录结构,又称为非循环图目录结构,指访问一个文件(或目录)可以有多条路径;
  • 命令行操作符:
    • > :输出重定向到一个文件或设备,覆盖原有文件;
    • >>:输出重定向到一个文件或设备,追加原有文件;
    • >!:输出重定向到一个文件或设备,强制覆盖原有文件;
    • <:输出重定向到一个程序;
  • 文件描述符:
    • 0:标准输入,stdin;
    • 1:标准输出,stdout;
    • 2:标准报错输出,stderr;
  • 查看计算机CPU、SWAP分区信息、硬盘信息等内容;
    • cat /proc/cpuinfo:查看一台Linux机器的CPU信息;
    • du:查看该目录占用文件系统数据块的情况;
    • cat /proc/swaps:查看SWAP分区信息;
    • df -lh:查看硬盘信息;
  • 子进程继承父进程后所共有属性:
    • 用户号UIDs和用户组号GIDs;
    • 环境Environment;
    • 堆栈;
    • 共享内存;
    • 打开文件的描述符;
    • 执行时关闭(close-on-exec)标志;
    • 信号(signal)控制设定;
    • 进程组号;
    • 当前工作目录;
    • 根目录;
    • 文件方式创建屏蔽字;
    • 资源限制;
    • 控制终端;
  • 子进程独有:
    • 进程号PID;
    • 不同的父进程号;
    • 自己的文件描述符和目录流的拷贝;
    • 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks);
    • 不继承异步输入和输出;
  • bash环境中,挂起当前进程的方式:ctrl+z,中断当前进程:ctrl+c
  • 用于进程间通讯(IPC)的四种不同技术:
    • 消息传递(管道,FIFO,Posix和System V消息队列);
    • 同步(互斥锁,条件变量,读写锁,文件和记录锁,Posix和System V信号灯);
    • 共享内存区(匿名共享内存区,有名Posix共享内存区,有名System V共享内存区);
    • 过程调用(Solaris门,Sun RPC);
  • 修改账号名称使用格式:usermod -l new_name old_name
  • 关于Linux系统的负载,可以通过TOP命令查看,也可以通过uptime查看;
  • 动态链接库和静态链接库的优缺点:
    • 静态链接库的优点:
      • 代码转载速度快,执行速度略比动态链接库快;
      • 只需保证在开发者的计算机中有正确的LIB文件,在以二进制形式发布程序时不需要考虑在用户计算机上LIB文件是否存在及版本问题,可避免DLL地狱等问题;
    • 动态链接库的优点:
      • 更加节省内存并减少页面交换;
      • DLL文件与exe文件独立,只需输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对exe文件造成任何影响,因而极大提高可维护性和可扩展性;
      • 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
      • 适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试;
    • 不足之处:
      • 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
      • 使用动态链接库的应用程序不是自完备的,依赖的DLL模块也要存在,若使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息,而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,若新模块与旧模块不兼容,则需要该模块才能运行的程序将崩溃;
  • Linux中要找出某一文件属于哪个RPM软件包的命令:rpm -qf filename
  • Linux系统进程类型:
    • 交互进程:由一个shell启动的进程,交互进程既可以在前台,也可以在后台运行;
    • 批处理进程:与终端无联系,是一个进程序列;
    • 监控进程(守护进程):Linux系统启动时启动的进程,在后台运行;
  • fatab是用于存放文件系统的静态信息的文件,位于/etc/目录下;
  • Linux系统中的内存段:
    • BSS(Block Started by Symbol):常指用于存放程序中未初始化的全局变量和静态变量的一块内存区域,特点是:可读写,在程序执行前BSS段会自动清0;
    • Data Segment:数据段,用来存放程序中已经初始化的全局变量的一块内存区域,属于静态内存分配;
    • Code/Text segment:指用于存放程序执行代码的一块内存区域,区域大小在程序运行前就已经确定,且内存区域常属于只读,某些架构也允许代码段为可写(即允许修改程序),代码段中也可能包含一些只读的常数变量如字符串常量等;
    • Heap:堆,用于存放进程运行中被动态分配的内存段,大小不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存是,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存是,被释放的内存从堆中被剔除,堆被缩减;
    • Stack:栈,又称堆栈,是用户存放程序临时创建的局部变量。除此之外,函数被调用时的参数也会被压入发起调用的进程栈中,到调用结束后,函数返回值也会存放回栈中。由于栈是先进后出的,所以特别适合用于保存恢复调用现场。从而可以把堆栈看做一个寄存、交换临时数据的内存区;
  • Linux主机完全安装RHEL5后,系统将默认安装DHCP服务器软件包,DHCP服务器的配置文件为/etc/dhcpd.conf,其配置文件默认是不存在的,需要手工创建;
  • 死锁发生的必要条件:
    • 互斥条件;
    • 请求和保持;
    • 不可剥夺;
    • 循环等待;
  • 进程的三种基本状态:
    • 运行态(Running):占有CPU,并在CPU上运行;
    • 就绪态(Ready):已具备运行条件,但由于没有空闲CPU,而暂时不能运行;
    • 等待态(Waiting/Blocked):因等待某一时间而暂时不能运行,如等待读盘结果;
  • fork()创建的新进程被称为子进程(child process),fork()给子进程返回一个0值,而给父进程返回一个非0值。继承的子进程从父进程继承了整个进程的地址空间,包括:上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等;
  • 对Linux下mysqldump备份命令及参数:mysqldump -h ip -u -p DBNAME >bak.sql:
    • -h:目标IP地址;
    • -u:跟上用户名;
    • -p:用户秘密;
    • DBNAME:数据库名;
  • UNIX系统组成:
    • 内核;
    • shell;
    • 文件系统;
    • 应用程序;
  • makefike文件博爱存了编译器和连接器的参数选项,还表述了所有源文件间的关系(源文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等),创建程序首先读取makefile文件,然后再激活编译器、汇编器、资源编译器和连接器以便产生最后的输出,最后输出并生成的文件为可执行文件。makefile中主要包含以下5个内容:
    • 显示规则;
    • 隐晦规则;
    • 变量的定义;
    • 文件指示;
    • 注释;
  • 常见网络操作系统:
    • Unix;
    • Linux;
    • Windows NT;
    • Netware 4.11;
    • Lan Manger 4.0;
  • 卸载设备的三种方式,通过设备名、挂载点或者设备名和挂载点,如umount /dev/hdc、 umount /mnt/cdrom、umount /mnt/cdrom /dev/hdc
  • 内存屏障主要分为以下几种,其中前三种均隐含了优化屏障的功能:
    • 读屏障:用于保证读操作有序;
    • 写屏障:用于限制写操作;
    • 通用屏障:对读写操作都有作用;
    • 优化屏障:用于限制编译器的指令重拍,不区分读写;
  • dhcpd.conf中用于某个客户主机分配固定IP地址的参数:fixed-address
  • setuid的用途是允许普通用户完成一些任务,而完成这些任务需要特权和通常被禁止的访问权限;
发布了104 篇原创文章 · 获赞 69 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/github_39655029/article/details/89603712