面试题、例题、知识点 汇总

centos 7 卸载 mariadb 的正确命令
列出所有被安装的rpm package rpm -qa | grep mariadb
卸载 rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安装) postfix-2:2.10.1-6.el7.x86_64 需要
强制卸载,因为没有--nodeps rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
rpm -q tree &> /dev/null || yum -q -y install vsftpd 这是一键安装脚本。
配置本地光盘yum源的方法:
1、mount /dev/sr0 /mnt 可以 df 看一下挂载情况,2、cd /etc/yum.repos.d/ 可以编辑一个新文件做本地yum源的配置文件,如:vim base.repo [base] name=file baseurl=file:///mnt/ gpgcheck=0 此配置文件就把光盘yum源配置好了,3、如果想要禁用aliyun的yum源下载,就要把 /etc/yum.repos.d/ 下的CentOS-Base文件更名成CentOS-Bas.bak文件,同理,去掉" .bak "就是继续使用aliyun。
RAID-10的工作原理
RAID10结合RAID1和RAID0,先镜像,再条带化;
特点: 磁盘数:最低4个,2n个,n大于等于2;
优点:读性能很高,写性能比较好,数据安全性好,允许同时有N个磁盘失效;
缺点:利用率只有50%,开销大;
可用空间:N*min(S1,S2,...其中最小空间)/2;
有容错能力:每组镜像最多只能坏一块;
适用领域:多用于要求高可用性和高安全性的数据库应用;
RAID-01:先分成两组做成RAID-0,再把组成的RAID-0做成RAID-1;不符合常用方法,每一组有一块坏的硬盘可能性大;
RAID-50的工作原理
是RAID5和RAID0的结合,先实现RAID5,再条带化;(先做RAID-5在做RAID-0,最少6块盘,每组允许坏1块盘,空间利用率灵活)、RAID7(某家公司的私有技术,实际是文件服务器)
特点:磁盘数:最低6个;
优点:比RAID5有更好的读性能,比相同容量的RAID5重建时间更短,可以容许N个磁盘同时失效;
缺点:设计复杂,比较难实现;同一个RAID5组内的两个磁盘失效会导致整个阵列失效;
适用领域:大型数据库服务器、应用服务器、文件服务器等应用;
重启linux网络的时候出现 this device is not active的解决办法
1.service NetworkManager stop
2.chkconfig NetworkManager off
3./etc/init.d/inetwork restart
进入救援模式的几种方法

centos7最小化安装,在默认情况下,会出现如下界面:
Install centos 7
Test  this  media  &  install  centos 7
Troubleshooting
将鼠标置于第一项,按tab键,会弹出:
vlinuz  initrd=initrd.ing  inst.stage2=hd:LABEL=centos\x207\x28x86_64 quiet
此处输入一个参数即可进入救援模式,或者  输入rescue 加参数 也行
鼠标置于Troubleshooting,按tab键,会弹出:
vlinuz  initrd=initrd.ing  inst.stage2=hd:LABEL=centos\x207\x28x86_64 rescue quiet
或者:鼠标置于Install centos 7 按esc键,会出现
boot:此时输入“rescue”  也能进入救援模式

shell脚本常见面试题

1 Shell脚本是什么、它是必需的吗?
答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

2、什么是默认登录shell,如何改变指定用户的登录shell
答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示:
# chsh  <用户名>  -s  <新shell>
# chsh  linuxtechi  -s  /bin/sh

3、可以在shell脚本中使用哪些类型的变量?
答:在shell脚本,我们可以使用两种类型的变量:
   系统定义变量
     用户定义变量
系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。  

