高级操作系统-重制版
第一章
本章pdf版本:
链接:https://pan.baidu.com/s/1fRs4GXlmWkJYXCDiKPqy8A?pwd=hjd9
提取码:hjd9
OK了,可以打印了,更新时间:2024-1-2,20:30
Inode
软连接的连接数是1,硬连接的连接数是>=2
文件的访问权限指的是: 用户对该文件的内容的访问权限
LINUX 系统的特点
EXT3文件系统有哪几部分组成,都是什么
LINUX文件,如果文件的BLOCK 格式化为4K字节空间,系统中单个文件最大存储容量多少。
如果是4K,最大容量是64GB
,把上面的1KB换成4KB
LINUX 系统的连接文件都有哪些,什么特点。
硬链接
和符号连接(软连接)
- 第一:文件类型:软链接 前面是 l 开头的(link),而硬链接是 - 开头,表示文件
- 第二:软链接所有者和所属组具有全部操作的权限,rwxrwxrwx;而硬链接不是。也就是软链接的前面都是 lrwxrwxrwx
- 第三:软链接类似与 windows 的快捷方式,有一个明显的箭头指向,而指向的是源文件
- 第四:硬链接文件除了文件名与源文件不一样,其余所有信息都是一样的。 类似于 cp 复制操作。但是又和复制不一样,硬链接可以同步更新。
- 第五:通过 ls -i 操作,来查看 文件的 i 节点。发现硬链接和源文件的 i 节点是相同的,而软链接与源文件的 i 节点是不同的
- 第六:不允许将硬链接指向目录;不允许跨分区创建硬链接
LINUX 系统文件的IDE硬盘分区和命名规则是什么。
VI 编辑器有几种模式,他们之间如何切换
vim 主要有三种工作模式,分别是命令模式、插入模式和编辑模式。
输入 vi 文件名
我们可以进入命令模式,输入字符 i或者a或者o,我们可以进入插入模式,进入插入模式之后我们可以进行文件的内容修改,修改完成之后,可以输入 :wq 可以保存退出。
一个文件的用户权限都有哪些?访问权限都有哪些。
用户权限有:查看权限,修改权限。
LINUX 系统的用户有基类,他们之间有哪些区别?
在Linux系统中,用户可以分为两类:基本用户和系统用户。它们之间有以下区别:
- 基本用户:
- 普通用户:这是一般系统用户,用于日常操作和任务。普通用户通常由系统管理员创建,并且具有受限的访问权限。他们无法对系统进行全局配置或更改,只能访问自己的主目录和一些其他允许的文件和目录。
- 超级用户(root):这是Linux系统的最高权限用户,也被称为超级管理员。超级用户具有对系统的完全控制权,并可以执行任何操作,包括对系统文件进行修改、安装软件等。超级用户需要谨慎使用,因为误操作可能导致系统崩溃或安全漏洞。
- 系统用户:
- 系统用户是用于运行系统服务和进程的特殊用户账号。这些用户通常不用于登录系统,也没有对应的密码。系统用户在系统启动时被创建,并由相应的系统服务使用。它们有自己的用户ID(UID)和用户组ID(GID),用于区分其他用户。
总结来说,基本用户是具有登录权限并用于日常操作的用户,而系统用户是用于运行系统服务和进程的特殊用户账号。超级用户(root)是唯一具有完全控制系统的用户。
显示文件内容有哪些指令,编辑文件有哪些指令,如何使用。
显示文件内容的命令:
cat: 用于连接文件并显示它们的内容。
cat filename
more: 逐页显示文件内容。
more filename
使用空格键逐页翻页,按
q
键退出。less: 逐页显示文件内容,并提供更多交互性。
less filename
使用空格键逐页翻页,按
q
键退出。还可以使用/
进行搜索。head: 显示文件的前几行。
head filename
tail: 显示文件的末尾几行。
tail filename
使用
-n
选项指定显示的行数,例如tail -n 10 filename
显示末尾的最后10行。
编辑文件的命令:
nano: 文本编辑器,易于使用。
nano filename
使用箭头键移动光标,进行编辑。按
Ctrl + X
保存并退出。vi(或 vim): 强大的文本编辑器。
vi filename
- 进入编辑模式:按
i
键。 - 退出编辑模式:按
Esc
键。 - 保存并退出:在非编辑模式下,输入
:wq
。 - 放弃修改并退出:在非编辑模式下,输入
:q!
。
- 进入编辑模式:按
对于一个目录文件,他的读、写、执行权限(有无该权限),都对应该目录的哪些操作。
第二章
对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。
变量的声明规则
- 正确声明变量
- 变量
不能以数字开头
- 变量声明
等号两边不能有空格
- 变量的值如果有空格,必须用
单引号或双引号括起来
什么是Shell脚本?
Shell脚本是指使用用户环境Shell提供的语法所编写的脚本。
文件判断
case 与 grep
此实例检查命令行的第一个参数是否为“-i”或“-e”,如果是“-i”,则计算由第二个参数指定的文件中以i开头的行数;如果是“-e”,则计算由第二个参数指定的文件中以e开头的行数。如果第一个参数既不是“-i”也不是“-e”,则在屏幕上显示一条错误的信息。
shift
在函数中,$1是指传入函数的第1个参数,$2是指传入函数的第2个参数。同时也可以使用shift命令来移动函数参数。
什么是脚本程序(SHELL),什么是系统变量、举出至少5个系统变量。
脚本程序(Shell)是一种命令语言解释器,系统变量提供关于系统环境的信息,例如:HOME、PATH、USER、SHELL、LOGNAME。
脚本程序中,哪些语句能够控制分支循环,哪些语句控制循环流程。
压缩与解压缩指令都有哪些?
find 指令、grep 指令有什么区别。
作用范围:
find
主要用于搜索文件,可以按照文件的各种属性进行搜索。grep
主要用于在文本文件中搜索内容,根据模式匹配来筛选行。
搜索目标:
find
搜索的是文件和目录。grep
搜索的是文件中的文本内容。
搜索条件:
find
使用条件表达式,可以包含文件名、大小、类型等多种条件。grep
使用正则表达式,搜索文本中的模式。
输出结果:
find
输出文件和目录的路径。grep
输出包含匹配文本的行。
正 则 表 达 式
脚本程序中哪些操作符可以对局部变量进行数学运算
脚本程序中可以使用以下操作符对局部变量进行数学运算:
- 加法操作符(+):用于执行加法运算,将两个值相加。
- 减法操作符(-):用于执行减法运算,将一个值减去另一个值。
- 乘法操作符(*):用于执行乘法运算,将两个值相乘。
- 除法操作符(/):用于执行除法运算,将一个值除以另一个值。
- 取模操作符(%):用于执行取模运算,求得两个值相除的余数。
- 自增操作符(++):用于将变量的值增加1。
- 自减操作符(–):用于将变量的值减少1。
这些操作符可以用于对局部变量进行数学运算操作,根据需要进行加减乘除、取余、自增或自减等操作,从而实现对变量的值进行修改和计算。
代码题
输出内容
for file in *.sh |
- 作用: 遍历当前目录下的所有
.sh
后缀的文件,打印文件名,并输出文件的内容。 - 说明: 这个脚本使用
for
循环,对每个.sh
文件进行操作,打印文件名,并使用cat
命令输出文件的内容。
求和
sum=0 |
- 作用: 计算脚本接收的命令行参数之和。
- 说明: 使用
for
循环,将命令行参数逐个相加,并输出总和。
找最大值
max() |
- 作用: 找出脚本接收的参数中的最大值。
- 说明: 定义了一个函数
max()
,使用while
循环找到参数列表中的最大值,最后输出最大值。
小写转大写
while [ "$1" ] |
- 作用: 根据命令行参数处理输入和输出文件,并将输入文件中的小写字母转换为大写字母。
- 说明: 使用
while
循环处理命令行参数,根据参数-i
和-o
分别指定输入和输出文件,然后使用tr
命令将输入文件中的小写字母转换为大写字母,并将结果输出到指定的输出文件。
case语句
|
文件判断
|
网络端口号
|
脚本目的:
- 该脚本的目的是检测 Linux 服务器上是否运行了常见的网络服务,包括 WWW(Web)、FTP、SSH、邮件(MAIL)和 UDP 协议。
提示信息:
echo -e " Now I will detect your Linux server's services !"
echo -e " the www ,ftp , ssh and mail will be detected !"- 这里使用
echo
打印了提示信息,通知用户接下来将要检测哪些服务。
- 这里使用
服务检测:
testing=$(netstat -tuln | grep ":80 ")
# 输出调试信息
#echo "testing is :$testing"
if [ "$testing" != "" ]; then
echo "WWW is running on your system."
fi- 使用
netstat -tuln
列出所有正在监听的端口,并通过grep ":80 "
检测端口 80 是否在监听。 - 将检测结果存储在变量
testing
中,然后使用if
判断端口 80 是否在监听,如果是,则输出 “WWW is running on your system.”。
- 使用
服务重复检测:
testing=$(netstat -tuln | grep ":22 ")
#echo "testing is :$testing"
if [ "$testing" != "" ]; then
echo "SSH is running on your system."
fi- 通过类似的方式检测 SSH(端口 22)、FTP(端口 21)、邮件(端口 25)和 UDP 协议(端口 5353)是否在监听,并输出相应的运行信息。
$(netstat -tuln | grep ":80 ")
这个命令用于检测端口 80 是否在监听状态。让我们来分解这个命令的各个部分:
netstat -tuln
: 这部分命令用于显示网络统计信息。具体选项的含义如下:-t
: 仅显示 TCP 协议相关的信息。-u
: 仅显示 UDP 协议相关的信息。-l
: 仅显示监听状态的端口。-n
: 使用数字形式显示端口号,而不是尝试解析为服务名。
所以,
netstat -tuln
将显示正在监听的 TCP 和 UDP 端口的数字形式。| grep ":80 "
: 这部分命令用于在上一个命令的输出中过滤出包含 “:80 “ 的行,即查找端口号为 80 的行。$(...)
: 这是一个命令替换结构,它将$(netstat -tuln | grep ":80 ")
的输出结果嵌入到外部命令中。
因此,整个命令的作用是检测是否有端口 80 在监听状态。如果有输出(即端口 80 在监听),那么这个命令的结果将是非空字符串,反之则为空字符串。在脚本中,这个结果被存储在变量 testing
中,并在后续的条件判断中用于确定是否输出相应的服务运行信息。
2*(3+4)
输出n^2
|