面試題、例題、知識點 彙總

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:]*$]"

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