4、如何将标准输出和错误输出同时重定向到同一位置?
答:有两种方法:
A、2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )
B、   &> (如# ls /usr/share/doc &> out.txt )

5、 shell脚本中“if”语法如何嵌套?
答:基础语法:
if [ 条件 ]
then
命令1
命令2
…..
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi

6、shell脚本中“$?”标记的用途是什么?
答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下:
root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
0                          如果结束状态是0,说明前一个命令执行成功。 
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2                        如果结束状态不是0,说明命令执行失败。

7、在shell脚本中如何比较两个数字 ?
答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下:

#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi


8、shell脚本中break命令的作用 ?
答:break命令一个简单的用途是退出执行中的循环。我们可以在while和until循环中使用break命令跳出循环。
9、 shell脚本中continue命令的作用 ?
答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

10、 告诉我shell脚本中Case语句的语法 ?
case 变量 in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac

11、shell脚本中while循环语法 ?
答:如同for循环,while循环只要条件成立就重复它的命令块。不同于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:
while [ 条件 ]
do
命令…
done

12、 如何使脚本可执行 ?
答:使用chmod命令来使脚本可执行。例子如下:
##### # chmod a+x myscript.sh

13、“#!/bin/bash”的作用 ?
答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。

14、 shell脚本中for循环语法 ?
答:for 循环的基础语法:
for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

15、 如何调试shell脚本 ?
答:使用'-x'参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。

16、shell脚本如何比较字符串?
答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

17、Bourne shell(bash) 中有哪些特殊的变量 ?
答:下面的表列出了Bourne shell为命令行设置的特殊变量。
内建变量    解释
$0    命令行中的脚本名字
$1    第一个命令行参数
$2    第二个命令行参数
…..    …….
$9    第九个命令行参数
$#    命令行参数的数量
$*    所有命令行参数,以空格隔开

18、 在shell脚本中,如何测试文件 ?
答:test命令可以用来测试文件。基础用法如下表格:
Test         用法
-d 文件名    如果文件存在并且是目录,返回true
-e 文件名    如果文件存在,返回true
-f 文件名    如果文件存在并且是普通文件,返回true
-r 文件名    如果文件存在并可读,返回true
-s 文件名    如果文件存在并且不为空,返回true
-w 文件名    如果文件存在并可写,返回true
-x 文件名    如果文件存在并可执行,返回true

19、在shell脚本中,如何写入注释 ?
答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以#开头。例子如下:
#!/bin/bash
# This is a command
echo “I am logged in as $USER”

20、如何让 shell 就脚本得到来自终端的输入?
答:read命令可以读取来自终端(使用键盘)的数据。read命令得到用户的输入并置于你给出的变量中。例子如下:
# vi /tmp/test.sh
#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”
# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi

21、如何取消变量或取消变量赋值 ?
答:“unset”命令用于取消变量或取消变量赋值。语法如下所示:
# unset <变量名>

22、 如何执行算术运算 ?
答:有两种方法来执行算术运算:
1.使用expr命令
# expr 5 + 2
2.用一个美元符号和方括号($[ 表达式 ])例如:
test=$[16 + 4] ; test=$[16 + 4]

23、do-while语句的基本格式 ?
答:do-while语句类似于while语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法
do
{
命令
} while (条件)

24、在shell脚本如何定义函数呢 ?
答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:
$ diskusage () { df -h ; }
译注:下面是我给的shell函数语法,原文没有
[ function ] 函数名 [()]
{
命令;
[return int;]
}

centos6、7上禁用防火墙、启动at任务、时间同步

centos6 
service   atd   start    这次立即启动
chkconfig   atd   on    下次开机启动
service   iptables   stop   这次立即停止防火墙
chkconfig   iptables   off    下次开机时也不要启动

centos7
systemctl   start   atd.service     这次立即启动
systemctl   enable   atd.service    下次开机启动
systemctl   stop   firewalld    这次已经启动,立即停止防火墙
systemctl   disable   firewalld    这次运行时关闭,下次开机时也不要启动

centos6、7都要做的一步:
时间同步:crontab   -e
计划任务:*/30  *  *  *  *  /usr/bin/ntpdate   172.20.0.1  &>  /dev/null

date命令:系统时间
date [OPTION]... [+FORMAT]:显示日期时间;
date [MMDDhhmm[[CC]YY][.ss]]:设定日期时间;
FORMAT:格式说明
%F:日期,显示为数字,格式为:2016-03-02;
%D:显示英制格式,月日年,显示格式为:03/02/16;
%T:时间,显示为数字,格式为:15:52:16;
%Y:年份,只显示完整年份数字(4位数字),显示格式为:2016;
%y:显示年份的后两位,显示格式为:16;
%m:月份,只显示数字,显示格式为:03;
%d:日期,只显示数字,显示格式为:02;
%H:小时,只显示数字,显示格式为(00..23):15;
%k:小时,显示格式为(0..23);
%I:小时,格式为(01..12);
%l:小时,显示格式为(1..12);
%h:显示月份,显示格式为:3月;
%M:分钟,只显示数字,显示格式为:52;
%S:秒钟,只显示数字,显示格式为:16;
%a:缩写星期;
%A:完整星期;
%b:缩写月份;
%B:完整月份;
%r:显示格式为(11:11:04 PM);
%R:同%H%M,格式为(23:37)
%s:从1970年1月1日至此刻所经历的秒数;timestamp;显示格式为:1456905397;

文件系统的挂载:把额外的文件系统与当前根文件系统上的某个目录建立关联关系,并以之作为新的文件的访问入口的操作过程,就叫做挂载(mount),拆除此关联关系的过程,即为卸载(umount);                  

破解centos7,centos6和centos5 的root口令
一、centos5,6破解root口令,前提:待在电脑前,重启电脑
1、在滚动条出现时,按esc键,出现菜单界面,按“ a ”键,输入“ 1 ”模式,(注意:quit后要空一格输入),此时效果为:无需任何操作即可进入root用户的命令行,
2、在命令行输入“ passwd ”,即可更改新口令,输入2次,

二、centos7破解root口令,
1、首先在菜单界面按【e】键,进入启动文件界面后
2、按【↓】拉到底部
在 "LANG=zh_cn.UTF-8" 同行后面加上“init=/bin/sh”
然后按【Ctrl+X】进入“单用户模式”
3、输入【ls】,回车,再输入【mount –o remount ,rw / 】,回车 (注意空格)
4、输入【passwd】(注意:密码不能少于8位),重复输入两次密码
5、输入【touch /.autorelabel】,回车,再输入【exec /sbin/init】回车
以便重启系统。

绝对路径:以正斜杆开头,完整的文件的位置路径,可用于任何想指定一个文件的时候。 相对路径:不以斜杠开头,指定相对于当前工作目录或某目录的位置。硬链接:ln 目标文件名 链接名,软连接: ln -s 目标文件名
软硬:{共性}:修改软硬链接文件,所有的文件都是同步修改的。
硬链接: 本质:同一个文件多个名字、链接数:有一个以上的链接,不可跨分区,只允许对文件创建链接,不依赖原始文件,删除硬链接文件的源文件,硬链接文件仍然存在,不占用空间,格式:ln 目标文件 链接名
软连接:本质: 一个文件对应快捷方式,是不同文件,链接数:只有一个链接,可以跨分区,可以对目录和文件夹进行链接,依赖于原始文件,删除源文件,软连接则指向一个空文件,它具有依赖性,占用磁盘空间,格式: ln -s 目标文件 源文件
自定义分区:
/dev/sda1 /boot 1G
/dev/sda2 / 50G
/dev/sda3 swap 2G
/dev/sda4 扩展分区
/dev/sad5 /data 10G

Centos7 重启网卡命令:systemctl restart network
Centos6 重启网卡命令:service network restart
设置主机和IP绑定信息:cat /etc/hosts
查看内存信息: cat /proc/meminfo
修改IP地址: vim /etc/sysconfig/network--scripts/ifcfg--ens33
su 与 su-的区别:
su:非交互式登录,在环境变量下不切换
su-:交互式登录(完全切换),当前目录改变为切换用户,在家目录,连同环境一同切换。
对/etc/目录,分别执行命令,实现以下功能
(1)按从大到小顺序显示文件列表 : ll -S /etc
(2)只显示隐藏文件 :ll -d /etc/.
(3)只显示目录 : ll -d /etc/
/
(4)按mtime时间显示文件列表 : ll -t /etc
(5)按atime时间显示文件列表 : ll -u /etc
正则表达式部分:
0-9: [0-9] 10-99: [1-9][0-9] 100-199:1[0-9][0-9] 200-249:2[0-4][0-9] 250-255:25[0-5]
过滤ifconfig命令结果中所有大于0且小于255的三位数
ifconfig | egrep -o "\<((1[0-9]{2}|2[0-4][0-9]|25[0-4]))"
取IPV4地址:ifconfig ens33| grep -Eo "([0-9]{1,3}.){3}[0-9]{1,3}" head -1
取分区利用率:df | grep " /dev/sd " | grep -o " [0-9]{1,3}%" | grep -o " [0-9]+ " | sort -nr | head - n1
取分区利用率:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\2/p'
用户:sed -rn ' s/^([^[:space:]]+).([0-9]+)%./\1/p'
查看版本型号: cut -d "." -f1 /etc/redhat-release |egrep -o "[0-9]+"
查看版本型号:grep -o " [0-9]+. " /etc/redhat-release | grep -o " [0-9]+ "
查看版本型号:sed -rn " s/.([0-9]+)../\1/p " /etc/redhat-release
匹配手机号码:egrep -o " 1[0-9]{10} " tel.txt
匹配email邮箱:egrep -o "([[:alnum:]]|_)+@[[:alnum:]]+.com$" mail.txt
取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现。
A、basename /etc/sysconfig/network-scripts/ifcfg-ens33
B、echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "[^/]+$"
|grep -o ".[^/] 取基名 |egrep -o "[^/]+$" 取/下的基名
|egrep -o "[^/]+/?$" 取/前的目录名
|sed -r 's@(./)([^/]+)/?@\2@' 取基名
|sed -r 's@(.
/)([^/]+)/?@\1@' 取目录名
使用sed命令取IPV4地址:
1、|sed -n '2p' |sed -r 's/inet//' |sed -r 's/netmask.//' |tr -d " "
2、|sed -n '2p' sed -e 's/^.
inet//' -e 's/.//'
3、|sed -n -e '2s/^.
inet//' -e '2s/ .//p'
4、|sed -nr '2s@.
inet (.) .n.@\1@p'
5、|sed -nr '2s/[^0-9]+([0-9.]+).
/\1/p'
统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序。
cat access.log |cut -d" " -f1 |sort |uniq -c |sort -nr|head -n10
例题:一块新硬盘插入linux主机后,怎样才能正常使用:
1、格式化分区用fdisk命令进行,2、制作文件系统用mkfs.xfs命令进行,3、挂载用mount命令进行,4、编辑配置文件“ /etc/fstab ”实现自动挂载。

