Linux文件系统、虚拟内存、进程与线程、锁

文章目录

  • 文件系统
    • su
      • Linux 中默认没有 super 命令
      • /proc
      • /etc
      • /var
      • /root
      • /home
      • /bin
      • /dev
      • /lib
        • /sbin
    • tmp
    • 句柄
    • maxfd
    • PWD
    • path
    • home
    • export
    • w
    • df
    • du
  • 虚拟内存
    • jobs
    • Linux下一切皆文件
    • swapon
    • mkswap
  • 进程与线程
    • nohup
    • 子进程与父进程
    • unix进程间的通信方式
    • 线程的同步方式
    • sed
    • tar
    • history
  • 硬链接
    • ln(link files)
    • useradd
    • crontab
  • 压缩与解压缩
    • cut
    • fg
    • ext文件系统
    • fmt
  • shell
    • $
    • ps
    • SUID
    • nginx
    • lpr
    • -z、-n
    • diaplay
  • 内核
  • 设备
    • DOS
    • 网络操作系统

文件系统

程序执行时,读取指令是指计算机自动从存储器中取出一条指令。
存储器由大量可以存储二进制数据的存储单元组成。
数据总线从存储器中获取数据的过程应该为“读操作”。

su

su(switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码;

  1. 如果使用一个普通账户 telnet 远程登录到 Linux 系统中,如何改变身份以 root 权限管理系统(su
  2. susu -是有区别的,su -会切换环境变量,su只是切换用户

Linux 中默认没有 super 命令

/proc

/proc/interrupts 显示使用的中断
/proc/ioports 当前使用的I/O端口
/proc/kcore 系统物理内存映像。与物理内存大小完全一样,但不实际占用这么多的内存。
/proc/kmsg 内核输出的消息,也被送到syslog
/proc/meminfo:查看物理内存的大小

/etc

在 Linux 系统中,用来存放系统所需要的配置文件和子目录是(/etc

/etc,etc 是 Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件子目录;主机特定的系统配置。

你通过编辑/etc/group文件来改变了sales group的GID,所有的组员都能成功的进行的转换,除了Jack,他甚至都无法登陆,其原因是什么?在/etc/passwd里指明了Jack的GID

一,jack在某个组里 。我们可以认为Jack用户建立了一个到组资源的连接(类似于软连接),
二,现在组的GID改变了,相当于地址变了。
三,而jack用户若想继续访问组的资源,他的GID也要随之改变。否则就会找不到地址了。
四,本题中Jack的GID是固定的

  • /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从 /etc/profile.d 目录的配置文件中搜集shell的设置。
  • /etc/bashrc:为每一个 运行bash shell 的用户执行此文件。当bash shell被打开时,该文件被读取。
  • ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息, 当用户登录时,该文件仅仅执行一次 !默认情况下
  • ~/.bashrc:是在bash环境时.bash_profile的替补。该文件包含专用于个人的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
  • /etc/bash.bashrc 或者 /etc/.bashrc 是全局配置文件。
  • ~/.bash_logout:当每次退出系统(退出bash shell)时,要执行该文件(命令)。
  • /etc/hosts:主机名到 IP 地址的映射关系的文件;
  • /etc/resolv.conf:DNS 服务的配置文件,设置DNS;
  • /etc/gateways:建立动态路由需要用到的文件 ;
  • /etc/services:定义了网络服务的端口;
  • /etc/inittab:init启动进程需要读取()配置文件
  • /etc/skel:存储用于创建用户目录的系统用户默认文件【skel是skeleton的缩写,意为骨骼、框架】

假如你需要找出/etc/my.conf文件属于哪个包(package),你可以执行:(rpm -qf /etc/my.conf

不同Linux发行版用的是不同软件包系统,分为Debian的.deb技术(Debian,Ubuntu)和Red Hat的.rpm技术(Fedora,CentOS,redHat).
其中rpm是低级的RedHat软件包管理工具:
-i package_name 安装软件包
-U packagefile 更新软件包
-qa 列出已安装的软件包列表
-q package-name 判断软件包是否安装
-qf file_name 判断某个特定文件是由哪个软件包负责安装的

系统当前已经加载的所有文件系统在____/etc/mtab_____文件中得到反映。

文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。

  1. 启动时按fstab文件描述内容加载文件系统
  2. /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。
    当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面介绍如何在此文件下填写信息。
    fstab文件存放 文件系统的静态信息,当系统启动时候,会自动从该文件读取相关信息,并将指定的文件系统挂载到指定的目录。
    fstab文件描述内容加载文件系统
  • /etc/fstab文件中指定的文件系统加载参数中, 以下哪儿个参数一般用于CD-ROM等移动设备:
    • noauto【表示手动挂载】
    • default表示和使用默认设置
    • sw 表示自动挂载的可读写分区
    • ro 表示挂载只读权限的
    • rw 表示挂载读写权限的

用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对所有用户都有效
若要使得用户登录验证,需要修改/etc/shadow脚本。
/etc/hosts:包含了主机名到IP地址的映射关系的文件。
/etc/resolv.conf文件功能:DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名
/etc/host.conf指定主机名查找方法,通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。
/etc/networks配置网络的

/var

/var,var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件;

  1. 你被需要检查系统中的设备情况,需要检查哪个log日志?/var/log/messages
  2. linux系统中的/var/log/lastlog日志记录了所有用户最后登录的记录,可以用lastlog命令查看
  3. /var/run/utmp日志记录了正在登录本系统中的用户信息,可以用last -f命令查看
  4. 执行last指令时,它会读取位于/var/log/wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。【linux系统中的/var/log/last日志可以用last命令查看❌】wtmp是二进制文件,他们不能被诸如tail命令剪贴或合并,需要使用who、w、users、last和ac来使用这两个文件包含的信息。

/root

/root,该目录为系统管理员,也称作超级权限者的用户主目录;

/home

/home,用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

linux系统中,以下哪个文件会记录用户操作的历史记录?(/home/.bash_history

/bin

/bin,bin 是 Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命令,可以被直接。

/dev

/dev,dev 是 Device(设备)的缩写,该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的;
/dev/zero:是一个输入设备,可以用它来初始化文件。

  1. Linux 文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在哪个目录中(/dev
  2. 将光盘/dev/hdc卸载的命令是?umount /dev/hdc

挂载设备使用mount,卸载设备使用umount,有三种方式,通过设备名,挂载点或者设备名和挂载点
如题目所示:
umount /dev/hdc
umount /mnt/cdrom
umount /mnt/cdrom /dev/hdc

/lib

/lib,lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/sbin

/sbin,s 就是 Super User 的意思,是 Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。

  1. 按照Linux对文件的划分,Linux 下的 /sbin 目录通常存放的是哪类文件(系统工具)。

tmp

如果存在文本文件 /tmp/testfile,并且文件行数小于等于 10 行,则输出文件前 3 行,下列脚本正确的是(

if [[ -f '/tmp/testfile' ]] && [[ wc -l /tmp/testfile -le 10 ]];then head -3 /tmp/testfile fi

句柄

  1. Linux系统中,用户文件描述符0表示:标准输入设备文件描述符
    Linux文件系统、虚拟内存、进程与线程、锁_第1张图片
    Linux程序运行后,文件句柄0,1,2分别是:(标准输入,标准输出,标准错误

  2. linux命令执行成功后会返回:0
    Linux文件系统、虚拟内存、进程与线程、锁_第2张图片

maxfd

采用多路 I/O 复用监听 3 个套接字的数据时,如果套接字描述符分别是:5,17,19,则下面 select 代码中的 maxfd 应取为(20

select(int maxfd,struct fd_set* rdset,NULL,NULL)

maxfd 是指定要监视的文件描述符的范围,一般取监视的描述符数的最大值 + 1。

  1. 以下哪个命令可实现文件去重并排序(sort demo.txt|uniq

uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
sort 命令用于将文本文件内容加以排序。
uniq 只能处理相邻的重复行,所以需要先排序才能去重。

PWD

大写的PWD代表环境变量。查看PWD环境变量:echo $PWD
小写的pwd是shell命令输出当前工作目录,查看系统中所有环境变量可以使用env,可以看到PWD的值会随着工作目录变化而变化

  • PWD记录当前的目录路径,当利用 cd 命令切换当前目录时,系统自动更新 PWD 的值
  • OLDPWD 记录旧的工作目录,即用户所处的前一个目录。

path

PATH 是 Linux 中一个极为重要的环境变量,它用于帮助 Shell 找到用户输入的命令。用户所输入的每个命令实际上是一个源代码文件,计算机执行这个文件里的代码以实现这个命令的功能,这些源代码文件称为可执行文件。可执行文件存在于各种各样的目录下, PATH 就记录了一系列的目录列表, Shell 为每个输入命令搜索 PATH 中的目录列表。

home

HOME 记录当前用户的目录,由 /etc/passwd 的倒数第 2 个域决定, HOME 目录用于保存用户自己的文件。

export

用于设置环境变量的是:export
Linux文件系统、虚拟内存、进程与线程、锁_第3张图片

w

w命令用于显示目前登入系统的用户信息。

df

df(disk free) 命令: 用于显示文件系统的磁盘使用情况,查看硬盘被占用了多少空间和剩余多少空间

在命令行查看一台linux机器的CPU:cat /proc/cpuinfo
在命令行查看一台linux机器的SWAP分区信息:cat /proc/swaps
在命令行查看一台linux机器的硬盘信息:df -lh

du

du(disk usage,磁盘使用)命令可以在不添加参数的情况下查看某个文件的大小,统计目录(或文件)所占磁盘空间的大小,查看该目录占用文件系统数据块的情况 。

du 命令只计算被文件占用的空间。不计算文件系统metadata 占用的空间,如inodes, inode maps, 或者disk maps。

虚拟内存

  1. . 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存,使得每个进程看到的内存空间一致
  2. 虚拟存储器具有请求调入和置换功能,所以(对进程来说)虚拟内存的大小不受物理内存大小的限制
  3. 虚拟存储技术缓解主存容量小的矛盾。
  4. 交换分区的作用是虚拟内存空间
  5. 交换分区的数据存取速度比物理内存慢
  6. 分段管理的突出的优点有:
    • 可以实现有意义的共享【共享库是一个常见的例子,在分段系统中,可以把图形库放到一个单独的段中由各个进程共享,不再需要在每个进程的地址空间都保存一份。】
    • 方便地址转换【在段式存储管理中,每个段地址的说明为两个量:一个段名和一个偏移量。在段内,是连续完整存放的。而在段与段之间是不一定连续编址的。段名和位移构成了一种二维编址。】
    • 程序不需要连续的内存【段式管理是不连续分配内存技术中的一种。其最大特点在于他按照用户观点,即按程序段、数据段等有明确逻辑含义的“段”,分配内存空间。克服了页式的、硬性的、非逻辑划分给保护和共享与支态伸缩带来的不自然性。】
  7. 不属于分段管理的突出的优点有::用户可以使用覆盖技术
  1. 线程有自己的栈,但没有堆。
  2. 普通整数的一般赋值、增量和减量语句会产生多条机器指令,操作均不具有原子性,需要同步。

jobs

  1. 查看后台进程作业ID的指令是(jobs
    pg:提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的

Linux下一切皆文件

  1. 目录在linux文件系统中是以怎样的形式存在的?文件

可使用下列哪个工具将.o文件打包成静态库文件(.a)?ar
ar命令可以用来创建、修改库,也可以从库中提出单个模块。

  1. eadelf命令,一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(.so)或者静态库(.a) 等包含ELF格式的文件。
    objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

  1. Linux系统中网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在下面什么文件中体现?httpd.conf

在linux中,httpd.conf :网络服务器软件的配置文件,对WWW服务器进行访问、控制存取和运行等控制 。lilo.conf :由引导管理程序 lilo 读取的文件 inetd.conf :保存了系统提供internet服务的数据库并对其进行控制,如打开/关闭某项服务。 resolv.conf:域名解析器使用的配置文件
.
httpd.conf :网络服务器软件的配置文件,对WWW服务器进行访问、控制存取和运行等控制
lilo.conf :由引导管理程序 lilo 读取的文件
inetd.conf :保存了系统提供internet服务的数据库并对其进行控制,如打开/关闭某项服务。
resolv.conf:域名解析器使用的配置文件

  1. 使用git merge命令、使用git pull命令、使用git cherry-pick命令都可以合并。
    执行git blame命令时,会逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期等。

swapon

启动交换文件的指令是(swapon

mkswap

mkswap:设置交换分区

进程与线程

  1. 不是Linux系统进程类型的是就绪进程。【就绪指状态】

  2. Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。

    • 1.交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
    • 2.批处理进程——这种进程和终端没有联系,是一个进程序列。
    • 3.监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。
  3. 为了便于管理进程,一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态
    (1)运行态(running):进程占有处理器正在运行。
    (2)就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行。
    (3)等待态(wait):又称为阻塞态(blocked)或睡眠态(sleep),指进程不具备运行条件,正在等待某个事件的完成。
    进程状态的转换图如下:
    Linux文件系统、虚拟内存、进程与线程、锁_第4张图片

    • 子进程的父进程在它之前退出,子进程会被 init 进程接管,它不会造成资源浪费。【孤儿进程会被 init 进程接管,不会浪费资源;】
    • 进程是资源管理的最小单位,而线程是程序执行的最小单位,Linux 下的线程本质上用进程实现
    • 子进程如果对资源只是进行读操作,那么完全和父进程共享物理地址空间
    • 僵尸进程没有被父进程回收,会浪费资源
  4. 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。【孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上 ,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和***出面处理它的一切善后工作。 因此孤儿进程并不会有什么危害。】
    僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。【如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。】
    有时会刻意使进程成为孤儿。比如 守护进程daemon,nohup命令。

  5. 负载指的是处于正在运行或者不可中断状态的进程的平均值,这两种状态都在使用CPU。而就绪状态,还没有用到CPU,和负载无关。

  6. 两个进程中分别产生生成两个独立的fd
    两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性
    进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
    两个进程可以分别读取文件的不同部分而不会相互影响

  7. Linux2.6 中,默认情况下一个进程最多能打开多少文件?1024

  8. cmd1 && cmd2:如果cmd1成功则执行cmd2
    cmd1||cmd2:如果cmd1不成功则执行cmd2
    cmd1|cmd2:这个是管道, 把cmd1的输出作为cmd2的输入
    cmd1;cmd2:连续执行两条命令,先cmd1,然后cmd2

nohup

在退出unix系统账户之后还需要继续运行某个进程,那么可用(nohup

子进程与父进程

  1. Fork后子进程保留了父进程的什么?环境变量当前工作目录
    子进程与父进程的区别在于:锁、程ID
  2. 在Linux上,对于多进程,子进程继承了父进程的共享内存信号掩码已打开的文件描述符
  3. 在Linux上,对于多进程,子进程没有继承了父进程的进程地址空间
    • 子进程继承父进程
      • 用户号UIDs和用户组号GIDs
      • 环境Environment
      • 堆栈
      • 共享内存
        打开文件的描述符
        执行时关闭(Close-on-exec)标志
        信号(Signal)控制设定
        进程组号
        当前工作目录
        根目录
        文件方式创建屏蔽字
        资源限制
        控制终端
  • 子进程独有
    进程号PID
    不同的父进程号
    自己的文件描述符和目录流的拷贝
    子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
    不继承异步输入和输出
  • 父进程和子进程拥有独立的地址空间和PID参数。
  • 子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
  • 经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”

unix进程间的通信方式

(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
- 系统管道
- 无名管道
- 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
-
(2)文件锁
(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺
(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
(6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
(7)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
【POSIX信号量函数的名字都以( sem_ )开头。【信号量(Semaphore)】】
(8)套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

线程的同步方式

在linux中,线程同步的方式包括:互斥锁(或称互斥量Mutex)读写锁(rdlock)条件变量(cond)信号量(Semophore)

  1. 在linux中,线程的同步方式不包括:( 临界区

临界区只是用来对共享资源的保护,临界区在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么有线程进入后,其他线程试图访问时将被挂起,直到进入临界区的线程离开,临界区并不能保证线程的执行顺序,先到先得。

  1. 中日兵乓球联赛男子双打比赛,中方C1,C2两位选手日方J1,J2两位选手对阵。首轮由中方发球,直至接球失误后由队方换发球。试用PV操作原语分析这一过程,以下合理的说法是( 应设置至少4个信号量,分别代表4类消息的传递。4个信号量的初始值只有一个为1,其余均设置为0。

发现乒乓球是一个互斥量,所以初值为1,C1,C2,J1,J2发球为4个状态,所以除了一个互斥量为1外,其余各部分初值为0。
首先分析互斥还是同步(有相互联系的,即你发生我才发生),发现乒乓球是一个互斥量,所以初值为1,然后发现当中方或者日方有任意一方接球失误后,都换为对方发球,属于同步关系,其中有三个量,中方失误,日方失误,轮换发球(即同步关系)由于刚开始失误次数肯定都是0,又因为轮换发球属于同步关系初值为0,所以除了一个互斥量为1外,其余各部分初值为0

sed

  1. sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。sed命令用于行的新增/删除, 行的替换/显示, 搜寻并替换, 直接修改文件。
    sed命令行格式为:sed [-nefri] ‘command’ 输入文本
    常用选项:
    -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    -e∶直接在指令列模式上进行 sed 的动作编辑;
    -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
    -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
    -i∶直接修改读取的档案内容,而不是由萤幕输出。

    常用命令:
    a新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p:打印,将某个选择的数据印出来。通常 p 会与参数 sed -n 一起用。
    s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g!
    g 是行内进行全局替换

  2. 可以打印文件(demo.log)中包含ERP的行到标准输出的命令:sed -n '/ERP/p' demo.log

tar

tar(tape archive )命令用于备份文件,是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件;

  1. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz 文件,并将此文件保存到/home 目录下,实现此任务的tar 格式为tar zcvf /home/wang.tar.gz /home/stud1/wang
  2. option z表示压缩,所以才有后面的.gz, c表示创建这个压缩包,v是可视,能看到其打包和压缩的过程,f表示文件
  3. 解压 tar zxvf 文件名.tar.gz
    压缩 tar zcvf 文件名.tar.gz 目标名
  4. 若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?
    答:应该用tar命令进行解压,执行tar -xzvf backup.tar.gz命令即可。

history

  1. 我希望看最近执行的3个命令(不包括history),需要用哪个命令?history 4。【history没有-n选项】
  2. 使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?
    答:还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

硬链接

  1. 在Linux系统,关于硬链接的描述正确的是(不可以跨文件系统链接文件的i节点与被链接文件的i节点相同

  2. 硬链接就是让链接文件的i节点号指向被链接文件的i节点
    只有符号链接才产生新的inode节点
    链接分为硬链接和符号链接
    硬连接不能链接目录文件

  3. Redhat9 所支持的安装方式有(从本地硬盘驱动器进行安装通过NFS进行网络安装通过HTTP进行网络安装

  4. 下面哪些命令可以查看file1文件的第300-500行的内容?

    • cat file1| head -n 500 | tail -n +300
    • sed -n ‘300,500p’ file1
    • makefile文件保存了编译器和连接器的参数选项
    • 主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释
    • 默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件, 找到了解释这个文件
    • 在Makefile可以使用include关键字把别的Makefile包含进来
  5. 统计日志中有多少个不同的ip登陆,下面可以正确统计的为:

    • cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | wc -l
    • cat catalina.log | awk '{print $3}' | sort -k1nr | uniq -c | wc –l
    • A:错在 加了 head -10 显示前十
      B:错在uniq只会对相邻的行去重,所以需要先排序再去重Linux文件系统、虚拟内存、进程与线程、锁_第5张图片

ln(link files)

ln命令:为某一个文件在另外一个位置建立一个同步的(符号)链接
建立硬链接(默认):ln 源文件 目标文件
建立软连接:ln -s 源文件 目标文件。【参数 -s 表示创建的是软链接】。

  1. 在Linux中,当我们用 ls -al 命令列出当前目录下面的文件列表,哪个文件是符号连接文件lrwxr–r-- 1 hel users 2024 Sep 12 08:12 cheng- peng.yan1)

文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种:

  • 普通文件类型
    • d 目录文件
    • b 块设备文件
    • c 字符设备文件
    • s 套接字文件
    • p 管道文件
    • l 链接文件
  1. 在 Linux 系统中,对命令“In file1 file2”描述正确的是(建立硬链接 file2,并指向 file1)。

useradd

  • useradd 命令用于建立/增加用户帐号;
    • 新建一个管理员用户 admin,需要使用的参数(useradd -u 0 -o admin

      -u 用户号 指定用户的用户号;因为系统用户的用户号为0,故指定用户号为0 如果同时有-o选项,则可以重复使用其他用户的标识号;因为系统本身存在用户号为0的系统用户,故应该使用该参数。

    • 创建用户时不指定用户主目录的参数(useradd -M
  • usermod 命令用于修改用户帐号;
  • groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中;
  • userdel 命令用于删除用户帐号。

crontab

  1. crontab是一个定时执行任务命令,不能查看系统负载。
  2. crontab文件由6个域组成,每个域之间用空格分隔:MIN HOUR DAY MONTH DAYOFWEEK COMMAND
  3. Linux crontab中* * * * * /usr/local/run.sh这句话5个*号分别代表什么?分钟[1-59] 小时[0-23] 日[1-31] 月[1-12] 星期[0-6]【第6列为要运行的命令 】
  4. */5 * * * * exam:每5分钟运行一次crond任务exam
  5. 命令 01 07 * * 5 /usr/bash /usr/local/run.sh 的执行时间是(每周五 07:01 分
  6. 让系统自动在每个月第一天早上4点钟执行一个维护工作:00 4 1 1-12 * /maintenance.pl
  7. 在某行 crontab 配置中,执行时间配置段为:*/30 * 3 * * ,表示什么意思(每月3号当天,每30分钟执行命令)。
  8. arp协议用了(broadcast)

常见
广播: rap 地址解析,rip路由距离向量算法
组播:ospf路由链路状态算法
ARP 地址解析协议,工作位于物理层上一层的数据链路层,用于将 IP 地址和物理地址MAC进行映射,
数据链路层上传输的数据单元是帧,ARP 协议用来将每次发送帧中的目标 IP 地址转换为物理 MAC 地址。
更加详细的工作流程则是:
每当主机发送一个数据包的时候,该数据包传递到数据链路层便会被封装成一个帧,
帧中的目标IP 地址会根据 ‘转换表’ 中记录的 对来进行转换,
如果目标IP 地址在’转换表’(缓存)中有映射的 MAC 地址(命中),
那么便将该帧发送给由该MAC 地址标识的主机
如果目标IP 地址在转换表中找不到映射的 MAC 地址(没命中),
那么便发送ARP 广播报文,
该广播报文中包含目标IP 地址,对于位于相同网段中的其他主机,.
在接收到该ARP 广播报文之后,从中抽取该 ARP 报文携带的 IP 地址,
并将该IP 地址和自己的 IP 地址进行对比,
如果不同,置之不理即可
如果和自己的IP 地址相同,那么,便将自己的 MAC 地址封装成数据包,回复给发送 ARP 广播的主机,
而发送 ARP 广播的主机 在接收到携带 MAC 地址的回复报文之后,将其存放到 ‘转换表’ 中,
然后,继续发送因为不知道MAC 地址而中断发送的报文。
如果是做题的话,可以这样记:
常说的广播风暴是由ARP 协议引发,所以 ARP 协议使用的是广播
.
在Linux中查看ARP缓存记录的命令是(“arp –a”)?

“arp –a”:all
“arp –d”:delete
“arp -L”:不知道,找不到这个参数
“arp –D”:Device

  1. 局域网内有一主机ip为192.168.1.2,请找到他的mac地址
    先使用ping 192.168.1.2,然后使用arp -a找对应mac地址

  2. 关闭文件的目的之一是释放内存中的文件对象
    关闭文件的目的之一是保证将输出的数据写入硬盘文件
    文件读写过程中,程序不是直接与磁盘文件进行数据交换【文件读写过程中,要通过缓冲区buffer,程序不可能直接和硬盘文件交换数据的,不然要内存和缓存干嘛呢是吧。】
    打开文件的目的是使文件对象与磁盘文件建立联系
    Linux文件系统、虚拟内存、进程与线程、锁_第6张图片

  3. 假设Apache产生的日志文件名为access_log,在apache正在运行时,执行命令mv access_log access_log.bak,执行完后,请问新的apache的日志会打印到哪里,请选择下列描述正确的是?虽然此时文件被改名,但是由于服务正在运行,因为它的inode节点的位置没有变,程序打开的fd仍然会指向原来那个inode,不会因为文件名的改变而改变。apache会继续向已改名的文件中追加日志。

mv对inode的影响:
前提:使用mv命令搬移的文件目的地跟原文件在同一文件系统内

  1. 系统会新建一个目录项,将新档案名称对应到inode number (注意,inode number并没有变,只是对应了新的名字)
  2. 删除旧档案
    (搬移档案的行为对inode table没有任何影响,也不会将档案搬移到其他的block)
    由此可见,在我们看来access_log 和 access_log.bak 是两个不同的文件,其实他们是同一个文件,只是换了名字而已。
    由于程序打开的fd指向原来的iNode,而MV操作并不会改变这个inode,因此对正在运行的程序不会产生影响。
  1. Linux什么情况下回发生page fault:所需访问虚拟内存未被装载

影响一个应用程序性能的因素有很多,这次说说page fault。

  1. 为什么会存在page fault问题?
    计算机的物理内存(看看你的内存条)有限,但应用程序的需求是无限的,操作系统为了解决这个矛盾,使用了虚拟内存的设计。简单的描述就是,给应用程序一个与物理内存无关的虚拟地址空间,并提供一套映射机制,将虚拟地址映射到物理内存。当然应用程序是不知道有这个映射机制存在的,它唯一需要做的就是尽情的使用自己的虚拟地址空间。操作系统提供的映射机制是运行时动态进行虚拟地址和物理地址之间的映射的,当一个虚拟地址没有对应的物理内存时候,映射机制就分配物理内存,构建映射表,满足应用程序的需求,这个过程就叫page fault。
    与直接访问物理内存不同,page fault过程大部分是由软件完成的,消耗时间比较久,所以是影响性能的一个关键指标。
    Linux把page fault又进一步分为minor page faultmajor page fault。前面提到的分配物理内存,构建映射表过程可以看做是minor page fault。major page fault是由swap机制引入的,对于swap情况,地址映射好了后,还需要从外部存储读取数据,这个过程涉及到IO操作,耗时更久。
  2. 如何查看应用程序的page fault指标呢?
    1) 可以使用time命令:
    比如我想看看svm-train的情况(模型训练很耗资源)\time svm-train age_train_equal.txt(前面的斜杠表示不使用shell的内嵌time命令)
    输出是:7.68user 0.02system 0:07.71elapsed 99%CPU (0avgtext+0avgdata 42768maxresident)k
    0inputs+6696outputs (0major+15445minor)pagefaults 0swaps
    可以看到只有minor page fault,没有major。
    time命令的实现是用到了Linux提供的rusage机制。Linux的wait API可以返回一个应用程序的运行过程的资源消耗情况。
    如果你想在自己的代码中获取资源利用情况,可以使用libc的getrusage函数,这个函数也是内核的API。
    2) proc文件系统
    Linux系统下的/proc/PID/stat文件,也提供了相关统计数据。
  1. 一般情况下,串行程序并行化设计需要将工作进行拆分,使得分布在每个进程中的工作量大致相仿,并行让它们之间的通信量最少。以下串行程序并行化设计步骤正确的是: 1、将串行程序中需要要执行的指令和数据按照计算部分拆分成多个小任务 2、将上一步聚合好的任务分配到进程/线程中。这一步还主要注意的是,要使得通信量最小化,让各个进程/线程所得到的工作量大致均衡 3、确定第一步识别出来的任务之间需要执行何种通信 4、将第一步确定的任务与通信结合成更大的任务1->3->4->2

  2. 以下函数中,和其他函数不属于一类的是__fseek__。【fseek是函数,readpreadwritepwritelseek都是系统调用】

  1. 不属于POSIX互斥锁相关函数的是:int pthread_mutex_create(pthread_mutex_t* mutex)
    属于POSIX互斥锁相关函数的是:int pthread_mutex_destroy(pthread_mutex_t* mutex)
    int pthread_mutex_lock(pthread_mutex_t* mutex)
    int pthread_mutex_trylock(pthread_mutex_t* mutex)

国际pthread_mutex_destroy(pthread_mutex_t *互斥); //销毁互斥锁
int pthread_mutex_lock(pthread_mutex_t *互斥);以原子操作方式给互斥锁加锁
int pthread_mutex_trylock(pthread_mutex_t *mutex);非阻塞版本
int pthread_mutex_unlock(pthread_mutex_t *mutex);以原子操作方式给互斥锁解锁

POSIX互斥锁相关函数有以下:
pthread_mutex_init 初始化一个互斥量
pthread_mutex_lock 给一个互斥量加锁
pthread_mutex_trylock 加锁,如果失败不阻塞
pthread_mutex_unlock 解锁
pthread_mutex_destroy 销毁互斥锁

linux中的锁主要有以下几类。
spin_lock(自旋锁):是Linux内核中最基础的锁机制。自旋锁不会引起调用者休眠,如果自旋锁已经呗其他的执行单元持有,调用者就会一直循环等在该自旋锁的持有者是否已经释放了锁。自旋锁适用于锁的持有者保持锁的时间比较段的情形。
读写自旋锁(__RW_LOCK_UNLOCKED):也就是没有读,没有写的请求时,读者可以获得读写锁。在读写锁没有写者的时候,读者获得器自旋锁。
seq_lock(顺序锁):是对读写锁的优化。也就是写锁不被读锁所阻塞。写者写的同时,读者可以读。
semaphore(信号量):信号量和自旋锁的区别时信号量会引起调用者的休眠。
RCU(读-拷贝):在访问RCU保护的资源时,读者不需要任何等待,而写者访问它时首先得拷贝一个副本,然后对父辈修改,最后在没有任何对读者操作gai’zi’yuan把指向原来的数据的指针指向新的数据。
Semaphore、Spinlock、seqlock

  1. man 5 passwd:显示passwd文件的结构
  2. 为了向二进制文件尾部增加数据,打开文件的方式应采用″ab″

rb表示读二进制文件,尾部追加数据,为‘rb+’
A.″ab″ :对一个二进制文件可读可写,写数据会追加到文件末尾
B.″rb+″ :读写打开一个二进制文件,只允许读写数据 ,之前的数据会清除
C.″wb″:只写打开或新建一个二进制文件,只允许写数据,之前的数据会清除
D.″wb+″:读写打开或建立一个二进制文件,允许读和写,之前的数据会清除
Linux文件系统、虚拟内存、进程与线程、锁_第7张图片

  1. 命令

    subnet 166.173.197.131 netmask 255.255.255.192{
    range 166.173.197.128 166.173.197.191;
    default-lease-time 600;
    max-lease-time 7200;
    }
    

    表示:一个两小时的最大租用时间指定了一个十分钟的缺省租用时间

  2. subnet 设置一个子网 166.177.131/24
    range 可分配的IP地址范围上 166.17
    7.10 ~ 166.17***7.107
    default-lease-time 默认租约时间
    max-lease-time 最大租约时间

  3. Linux的非root用户,在自己的目录中,不可以删除非空目录dirs的方法是:mv dirs /dev/nulldestroy dirs
    Linux文件系统、虚拟内存、进程与线程、锁_第8张图片
    linux中没有destroy命令。

  4. 有命令:awk'BEGIN { Arr[2,79]=78 __________ }'为了让执行的结果是78,应该填()语句
    - print Arr[“2\03479”]
    - print Arr[2,79]
    - idx=2 SUBSEP 79;print Arr[idx]
    - print Arr[ 2, 79]

  5. adb logcat –v timeadb logcat -c

logcat -v time 打印log的同时打印系统时间
logcat -c 清除已有log

  1. 应用程序可以用内存映射的方式访问文件中的数据

文件系统的文件数据读写性能与文件大小以及读写数据块的大小有关;
文件的属性在创建时可以不指定,由系统通过umask的值得出,且以后可以修改
文件系统中可以创建的单个文件的大小与磁盘分区上剩余空间的大小有关,还与分区簇有关,比如 FAT16 允许创建的最大单文件为 2GB,剩余空间大小大于 2GB 也没用。

压缩与解压缩

tar是操作.tar的命令
gzip是压缩.gz压缩包的命令
compress:压缩.Z文件
uncompress:解压缩.Z文件

  1. 一个文件名字为rr.Z,可以用来解压缩的命令是?uncompress

  2. Linux系统中某个可执行文件属于root并且有setid,当一个普通用户 mike运行这个程序时,产生的进程的有效用户和实际用户分别是?root mike

setuid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。
因此当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户任然是原来的mike。
.
调用setid使进程成长为一个会话组长,setid调用成功后,进程成为新的会话组长和进程组长,并与原来的登陆会话和进程组脱离,由于会话过程对控制终端的独占性,进程同时与控制终端脱离。
这也是在创建daemon程序时,经常用到的一个步骤。

  1. awk的基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk ‘{if($4~/Brown/) print $0}’ tab2

cut

cut命令可以从文本文件的每一行中或者命令的的输出中截取指定内容的数据:cut –cchars file

fg

  1. 网络管理员查看进程时,发现有三个挂起进程,要在前台继续运行作业号为2的进程: fg 2

exec 使用vfork函数时,通常需要exec配合使用
fg(Foreground) 将(被中断的)进程搬到前台运行的命令
bg(Background) 将(被中断的)进程搬到后台运行的命令

使用fork或vfork创建子进程后,子进程通常会调用exec函数来执行另外一个程序。系统调用exec用于执行一个可执行程序以代替当前进程的执行映像。exec调用没有生成新进程。一个进程一旦调用exec函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段和堆栈段,唯一保留的就是进程ID。也就是说,对系统而言,还是同一个进程,不过执行的已经是另外一个程序了。

  1. 你在一台Windows 2000 Server 上部署了几个web 站点,这些Web 站点都已启用了日志。你用一个第三方的报表工具来分析web站点产生的日志文件,你发现所有从上午7:00到午夜的数据都被包含在第二天的日志文件中。你希望这些数据包含在当天的日志文件中,你该怎么做?在web站点的日志属性中修改日志翻转属性
  2. 在 RHEL5 系统中, vi 编辑器的末行模式中,若需要将文件中每一行的第一个 “Linux” 替换为 “RHEL5”,可以使用( :%s/Linux/RHEL5
  3. :s/old/new 将当前行中查找到的第一个字符 “old” 串替换为 “new”
    :s/old/new/g 将当前行中查找到的所有字符串 “old” 替换为 “new”
    :#,#s/old/new/g 在行号 “#,#” 范围内替换所有的字符串 “old” 为 “new”
    :%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
    :s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
  4. Linux 用户磁盘配额配置文件 aquota.user 的默认访问权限是(600
  5. Linux操作系统的发行版:CentOS国内非常火的红帽系服务器系统、Ubuntu很流行的桌面Linux版本、Redhat红帽Linux系统

ext文件系统

  1. 基本的linux操作系统:ext文件系统,ext2文件系统
  2. 日志文件系统:ext3文件系统,ext4文件系统,Reiser文件系统,JFS文件系统,XFS文件系统、ntfs文件系统
  3. 写时复制文件系统:ZFS文件系统,Btrf文件系统

fmt

fmt 命令用于编排文本文件,fmt 指令会从指定的文件里读取内容,将其依照指定格式重新编排后,输出到标准输出设备。若指定的文件名为 “-”,则 fmt 指令会从标准输入设备读取数据;

shell

$

  1. $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    • 在RHEL5统中,“run.sh”是Shell执行脚本,在执行./run.sh file1 file2 file3 命令的过程中,变量$1的值为( file1

$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

  • bash中,需要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log,以下哪些用法是正确的(bash demo.sh &>demo.logbash demo.sh >& demo.logbash demo.sh >demo.log 2>&1)
  1. 退出交互式的shell,应键入( exit
  2. exit,一般用于退出会话式程序或者交互式命令行,如ssh远程连接,切换 shell(Linux中)
    q,用来退出 man 手册查看命令或者配置文件的状态,或者more、less等命令查看文件的状态
    quit,一般用于图形界面的退出
    python中的exit()和quit()都可以用来退出python的交互式shell
  3. 缺省的Linux系统中,从后台启动进程,应在命令的结尾加上哪个符号? ( &
  4. shell脚本^表示开头,$表示结尾。
  5. shell 不仅仅是用户命令解释器,同时是一种强大的编程语言,大部分 Linux 系统缺省的 shell 是什么(bash

    Bourne Again shell(bash)
    Bourne shell(sh)
    Korn shell(ksh)
    C shell(csh)
    大多数的 Linux(Red Hat、Slackware、Caldera)都以 bash 作为缺省的shell,并且运行 sh 时,其实调用的是 bash。


  1. 以下函数中,和其他函数不属于一类的是__snprintf__。
    属于一类的是:strcpy、strncpy、strcat、strtok、strncat【都是用于两个字符串之间进行比较、拷贝、拼接等操作的】
    Linux文件系统、虚拟内存、进程与线程、锁_第9张图片

  2. Linux系统大致启动流程是(uEFI-> MBR -> grub -> initrd

  3. 30
    Linux文件系统、虚拟内存、进程与线程、锁_第10张图片
    i=0 时,主进程和其创建的子进程分别打印 ‘-’, 打印 2 个
    i=1 时,之前两个进程打印 ‘-’, 每个进程又创建新的子进程, 共打印 4 个 ‘-’
    i=2 时,之前的四个进程分别打印 ‘-’, 并创建新的子进程, 故共打印 8 个 ‘-’
    i=3 时,之前的 8 个进程分别打印 ‘-’, 并创建新的子进程,故共打印 16 个 ‘-’
    综上所述, 共打印 2+4+8+16=30 个

  4. 哪些命令和工具对 firmware 分析有帮助?binwalkfilefirmware-mod-kit

    • Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具,具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。
    • file命令用来探测给定文件的类型,file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
    • firmware-mod-kit工具的功能和binwalk工具的类似,其实firmware-mod-kit工具在功能上有调用binwalk工具提供的功能以及其他的固件解包工具的整合。
  5. Samba 服务器的配置文件是smb.conf

  6. 有两台游戏服务器运行于linux 2.6.x内核上,需要同步用户访问日志,你会用下列哪些方法同步日志(开放题:假设权限和条件均可满足)?rsync

  7. 某公司网络中心升级web服务器的物理内存,相应的要提高linux服务器交换空间,以下可以扩展交换空间的操作是( dd if=/dev/zero of=/mnt/sw1;swapon /mnt/sw1

  8. 在xdm的配置目录中,哪个文件用来设置在用户通过xdm登录后自动起动的应用程序?The Xsetup_0 file

  9. 在 Linux 系统中搭建 DHCP 服务器时,若需要给客户机指定默认网关地址为 192.168.1.1,可以在 dhcpd.conf 配置文件中进行(option routers 192.168.1.1;)设置

    option routers 192.168.0.1; 配置默认网关
    option subnet-mask 255.255.255.0; 配置子网掩码
    option domain-name-servers 192.168.1.1; 指定DNS服务器
    option domain-name-servers; 配置多个DNS服务器

  10. 邮件服务器为每个用户限制磁盘存储空间上限,执行checkquota -cug /var/mail指令后, 在/var/mail目录自动创建的配置文件是( aquota.useraquota.group

    aquota.group与aqouta.user分别是组以及用户磁盘配额需要的配置文件。
    如果没有这两个文件,则磁盘配额是不会生效的。
    quota(选项)(参数)
    选项有:
    -g:列出群组的磁盘空间限制;
    -q:简明列表,只列出超过限制的部分;
    -u:列出用户的磁盘空间限制;
    -v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;
    -V:显示版本信息。
    参数有:
    用户或者工作组:指定要显示的用户或者工作组。

  11. 公司网络中心linux服务器需要升级OA系统,为了防止客户登录影响系统升级,网络管理员可以执行的操作有touch /etc/nolgoininit 1iptable -S INPUT -t tcp -s !127.0.0.1 -j DROP

    • touch /etc/nolgoin: 禁止所有普通用户登录
    • init3:完全的多用户状态(有NFS),登录后进入控制台命令行模式;
    • iptable -s INPUT -t tcp -s !127.0.0.1 -j DROP:屏蔽非127.0.0.1请求;
    • init6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动;

ps

ps命令用来列出系统中当前运行的那些进程。

  1. 哪个命令不可以查看当前系统的启动时间:ps
  2. 哪个命令可以查看当前系统的启动时间:w、top、uptime

SUID

  • 当一个设置了SUID(Set User ID) 位的可执行文件被执行时,无论谁来执行这个文件,他都暂时拥有文件所有者的权限
  • 可以通过chmod u+s 命令设置SUID属性
  • passwd命令就是通过SUID机制,在任何用户修改密码时,有权限访问密码存储文件

nginx

nginx进程数设置为CPU总核心数最佳
设置工作模式与连接数上限时,应考虑单个进程最大连接数(最大连接数=连接数*进程数)

lpr

使用什么命令把打印任务放到打印队列中去打印:lpr。

  • lprm 命令用于将一个工作由打印机贮列中移除
  • lpq 命令用于查看一个打印队列的状态,该程序可以查看打印机队列状态及其所包含的打印任务。
  • lpd 命令 是一个常驻的打印机管理程序,它会根据 /etc/printcap 的内容来管理本地或远端的打印机。
  • lpr(line printer,按行打印)实用程序用来将一个或多个文件放入打印队列等待打印。

-z、-n

  • [-z string] “string”的长度为零则为
  • [-n string] or [string] “string”的长度为非零则为
  1. [ -z "" ]&&echo 0 ||echo 1的输出是什么:0

1&&0 || 0 = 0
echo执行成功的返回码是0

diaplay

哪个变量用来指定一个远程X应用程序将输出放到哪个X server上:DISPLAY

内核

内核不包括的子系统是硬件管理系统
内核包括四个子系统:进程管理系统内存管理系统I/O管理系统文件管理系统

不需要编译或加载内核的情况是 :将网卡激活
需要编译或加载内核的情况是 :删除系统不用的设备驱动程序时升级内核时添加新硬件时。【只要代码或配置有改动,都要重新编译的】

UNIX系统由内核、shell、文件系统和应用程序等4部分组成。
UNIX系统代码段和数据段分开的目的:可共享正文、可共享数据、可重入、可保护代码为只读、更好支持内存回收策略。【不包括:方便编程】

1)防止程序指令被修改,设置代码段权限为只读,设置数据段权限为可读写
2)代码段和数据段分开有利于提高程序的局部性,现代CPU缓存一般设计为数据缓存和指令缓存分离,指令和数据分开存放可以提高CPU缓存命中率。
3)共享指令,当系统运行多个程序的副本时,它们指令时一样的,因此内存只需保存一份程序的指令代码。每个副本进程的数据区是进程私有,可以节省内存。

设备

  1. 计算机和外界交换信息是通过___I/O设备____
    • 下面哪些条件下,计算机抖动振荡不会发生:
      • 程序的工作区的内存页,在主存中保持
      • 内存足够大,不使用交换空间
    • 下面哪些条件下,计算机抖动振荡会发生:
      • cpu速度大幅提高,非常快【换入换出和CPU没关系】
      • IO效率提升
      • 单一进程运行,不存在多进程调度
      • 计算机的CPU核数足够多
    • 要想减少计算机抖动振荡,要么增加内存,要么进程的存储块数在内存中都能能放下。在计算机操作系统的抖动,又叫颠簸。如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象
  2. 位向量(bit vector )的用处为( 磁盘空闲空间的管理 )

位向量(bit vector)是位图(bit map),在磁盘空闲空间的管理中,以一位的1和0代表对应的磁盘块是否空闲,位图是非常省空间的数据结构,1MB的空间可以映射8✖️1024✖️1024个磁盘块

  1. 若基于Linux操作系统所开发的ARM应用程序源文件名为test.c,那么要生成该程序代码的调试信息,编译时使用的GCC命令正确的是?arm-linux-gcc -g -o test test.c

DOS

DOS是磁盘操作系统

网络操作系统

Netware
Windows 2000 Server
Linux


属于DDOS攻击方式的有:
- SYN Flood【SYN Flood是一种常见的DOS(denial of service拒绝服务)和Ddos(distributed denial of serivce 分布式拒绝服务)攻击方式。这是一种使用TCP协议缺陷,发送大量的伪造的TCP连接请求,使得被攻击方cpu或内存资源耗尽,最终导致被攻击方无法提供正常的服务。】
- NTP 放大攻击【NTP 放大攻击是 DDoS 的一种。通过 NTP 服务器,可以把很小的请求变成很大的响应,这些响应可以直接指向到受害者的电脑。】
- CC 攻击)【攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫CC。CC主要是用来攻击页面的。模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。】
- 不属于DDOS攻击方式的有:水坑攻击【攻击者首先通过猜测(或观察)确定这组目标经常访问的网站,然后入侵其中一个或多个网站,植入恶意软件。在目标访问该网站时,会被重定向到恶意网址或触发恶意软件执行,导致该组目标中部分成员甚至全部成员被感染。按照这个思路,水坑攻击其实也可以算是鱼叉式钓鱼的一种延伸。】
6. - 串行通信的频带利用率比并行通信的高
- 串行通信可通过通信缓冲区来进行数据流速匹配
- 串行通信的传输速度比并行通信的慢

你可能感兴趣的:(Linux,Ubuntu学习,linux)