2021年03月22日Linux专项练习2
考点1:Linux八进制文件权限
权限为765的文件,下列哪个是正确的权限位标记()?
- A
-rw-rw-r-x
- B
-rw-r-xr-r
- C
-rwxrw-r-x
- D
-rwxr-xrwx
解析
显示答案/隐藏答案
正确答案: C首先在 rwx 中r=4,w=2,x=1
1 | 7=4+2+1 |
因此是rwxrw-r-x
,选C
至于最前面那位,如果是文件夹的话为d,否则为-
考点2:ls -al
用ls –al 命令列出下面的文件列表,哪个文件是符号连接文件?
- A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
- B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbye
- C drwxr–r– 1 hel users 1024 Sep 10 08:10 zhang
- D lrwxr–r– 1 hel users 2024 Sep 12 08:12 cheng > peng.yan1
解析
显示答案/隐藏答案
正确答案: Dls -l第一列含义
ls -l的第一列的
- 第1个字符表示文件的类型,
-
表示文件;d
表示目录directory;l
表示软链接link。软链接 类似于快捷方式,当源文件丢失时,软链接也失败。
- 第2,3,4个字符是文件所属主的权限,
- 第5,6,7个字符是,所属组的权限,、
- 第8,9,10个字符是其他用户的权限
软链接就类似windows的快捷方式,删掉源文件快捷方式就不能用了。 而硬链接源文件和新文件是同等地位的,删了源文件,用新文件依旧可以访问,只是有一个记录链接数的参数会减一。
考点3:Linux路由设置
局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是?
- A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
- B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
- C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
- D route add default 192.168.1.0 netmask 172.168.1.1 metric 1
解析
显示答案/隐藏答案
正确答案: B-net 后面跟的是目标网络,gw就是gateway(网关入口)就是你从哪个网关去到那个目标网络。
考点4:Linux环境变量
以下哪个环境变量表示当前路径 () 。
- A
PATH
- B
PWD
- C
HOME
- D
ROOT
解析
显示答案/隐藏答案
正确答案: Bpwd命令
命令pwd是print working directory的缩写,打印当前工作目录
PWD环境变量
大写的PWD代表环境变量,小写的pwd是shell命令输出当前工作目录。
查看PWD环境变量:
1 | echo $PWD |
PWD和OLDPWD环境变量
PWD
记录当前的目录路径,当利用cd
命令切换当前目录时,系统自动更新PWD
的值,OLDPWD
记录旧的工作目录,即用户所处的前一个目录。
env命令
查看系统中所有环境变量可以使用env命令,可以看到PWD的值会随着工作目录变化而变化
1 | [root@localhost ~]# env |
PATH环境变量
PATH
是Linux
中一个极为重要的环境变量,它用于帮助Shell
找到用户输入的命令。用户所输入的每个命令实际上是一个源代码文件,计算机执行这个文件里的代码以实现这个命令的功能,这些源代码文件称为可执行文件。可执行文件存在于各种各样的目录下,PATH
就记录了一系列的目录列表,Shell
为每个输入命令搜索PATH
中的目录列表。
HOME环境变量
HOME
记录当前用户的目录,由/etc/passwd
的倒数第2个域决定,HOME
目录用于保存用户自己的文件。
[root@localhost ~]# cat /etc/passwd|grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]#
考点5:grep命令
在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?
- A grep -E #$ try_grep
- B grep -E #a try_grep
- C grep -E ^$ try_grep
- D grep -E ^a try_grep
解析
显示答案/隐藏答案
正确答案: Dgrep命令
-E
参数:表示使用扩展的正则表达式
^
:开始行$
: 结束行
1 | grep -E ^a try_grep #匹配以a开头的行 |
考点6:tar解压参数
tar命令用于解压的参数是?
- A -v
- B -x
- C -c
- D -f
解析
显示答案/隐藏答案
正确答案: Btar参数
主要参数:
- c:创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。
- x:从档案文件中释放文件。相当于拆包。
辅助参数:
- z:是否同时具有 gzip 的属性?亦即是否需要用gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz
- j:是否同时具有 bzip2 的属性?亦即是否需要用bzip2 压缩或解压?一般格式为xx.tar.bz2
- v:压缩的过程中显示文件!这个常用
- f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!
- p:使用原文件的原来属性(属性不会依据使用者而变)
- –exclude FILE:在压缩的过程中,不要将 FILE 打包!
考点7:软链接硬链接
Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),下列说法正确的是()
- A 软链接可以跨文件系统进行连接,硬链接不可以
- B 当删除原文件的时候软链接文件仍然存在,且指向的内容不变
- C 硬链接被删除,磁盘上的数据文件会同时被删除
- D 硬链接会重新建立一个
inode
,软链接不会
解析
显示答案/隐藏答案
正确答案: A什么是链接
链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的
硬链接
硬链接只能引用同一文件系统中的文件。
它引用的是文件在文件系统中的物理索引(也称为 inode)。
当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。
硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。
如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
软链接(符号链接)
软链接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。
软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软链接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,
但删除原来的文件,则相应的软链接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。
硬链接与软链接的区别
硬链接不会创建inode 不可跨越文件系统
硬链接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。
软链接会重新创建inode
相反都是软链接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软链接将变得毫无意义。
删除硬链接的时候 文件可能不会被删除
而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
硬链接的链接文件和源文件是同一个文件
硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。
可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;
而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
软链接可以跨文件系统
软链接可以跨文件系统,硬链接不可以;
硬链接的文件必须存在 软链接可以对不存在的文件进行链接
软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),
硬链接不可以(其文件必须存在,inode必须存在);
软链接可以对目录进行链接 硬链接不可以
软链接可以对目录进行连接,硬链接不可以。
如何创建链接
两种链接都可以通过命令ln 来创建。
创建硬链接ln
ln
默认创建的是硬链接。
创建软链接ls -s
使用ln -s
可以创建软链接。
考点8:环境变量
在RHEL5系统中,下面关于shell环境变量配置文件的描述,正确的是( )
- A 用户登录系统时,
bash
首先执行/etc/profile
配置文件和/etc/profile.d/
目录下的配置文件,这些配置文件对所有用户都有效 - B 用户登录系统时,
bash
首先执行.bash_profile
文件和.bashrc
文件,这些配置文件对所有用户都有效 - C 用户主目录下的.
bashrc
设置为每次登录时执行,而.bash_profile
则为每次打开新的终端时执行 - D 执行用户主目录下的环境变量配置文件时,不可以重复设置用户登录时配置文件中已经设置的选项
解析
显示答案/隐藏答案
正确答案: Ahttps://www.jianshu.com/p/6d32b166f47d
/ect/profile
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d
目录的配置文件中搜集shell的设置.
/etc/bashrc
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile
每个用户都可使用该文件输入
专用于 自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行~/.bashrc文件.
~/.bashrc
该文件包含专用于用户的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout
https://blog.csdn.net/wackycrazy/article/details/47998747
/etc/profile 文件中设定的环境变量,运行的命令或脚本,针对所有用户有效
/etc/bashrc 文件中设定的本地变量,定义的别名,针对所有启动的shell程序的用户有效
这两个配置文件是全局的。
~/.bash_profile 作用跟/etc/profile是一样的,只不过针对的是某一个用户
~/.bashrc的作用跟/etc/bashrc也是一样的,只不过针对的也是某一个用户
https://blog.csdn.net/ithomer/article/details/6322892
(1) /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。
(3)/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。
(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而
(6)/.bash_profile: 是交互式、login 方式进入 bash 运行的/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
https://www.linuxprobe.com/diff-bashrcprofile.html
profile
其实看名字就能了解大概了, profile 是某个用户唯一的用来设置环境变量的地方, 因为用户可以有多个 shell 比如 bash, sh, zsh 之类的, 但像环境变量这种其实只需要在统一的一个地方初始化就可以了, 而这就是 profile.
bashrc
bashrc 也是看名字就知道, 是专门用来给 bash 做初始化的比如用来初始化 bash 的设置, bash 的代码补全, bash 的别名, bash 的颜色. 以此类推也就还会有 shrc, zshrc 这样的文件存在了, 只是 bash 太常用了而已.
期望的执行顺序
https://zhuanlan.zhihu.com/p/25944849
/.bashrc/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。
该文件存储的是专属于个人bash shell的信息,当登录时以及每次打开一个新的shell时,执行这个文件。在这个文件里可以自定义用户专属的个人信息。
相关文件的读取顺序
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:
http://blog.itpub.net/27040306/viewspace-732343/
/etc/profile、/etc/bashrc、/.bash_profile、/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么?
/etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。
/etc/bashrc: 这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。/.bash_profile: 用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效./.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.
~/.bashrc: 作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。
另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而
~/.bash_profile 是交互式、login 方式进入 bash 运行的,意思是只有用户登录时才会生效。
~/.bashrc 是交互式 non-login 方式进入 bash 运行的,用户不一定登录,只要以该用户身份运行命令行就会读取该文件。
https://cloud.tencent.com/developer/article/1148535
/etc/profile
为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。英文描述:”System wide environment and startup programs, for login setup.”
/etc/environment
系统的环境变量,/etc/profile是所有用户的环境变量,前者与登录用户无关,后者与登录用户有关,当同一变量在两个文件里有冲突时,以用户环境为准。
/etc/bashrc
为每个运行 bash shell 的用户执行该文件,当 bash shell 打开时,该文件被执行,其配置对所有使用bash的用户打开的每个bash都有效。当被修改后,不用重启只需要打开一个新的 bash 即可生效。英文描述:”System wide functions and aliases.”/.bash_profile/.bashrc –> /etc/bashrc –> (退出shell时)~/.bash_logout
为当前用户设置专属的环境信息和启动程序,当用户登录时该文件执行一次。默认情况下,它用于设置环境变量,并执行当前用户的 .bashrc 文件。理念类似于 /etc/profile,只不过只对当前用户有效,也需要重启才能生效。(注意:Centos7系统命名为.bash_profile,其他系统可能是.bash_login或.profile。)
~/.bashrc
为当前用户设置专属的 bash 信息,当每次打开新的shell时,该文件被执行。理念类似于/etc/bashrc,只不过只对当前用户有效,不需要重启只需要打开新的shell即可生效。
~/.bash_logout
为当前用户,每次退出bash shell时执行该文件,可以把一些清理工作的命令放进这个文件。
/etc/profile.d/
此文件夹里是除/etc/profile之外其他的”application-specific startup files”。英文描述为”The /etc/profile file sets the environment variables at startup of the Bash shell. The /etc/profile.d directory contains other scripts that contain application-specific startup files, which are also executed at startup time by the shell.” 同时,这些文件”are loaded via /etc/profile which makes them a part of the bash “profile” in the same way anyway.” 因此可以简单的理解为是/etc/profile的一部分,只不过按类别或功能拆分成若干个文件进行配置了(方便维护和理解)。
注意事项
以上需要重启才能生效的文件,其实可以通过source xxx暂时生效。
文件的执行顺序为:当登录Linux时,首先启动/etc/environment和/etc/profile,然后启动当前用户目录下的/.bash_profile,执行此文件时一般会调用/.bashrc文件,而执行/.bashrc时一般会调用/etc/bashrc,最后退出shell时,执行/.bash_logout。简单来说顺序为:
(登录时)/etc/environment –> /etc/profile(以及/etc/profile.d/里的文件) –> ~/.bash_profile –> (打开shell时)
考点9:shell脚本参数
如果参数列表个数为1则执行$<1
, 如果参数列表个数为2则执行$<2<$
,其他情况则……,补充下面的命令
1 | Case ( ) in |
- A $$
- B $#
- C $@
- D $*
解析
显示答案/隐藏答案
正确答案: B命令 | 描述 |
---|---|
$# |
是传给脚本的参数个数 |
$0 |
是脚本本身的名字 |
$1 |
是传递给该shell脚本的第一个参数 |
$2 |
是传递给该shell脚本的第二个参数 |
$@ |
是传给脚本的所有参数的列表 |
$* |
是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 |
$$ |
是脚本运行的当前进程ID号 |
$? |
是显示最后命令的退出状态,0表示没有错误,其他表示有错误 |
考点10:进程间通讯方式
进程间通讯方式有哪些?
- A 管道
- B 消息队列
- C 共享内存
- D 文件和记录锁定
解析
显示答案/隐藏答案
正确答案: ABCDUNIX的通信方式
1 文件和记录锁定
为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放。这是UNIX为共享资源提供的互斥性保障。
2 管道
管道一般用于两个不同进程之间的通信。当一个进程创建一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样 提供了两个进程之间数据流动的一种方式。
3 FIFO
FIFO是一种先进先出的队列。它类似于一个管道,只允许数据的单向流动。每个FIFO都有一个名字,允许不相关的进程访问同一个FIFO。因此也成为命名管。
4 消息队列
UNIX下不同进程之间可实现共享资源的一种机制;UNIX允许不同进程将格式化的数据流以消息形式发送给任意进程。对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制。通过使用消息类型,进程可以按任何顺序读消息,或为消息安排优先级顺序。
5 信号灯
作为进程间通讯的一种方法,它不是用于交换大批数据,而用于多进程之间的同步(协调对共享存储段的存取)。
6 共享内存
通过信号灯实现存储共享(类似“红灯停、绿灯行”)