搜狐面试题:echo " a b c " |read x y z ;echo x=$x y=$y z=$z
结果:x=  y=  z= 
echo " a b c " |{ read x y z ;echo x=$x y=$y z=$z;}
结果:x=a  y=b  z=c
echo "   a b c" | {read x y z ;echo x=$x  y=$y  z=$z;}
结果:x=a  y=b  z=c
echo "   a b c " | while read  x,y,z;do echo x=$x y=$y z=$z,done
结果:x=a  y=b  z=c
若cat > f1   --->abc  xx  yy  zz  234
cat  f1  |while  read  x y z  ;do  echo  x=$x  y=$y  z=$z;done
结果:x=a  y=b  z=c 
x=xx  y=yy  z=zz
x=2  y=3  z=4
新浪面试题:cp /etc/fstab /data/dir 问:他需要有最小权限是什么?

答:分三步:1、探究cp外部命令有啥权限,他至少必须要有x:执行权限。2、
/etc/fstab:/fstab 只要有读权限就可以了,前提是/etc要有x执行权限,/etc可以没有读权限,只要/etc有基本可执行权限进得去就可以。3、/data/dir:至少要有执行和写权限。
总结:命令的权限:1、cp:这是个程序,至少要有执行权限,2、要拷贝的文件:/etc/fstab:/fstab 至少要有读权限,而所在文件夹必须要有可执行权限,要不进不去,3、要拷贝的目标文件夹至少要有执行和写权限。
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
例题:创建下面的用户、组和组成员关系
名字为webs 的组
用户nginx 使用webs 作为附属组
用户varnish,也使用webs 作为附属组
用户mysql,不可交互登录系统,且不是webs 的成员, nginx, varnish, mysql密码都是magedu
[root@magedu ~]# groupadd webs
[root@magedu ~]# useradd -G webs nginx
[root@magedu ~]# useradd -G webs varnish
[root@magedu ~]# useradd -s /sbin/nologin mysql
[root@magedu ~]# echo "magedu"|passwd --stdin nginx
[root@magedu ~]# echo "magedu"|passwd --stdin varnish
[root@magedu ~]# echo "magedu"|passwd --stdin mtsql

