text.1
1.在CentOS中,检查已经安装ext4文件系统并已经挂载的分区/dev/sad5是否正常,若是故障,可自动修复的命令及参数是什么?
fsck -a /dev/sad5
2.请描述linux的哲学思想。
1.一切皆文件
2.由众多的功能单一的小程序组成,却可以实现复杂任务:
3.使用纯文本文件保存程序的配置信息;
提供用户身份验证
4.尽量不与用户交互
3.如何删除当前目录下超过30天未被访问的文件。
find -atime +29 | xargs rm -rf
4.写出OSI参考模型各层名称及功能?
1)应用层:为应用程序进程(电子邮件、文件传输)提供网络服务
2)表示层:数据表示:
确保接受系统可以独处该数据、格式化数据、构建数据、协商用于应用层的数据传输语法、提供加密
把人能看懂的信息转化为计算机能看懂的信息
3)会话层:
主机间通信:点到点
建立、管理和终止在应用程序之间的会话
4)传输层
1.确保数据传输的可靠性
2.建立维护和终止虚拟电路
3.通过错误检测和恢复
4.信息流控制来保障可靠性
5.sed '/^[[:space:]]\*$/d' file
6.如何让history命令记录并显示命令执行的具体时间?
1.临时的显示
[root@localhost ~]# export HISTTIMEFORMAT="%F %T"
[root@localhost ~]# history
1 2017-06-08 19:03:43mount -o remount /mnt/b1
2 2017-06-08 19:03:43quotacheck -cumg /mnt/b1
3 2017-06-08 19:03:43df -h
4 2017-06-08 19:03:43mount
5 2017-06-08 19:03:43ls /mnt/b1
2.永久的显示
编辑/etc/bashrc文件
添加HISTTIMEFORMAT="%F %T"
export HISTTIMEFORMAT
保存并退出,exit退出当前的shell,再次登陆时就可以了
7.简述raid0,raid1,raid5三种工作模式的工作原理及特点。
磁盘阵列的类别:
外接式磁盘阵列:
最长被使用在大型的服务器上,具有热交换的特性,不过这类产品的价格都很贵。
内接式磁盘阵列:
价格便宜,需要较高的安装技术。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。
利用软件来仿真:
是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器。
raid0:
条带卷
优点:整倍的提高硬件的容量
缺点:没有冗余容错能力,如果一个磁盘损坏,则所有的数据都无法使用
最少使用两块磁盘
raid1:
镜像卷
优点:具有很好的冗余容错能力
缺点:成本成倍的增加,磁盘的利用率仅为50%,
至少需要两块磁盘
raid5:
分布式奇偶校验得 独立磁盘结构
读、写性能提升
需要计算校验信息
可用空间:(N-1)*min(S1,S2,...)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
8.列举几个linux系统中场常用的压缩和解压缩的命令。
gzip:
gzip, gunzip, zcat - compress or expand files
-d:解压缩
-#:以指定的压缩比进行压缩,1-9,9为*;默认6
-c:将压缩结果输出到标准输出,不会对原文件进行压缩;
gzip -c /PATH/TO/FILE > /PATH/TO/COMPRESS_FILE.gz
bzip2:
bzip2, bunzip2 - a block-sorting file compressor, v1.0.4
bzcat - decompresses files to stdout
-d:解压缩
-#:指定压缩比进行压缩,1-9,默认为6
-k:保留原文件不删除,创建新的压缩文件;
xz:
xz, unxz, xzcat - Compress or decompress .xz files
-d:解压缩
-#:指定压缩比进行压缩,1-9,默认为6
-k:保留原文件不删除,创建新的压缩文件;
9./etc/fstab文件中有一行
/dev/volgroup/logvol / ext3 fefaults 1 1各字段的含义。
/dev/volgroup/logvol 挂载设备
/ 挂载点
ext3 文件系统类型
fefaults 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗隔开来
ro 以只读模式加载该文件系统
sync 不对该设备的写操作进行缓冲处理
user 允许普通用户加载该文件系统
quota 强制在该文件系统上进行磁盘定额限制
1 该选项被”dump”命令使用来检查一个文件系统应该以多快频率进行转储,若不需要就是0;
1 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,/ 文件系统”对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动
时扫描则设置该字段为0
10.vi编辑器是一个基于模式的全屏编辑器,请描述其具体有哪些工作模式?
末行模式、插入模式、编辑模式,可视化模式、替换模式
11.简述软连接与硬链接有什么区别?
硬链接:
数据块指针指向同一个数据块的文件;
不能跨文件系统创建硬链接
目录文件不能创建硬链接
每次创建硬连接都会增加inode的引用计数
符号链接(软链接)
用于存储被链接文件的路径的文件
可以跨文件系统创建
也可以对目录创建
每次都必须进行两组路径的查找
12.请解释机械式磁盘的以下术语:磁道,扇区,柱面。
磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。
柱面:在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面。
扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区
13,CentOS系统提供的用户接口有哪些?常用的是什么?
CLI:bash
ksh
sh
GUI:GNOME
KDE
XFACE
14.
在RHEL系或CentOS系统的linux大型版本中,默认的用户账户和组账户认证库和解析库分别是那些文件?并描述
用户账户认证库的每个字段的含义。
用户账户的认证库:/etc/shadow
用户账户的解析库:/etc/passwd
组账户的认证库:/etc/gshadow
组账户的解析库:/etc/group
用户账户的认证库:/etc/shadow:
login name : encrypted password : date of last password change : minimum password age : maximum password age : password warning period : password inactivity period : account expiration date : reserved field
login name:用户的登录名;
encrypted password:加密了的密码
格式:$算法$salt$真正意义的加密密码
如果该位置为!,则表明用户的密码被禁用;如果 该位置为*,则表明该用户为系统用户,不能登录;如果该字段为空,则表明用户可以无需输入密码即可登录系统;不推荐使用;
date of last password change:
相对时间概念,相对于1970年1月1日到最后一次修改密码的那天的天数;
minimum password age:
在多长时间之内无法修改密码,默认值为0,意即:随时可以修改密码;如果是非0的其他数字,意思是在这么长的天数里不能改密码;
maximum password age:
在多长时间之后密码过期,默认为99999,意思是永久有效;
password warning period:
密码过期之前的友善提醒天数,默认为7天;
password inactivity period:
密码过期之后的宽限期,默认为-1,意思是永久宽限期;
account expiration date:
一个用户账户密码过期的日期,这是一个绝对的过期期限,XXXX/XX/XX;
reserved field:
保留字段,以备以后使用;
15.请写出基本正则表达式的元字符及其含义;
*: 0个货多个在*字符之前出现的那个普通字符
例如:例子:hel*o 可以表示helo、hello、helllo等等
.:匹配任意字符(只匹配单个字符)
例如:.7 可以表示已任何单个字符开始以结尾的字符串
^: 行首锚定或后面字符的非
例如:^you 匹配以you开头的行
$:行尾锚定
例如:you$ 匹配以you结尾的行
[]:匹配字符集和
例如:[0-9]匹配0-9之间的莫个字符
\:转义字符,屏蔽一个元字符的特殊含义
\<\>:精确匹配符号
例如:\<you\> 精确匹配you这个单词
\{n\}:匹配前面字符穿线N次
例如:yo\{3\}u 重复字符o出现3次
\{n,\}:匹配前面的字符至少出现n次
例如:yo\{3,\}u 重复字符o至少出现3次、
\{n,m\}:匹配前面的字符出现n-m次
例如:yo\{3,5\}u 重复字符o至少出现3-5次
16.请说明在变量的赋值运算中,let VAR2=VAR1++ 和 let
VAR2=++VAR1两个赋值语句的区别?
let VAR2=VAR1++ : 先赋值再运算
let VAR2=++VAR1 : 先运算再赋值
17.在bash中,常用的声明数组的方式有哪些?
1.declare命令
declare -i NAME:将NAME声明为整型变量;
declare -x NAME:将NAME声明为环境变量;
declare -a NAME:将NAME声明为索引数组(如果支持);
declare -A NAME:将NAME声明为关联数组(如果支持);
declare -a NAME=("value1" "value2" "value3" ...)
declare -a NAME=([0]="value1" [1]="value2" [5]="value3" ...)
2.直接声明数组:
直接为数组赋值:
ARRAY_NAME=("value1" "value2" "value3" ...) 声明稠密数组;
ARRAY_NAME=([0]="value1" [1]="value2" [5]="value3" ...) 声明稀疏数组;
定义数组的元素而创建数组:
ARRAY_NAME[0]=value1
ARRAY_NAME[1]=value2
例:
1.数组取值:
adobe=('Flash' 'Flex' 'Photoshop')
echo ${adobe[0]}
# 打印
# Flash
2.数组长度:
使用“@”这个特殊的下标,可以将数组扩展成列表,然后就可以使用bash中的获取变量长度的操作符“#”来获取数组中元素的个数了:
adobe=('Flash' 'Flex' 'Photoshop')
echo ${#adobe[@]}
# 打印
# 3
3.获取数组的一部分
adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
echo ${adobe[@]:1:3}
# 打印
# Flex Photoshop Dreamweaver
echo ${adobe[@]:3}
# 打印
# Dreamweaver Premiere
4.链接两个数组
adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
adobe2=('Fireworks' 'Illustrator')
adobe3=(${adobe[@]} ${adobe2[@]})
echo ${#adobe3[@]}
# 打印
# 7
18.bash的常用特性
1.引用 2.命令的别名 3.快捷键 4.命令补全
5.命令行的展开
6.命令的执行状态结果】
7.通配符
8.命令历史
9.变量
10.IO重定向
11.管道
12.bash的配置文件
13.转义功能
19.请解释硬件设施的设备号的含义?
major:主设备号,区分设备的类型,用于标明设备所需的驱动程序;
minor:次设备号,区分同种类型下的不同设备,是特定设备的访问入口;
20.bash有买那些配置文件?简述其作用。
配置文件的作用:使得我们赖以生存的配置信息可以长期有效,只要不修改配置文件中的内容, 每一次打开shell都会使曾经的配置生效;
profile类:
全局:对所有用户都生效的配置文件;
/etc/profile
/etc/profile.d/*.sh
注意:在RHEL或CentOS系列的操作系统中,通常情况下,如果一个配置文件内容很多,格式复杂,我们会将其切割成多个片段,将切割出来的片段统一的存放在"程序名称.d"目录中;在这样目录中所保存的片段文件,大多以统一的文件后缀名来命名;
用户个人:仅仅只是针对某个用户有效的配置文件;
~/.bash_profile
profile类配置的文件的作用:
1.用于定义用户的环境变量;
2.用于运行脚本或执行命令;
bashrc类:
全局:
/etc/bashrc
用户个人:
~/.bashrc
bashrc类配置的文件的作用:
1.用于定义本地变量;
2.用于定义命令的别名;
3.定义umask;
注意:只有超级用户root可以修改全局类的配置文件;普通用户只能修改其家目录中的个人配置文件;
交互式登录的shell进程,会按照顺序加载下列配置文件:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登录的shell进程,会按照顺序加载下列配置文件:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
注意:所有在命令行中执行的命令的操作,只要没涉及到文件的修改的,一般都只是针对当前的shell生命周期有效;只要shell进程结束,所有的设置均失效;