编写显示系统信息的脚本:(要考虑到可更改性,可维护性)
[root@centos7 script35]# vim systeminfo.sh 
#!/bin/bash
#********************************************************************
#Author:                Xingxiaoyatongxue
#QQ:                    1098775809
#Date:                  2019-02-05
#FileName:             systeminfo.sh
#URL:                   http://www.magedu.com
#Description:          The test script
#Copyright (C):         2019 All rights reserved
#********************************************************************
COLOR="\e[1;31m"
COLOREND="\e[0m"                                                            
echo -e "my host name is $COLOR`hostname`$COLOREND"
echo -e "my Adress is $COLOR`ifconfig ens38|grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'|head -n1`$COLOREND"
echo -e "OS version is $COLOR`cat /etc/centos-release`$COLOREND"
echo -e "Kernel version is $COLOR`uname -r`$COLOREND"
echo -e "CPU type is $COLOR`lscpu |grep "Model name" |tr -s " " |cut -d: -f2`$COLOREND"
echo -e "Mem total is $COLOR`head -n1 /proc/meminfo|grep -o "[0-9].*"`$COLOREND"
echo -e "Disk is $COLOR`lsblk|grep -Eo "[0-9]+G" |head -1`$COLOREND"
[root@centos7 script35]# bash systeminfo.sh 
my host name is centos7.localdomain
my Adress is 192.168.141.130
OS version is CentOS Linux release 7.6.1810 (Core) 
Kernel version is 3.10.0-957.el7.x86_64
CPU type is  Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
Mem total is 2379348 kB
Disk is 200G
[ $ver  -eq  5  ]  &&  echo  ver  is  5  ||  echo  ver  is  not  5
释义:若  [ $ver  -eq  5   ]  为真,就执行   echo  ver  is  5  
若  [ $ver  -eq  5   ]  为假,就执行  echo  ver  is  not  5
cmd1  短路与&&  cmd2
若cmd1 真,执行cmd2  结果未知
若cmd1 假,不执行cmd2  结果为假
cmd1 短路或|| cmd2
若cmd1 真,不执行cmd2  结果为真
若cmd1 假,执行cmd2  结果未知

设置本地解析器/etc/hosts,在使用dns前检查
添加本机地址为172.18.119.74解析映射为magedu.com,172.18.0.1映射为server.com
[root@node1 ~]# vim /etc/hosts
添加内容:
172.18.119.74 magedu.com
172.18.0.1 server.com
进程管理部分:
buffer 缓冲区 多次write,合并成一次write
cache 缓存 从高速设备代替慢速
“ lsof -i ”:查看某个端口是哪个进程在使用, “ iotop ”:查看是哪个进程带来了大量的磁盘I/O,(查看哪个进程让磁盘I/O)特别繁忙。“ pid ”:每个进程系统都会分配一个数字。

面试题、例题、知识点 汇总
四次挥手示意图:
面试题、例题、知识点 汇总
三次招手示意图:
面试题、例题、知识点 汇总
网段数:2^(可变的网络ID), 划分子网数:2^(网ID借主ID), 主机数:2^主机ID位-2, 网络ID:IP与子网掩码,
vim的使用:
打开/退出 移动
vim -R file1 只读打开 h 左移一个字符
:qall 退出所有文件 l 右移一个字符
:wq 写入并退出 k 上移一个字符
:q! 强制退出 j 下移一个字符
替换
:s/old/new/ 用old替换new,替换当前行的第一个匹配
:s/old/new/g 用old替换new,替换当前行的所有匹配
:%s/old/new/ 用old替换new,替换所有行的第一个匹配
:%s/old/new/g 用old替换new,替换整个文件的所有匹配
查找
/text 查找text,按n健查找下一个,按N健查找前一个
?text 查找text,反向查找,按n健查找下一个,按N健查找前一个
:set ignorecase  忽略大小写的查找
:set noignorecase  不忽略大小写的查找
删除
dd 删除当前行
dj 删除当前行和上一行
dk 删除当前行和下一行
10dd 删除当前行开始的共10行
D 删除当前字符至行尾

1、tar的意思是Together ARchive(打包归档)。我们可以用来打包,也可以用来解压包,而且还支持打包后用各种格式压缩(gz、bz2、xz等)。
单个参数意义:
f: 归档file
v: verbose(注:详细),显示压缩过程的详细信息
t: list,显示归档的内容
x: extract,解压
c: compress,压缩
z: gzip格式压缩,后缀为.gz
j: bzip2格式压缩,后缀为.bz2
J: xz格式压缩,后缀为.xz
常用组合:
组合参数 意义 压缩文件后缀
cvf 原始tar包,不压缩 .tar
zcvf 先tar,后gzip压缩 tar.gz 、tgz
jcvf 先tar,后bzip2压缩 tar.bz2 、tbz2
Jcvf 先tar,后xz压缩 tar.xz、txz
xvf 解压所有格式,通用解压命令 -
(1)、 简述raid0、raid1、raid5三种工作模式的工作原理及特点
(2)描述linux系统下创建软RAID5的命令和步骤
(1)、RAID0
面试题、例题、知识点 汇总
RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。
RAID1
面试题、例题、知识点 汇总
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。
如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。
RAID5
面试题、例题、知识点 汇总
RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,便宜。

(2)、新增加一块硬盘sdb,200G
划分4个分区,分别为20G
fdisk /dev/sdb,具体过程不贴了,最后的效果是这样:
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
/dev/sdb2 41945088 83888127 20971520 83 Linux
/dev/sdb3 83888128 125831167 20971520 83 Linux
/dev/sdb4 125831168 419430399 146799616 5 Extended
/dev/sdb5 125833216 167776255 20971520 83 Linux

sdb1,sdb2,sdb3,sdb5各20G

创建md0的软raid5阵列

mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5

格式化

mkfs.xfs /dev/md0

挂载

mkdir /mnt/raid5
mount /dev/md0 /mnt/raid5

每天的2 点和12 点整,将/etc 备份至/testdir/backup目录中,保存的文件名称格式为etcbak-yyyy-mm-dd-HH.tar.xz
crontab -e
0 2,12* * * /usr/bin/tar -Jcvf etcbak-`data +%F-%H`.tar.xz /etc
列出三个私有地址网络,用 CIDR 表示,并将 10.100.208.0/20 网络划分成 8 个子网,写出最大子网络的 IP 范围。
三个私有地址网络:
10.0.0.0/8~10.255.255.255/8
11.172.16.0.0/16 ~ 172.31.255.255/16     16个地址用于内部
192.168.0.0/24 ~ 192.168.255.255/24       256个地址用于内部
划分后的最大子网络的IP范围为:  10.100.222.1-10.100.223.255
给CentOS6 eth0 网 卡 , 分 别 设 置 三 个 IP 地 址 :10.0.0.200/8,172.18.0.200/16,192.168.0.200/24,请写出步骤
临时配置:
ifconfig eth0:0 10.0.0.200 netmask 255.0.0.0 up
ifconfig eth0:1 172.18.0.200 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.0.200 netmask 255.255.255.0 up
永久生效:
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.200
PREFIX=8
vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.18.0.200
PREFIX=16
vim /etc/sysconfig/network-scripts/ifcfg-eth0:2
DEVICE=eth0:2
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.200
PREFIX=24

在 CentOS6 中,误删除/boot 下所有文件后无法启动,写出恢复的详细步骤。
救援模式进入系统
chroot /mnt/sysimage
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
grub-install /dev/sda
手写/boot/grub/grub.conf
default =0
timeout=5
root (hd0,0)
title CentOS 6.9
    kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2
    init initramfs-2.6.32-696.el6.x86_64.img
退出重启

快速查找/root目录中大于2M的文本,并将文件中的magedu,换成www.magedu.com 
find /root --size +2M -type f -exec sed -i 's/magedu/www\.magedu\.com/g' {} \;

若系统检测到用root用户登录了系统,如何将所登录的终端杀死,并立即对root用户修改密码。
root用户执行who查看登录的终端信息(TERMINAL)
ps -t |grep TERMINAL查看终端的进程号
kill -9 PID按终端的进程号号杀掉异常的终端进程
echo xxxx |passwd --stdin rootxxxx为新的密码

简述CentOS6开机启动流程
post–mbr grub 1stage–stage1.5–stage 2 /boot/grub—/boot/grub/grub.conf —kernel /vmlinuz.XXX root=— /boot/initramfs |/boot/initrd.XX.img —/sbin/init –/etc/inittab —/etc/rc.d/rc.sysinit(/etc/fstab) —/etc/rc5.d/K,S —/etc/rc.d/rc.local –login
POST加电自检
引导加载器bootloader
bootloader的引导程序GRUB的一部分放在MBR中
引导加载器程序GRUB
grub 1.5阶段和2阶段
加载内核模块
先加载vmliuz内核,然后加载initramfs文件initd.img(里面都是预加载用到的的模块)
运行init,挂载硬盘和启动程序
运行init程序,init去读inittab启动模式,读取/etc/rc.d/rc.sysinit(里面有硬盘的挂载),找到相应模式对应的程序启动脚本,比如在5模式,去/etc/rc5.d里按顺序启动程序
sbin/init –/etc/inittab —/etc/rc.d/rc.sysinit(/etc/fstab) —/etc/rc5.d —/etc/rc.d/rc.local
登录

Linux现连接一个新的存储(如/dev/sdb,容量为10T)一人应用程序需要在/data目录使用此存储的100G的存储空间,若做成LVM需要哪些步骤,请描述
# 让服务器识别硬盘
echo '- - -' /sys/class/scsi_host/host2/scan
# lsblk可以看到硬盘
lsblk
lvm创建过程:
pvcreate /dev/sdb
vgcreate vg1  /dev/sdb
lvcreate -L 100G -n lv1 vg1
mkfs.ext4 /dev/vg1/lv1
mkdir /data
mount /dev/vg1/lv1 /data
如果要加到fstab里设成开机启动:
echo "/dev/vg1/lv1 /data ext4 defaults 0 0" >> /etc/fstab

修改上述网站的http 端口为9527 ,并为之增加SELinux 端口标签。
sed -i.bak 's/Listen\ 80/Listen\ 9527/g' /etc/httpd/conf/httpd.conf # 修改端口为9527
semanage port -l| grep http_port_t # SELinux策略里没有9527端口
semanage port -a -t http_port_t -p tcp 9527 # 添加9527端口
semanage port -l| grep http_port_t # 再次查看有了
查看crond进程打开了哪些文件
lsof -c crond|grep REG|tr -s " " |cut -d" " -f9

请完成以下操作
1)查询file.txt文件里第一列数据数值之和(字段以&符号分隔)
2)查询Hie.txt第7行之前添加一行,内容为”#注释”
3)打印出file.txt文件第6到第10行
awk -F'&'  'NR==1 {for (i=1;i<=NF;i++){sum+=$i};print sum}' file.txt
sed -i.bak '7i/#注释' Hie.txt
awk 'NR >=6 && NR<=10' file.txt

编写脚本,利用变量RANDOM生成10个随机数字,输出这10个数字,并显示其中的最大值和最小值,用两种方法实现
1、for i in `seq 0 9`;do
    array[$i]=$RANDOM
    echo ${array[$i]}
done
echo "the min number:"
echo ${array[*]}|awk -v RS=' ' -v ORS="\n" '{print $0}'|sort -n|grep -v '^$'|head -1
echo "the max number:"
echo ${array[*]}|awk -v RS=' ' -v ORS="\n" '{print $0}'|sort -n|grep -v '^$'|tail -1
2、for i in `seq 10`;do
    j=$RANDOM
    echo $j
    if [ $i -eq 1 ];then
        max=$j
        min=$j
    else
        if [ $j -ge $max ];then
            max=$j
        fi
        if [ $j -le $min ];then
            min=$j
        fi
    fi
done

echo max number is $max
echo min number is $min

复制/etc/ssh/sshd_config 到/tmp/中并更名为sshd_config.bak。将/tmp/sshd_config.bak文件中所有以非#号开头与包含空白字符的行保存至/tmp/sshd_config中。
cp /etc/ssh/sshd_config /tmp/sshd_config.bak
cat /tmp/sshd_config.bak |grep "^[^#]"|grep "^[^[:space:]*$]"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章