Linux系統運維基礎測試題

1    Linux運維基礎測試題(第一關)

經過這段時間學習Linux基礎命令,爲了檢測本身對Linux基礎命令掌握的狀況,從網上整理13到測試題,並將其整理出來供你們參考學習。html

1.1    習題實例

一、建立目錄/data/oldboy,而且在該目錄下建立文件oldboy.txt,而後在文件oldboy.txt裏面寫入內容「inet addr:172.16.0.2 Bcast:172.16.0.255 Mask:255.255.255.0」(不包含引號)。node

實例演示:
[root@oldboy ~]# mkdir -p /data/oldboy
[root@oldboy ~]# cd /data/oldboy/
[root@oldboy oldboy]# pwd
/data/oldboy
[root@oldboy oldboy]# ifconfig eth0 | sed -n '2p'| xargs > oldboy.txt
[root@oldboy oldboy]# cat oldboy.txt 
inet addr:172.16.0.2 Bcast:172.16.0.255 Mask:255.255.255.0
[root@oldboy oldboy]# ls -l
total 4
-rw-r--r-- 1 root root 71 Apr  7 14:54 oldboy.txt
[root@oldboy oldboy]#

二、將題1中的oldboy.txt文件內容經過命令過濾只輸出以下內容:172.16.0.2 172.16.0.255 255.255.255.0mysql

實例演示:
方法一:
[root@oldboy oldboy]# awk -F '[ :]+' '{print $3,$5,$7}' oldboy.txt    
172.16.0.2 172.16.0.255 255.255.255.0
方法二:
[root@oldboy oldboy]# sed 's/ /:/g' oldboy.txt | awk -F ':' '{print $3,$5,$7}'
172.16.0.2 172.16.0.255 255.255.255.0

三、將題1中的oldboy目錄移動到/tmp目錄下,並將/etc/passwd文件複製到/tmp/oldboy下。linux

實例演示:
[root@oldboy oldboy]# cd /data/
[root@oldboy data]# pwd
/data
[root@oldboy data]# ls -l
total 4
drwxr-xr-x 2 root root 4096 Apr  7 14:54 oldboy
[root@oldboy data]# mv oldboy/ /tmp && cp -p /etc/passwd /tmp/oldboy
[root@oldboy data]# tree /tmp/
/tmp/
`-- oldboy
    |-- oldboy.txt
    `-- passwd

1 directory, 2 files
[root@oldboy data]#

四、在題3的基礎上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy.txt文件裏。正則表達式

實例演示:
[root@oldboy data]# cd /tmp/oldboy/
[root@oldboy oldboy]# pwd
/tmp/oldboy
[root@oldboy oldboy]# awk -F ':' 'NR>=10&&NR<=20{print $3}' passwd > oldboy.txt 
[root@oldboy oldboy]# cat oldboy.txt 
10
11
12
13
14
99
81
69
173
68
38
[root@oldboy oldboy]#

五、在題3的基礎上要求用命令rm刪除文件時提示以下禁止使用rm的提示,並使該效果永久生效。sql

[root@oldboy oldboy]# rm -f passwdapache

Do not use command -f passwd數組

實例演示:
[root@oldboy oldboy]# alias rm='echo "Do not use command"'
[root@oldboy oldboy]# alias | grep rm
alias rm='echo "Do not use command"'
[root@oldboy oldboy]# echo "alias rm='echo "Do not use command"'" >> /etc/profile
[root@oldboy oldboy]# echo "alias rm='echo "Do not use command"'" >> /etc/bashrc
[root@oldboy oldboy]# rm -f passwd 
Do not use command -f passwd
[root@oldboy oldboy]#

六、在題3的基礎上,刪除/tmp/oldboy下除了passwd之外的其餘文件。緩存

演示實例:
[root@oldboy ~]# find /tmp/oldboy/ -type f -name 'passwd'
/tmp/oldboy/passwd
[root@oldboy ~]# find /tmp/oldboy/ -type f ! -name 'passwd'
/tmp/oldboy/oldboy.txt
[root@oldboy ~]# find /tmp/oldboy/ -type f ! -name 'passwd' | \rm -rf

七、在題3的基礎上,請打印/etc/passwd文件中第2-5行(不低於三種方法)。安全

實例演示:
方法一:
[root@oldboy ~]# head -n 5 /etc/passwd | tail -n 4 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
方法二:
[root@oldboy ~]# sed -n '2,5'p /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
方法三:
[root@oldboy ~]# awk 'NR>=2 && NR<=5 {print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@oldboy ~]#
方法四:
[root@oldboy ~]# awk '{if(NR>=2&&NR<=5) print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

八、在題3的基礎上,使用命令調換passwd文件裏root位置和/bin/bash位置?即將全部的第一列和最後一列位置調換?例如:默認:root:x:0:0:root:/root:/bin/bash修改後:/bin/bash:x:0:0:root:/root:root

實例演示:
方法一:
[root@oldboy ~]# awk -F ':' '{num=$1;$1=$NF;$NF=num;print $0}' /tmp/oldboy/passwd | tr " " ":"
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:13:30:gopher:/var/gopher:gopher
/sbin/nologin:x:14:50:FTP:User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:81:81:System:message:bus:/:dbus
/sbin/nologin:x:69:69:virtual:console:memory:owner:/dev:vcsa
/sbin/nologin:x:173:173::/etc/abrt:abrt
/sbin/nologin:x:68:68:HAL:daemon:/:haldaemon
/sbin/nologin:x:38:38::/etc/ntp:ntp
/sbin/nologin:x:499:76:"Saslauthd:user":/var/empty/saslauth:saslauth
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:74:74:Privilege-separated:SSH:/var/empty/sshd:sshd
/sbin/nologin:x:72:72::/:tcpdump
/bin/bash:x:500:500::/home/oldboy:gandalf
方法二:
[root@oldboy ~]# awk -F ':' '{OFS=":";num=$1;$1=$NF;$NF=num;print $0}' /tmp/oldboy/passwd
方法三:
[root@oldboy ~]# awk -F ':' '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' /tmp/oldboy/passwd          
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:13:30:gopher:/var/gopher:gopher
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:69:69:virtual console memory owner:/dev:vcsa
/sbin/nologin:x:173:173::/etc/abrt:abrt
/sbin/nologin:x:68:68:HAL daemon:/:haldaemon
/sbin/nologin:x:38:38::/etc/ntp:ntp
/sbin/nologin:x:499:76:"Saslauthd user":/var/empty/saslauth:saslauth
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:72:72::/:tcpdump
/bin/bash:x:500:500::/home/oldboy:gandalf
[root@oldboy ~]#
方法四:
[root@oldboy oldboy]# sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:13:30:gopher:/var/gopher:gopher
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:69:69:virtual console memory owner:/dev:vcsa
/sbin/nologin:x:173:173::/etc/abrt:abrt
/sbin/nologin:x:68:68:HAL daemon:/:haldaemon
/sbin/nologin:x:38:38::/etc/ntp:ntp
/sbin/nologin:x:499:76:"Saslauthd user":/var/empty/saslauth:saslauth
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:72:72::/:tcpdump
/bin/bash:x:500:500::/home/oldboy:gandalf
/sbin/nologin:x:48:48:Apache:/var/www:apache

九、把/data目錄及其子目錄下全部以擴展名.txt結尾的文件中包含oldgirl的字符串所有替換爲oldboy

實例演示:
[root@oldboy ~]# cd /data/
[root@oldboy data]# ls
[root@oldboy data]# mkdir 330{6..7}
[root@oldboy data]# echo "oldgirl1" > a.txt
[root@oldboy data]# echo "oldgirl1" > 3306/b.txt 
[root@oldboy data]# echo "oldgirl1" > 3307/c.txt
[root@oldboy data]# tree /data/
/data/
|-- 3306
|   `-- b.txt
|-- 3307
|   `-- c.txt
`-- a.txt

2 directories, 3 files
[root@oldboy data]# find /data/ -type f -name "*.txt" | xargs sed -i 's/oldgirl1/oldboy/'
[root@oldboy data]# find /data/ -type f -name "*.txt" | xargs cat
oldboy
oldboy
oldboy
[root@oldboy data]#

十、查找/oldboy下全部7天之前以.log結尾的大於1M的文件移動到/tmp目錄下。

實例演示:
[root@oldboy /]# mkdir /oldboy
[root@oldboy /]# cat >> test.log  < /var/log/messages
[root@oldboy /]# ls -lh test.log                     
-rw-r--r-- 1 root root 1.8M Apr  7 16:02 test.log
[root@oldboy /]# mv test.log /oldboy/
[root@oldboy /]# cd /oldboy/
[root@oldboy oldboy]# ls -lh test.log 
-rw-r--r-- 1 root root 1.8M Apr  7 16:02 test.log
[root@oldboy oldboy]# date
Sat Apr  7 16:05:00 CST 2018
[root@oldboy oldboy]# date -s 20180420
Fri Apr 20 00:00:00 CST 2018
[root@oldboy oldboy]# stat test.log 
  File: `test.log'
  Size: 1834246         Blocks: 3584       IO Block: 4096   regular file
Device: 803h/2051d      Inode: 8421        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-04-07 16:01:16.450486273 +0800
Modify: 2018-04-07 16:02:29.271489023 +0800
Change: 2018-04-07 16:03:52.383492492 +0800
方法一:
[root@oldboy oldboy]# find /oldboy/ -type f -name "*.log" -mtime +7 -size +1M | xargs -i mv {} /tmp/
方法二:
[root@oldboy oldboy]# find /oldboy/ -type f -name "*.log" -mtime +7 -size +1M -exec mv {} /tmp \;
方法三:
[root@oldboy oldboy]# mv `find /oldboy/ -type f -name '*.log' -mtime +7 -size +1M ` /tmp

十一、什麼是linux的運行級別,請描述linux的運行級別不一樣數字的含義?

答:系統當前運行中所使用的運行模式,就像手動檔汽車擁有不一樣的檔位,不一樣的檔位表明

不一樣的速度工做狀態。
0-6運行級別的解釋:
0 關機
1 表明單用戶模式(系統崩潰、root密碼忘記)
2表明多用戶模式,無NFS網絡文件系統的功能 
3表明徹底多用戶模式,系統默認的運行級別(即文本模式)
4表明未使用
5表明圖形桌面
6表明關機

十二、請描述buffer和cache的區別?

答:從互聯網下載文件,現將文件寫入到系統內存中,而後再慢慢往硬盤中寫,這個過程稱爲buffer(緩衝區),如(下載)互聯網上的用戶,訪問本身本地硬盤裏的數據,硬盤將要訪問的應用、文件等緩存到內存中,
互聯網用戶讀取內存中的已緩存的應用、文件等,這個過程稱爲cache(緩存區),如上傳

1三、請說出你知道的下列字符在linux裏能夠表明的意義。~  -  .  ..  | >  >>  <  <<  !

答:~ 表明用戶的家目錄 - 表明上一次目錄 . 表明當前目錄 .. 表明上一級目錄 
| 表明管道,將前面命令的輸出做爲後面命令的輸入 > 表明覆蓋式輸出重定向
>> 表明追加式輸出重定向 < 表明輸入重定向(前面命令執行參數能夠從後面的文件中獲取)
>> 表明追加輸入重定向(cat >> filename <<EOF …. >EOF)! 表明取反(給find搭配)

2    Linux運維基礎測試題(第二關)

2.1    習題實例

一、如何取得/etiantian文件的權限對應的數字內容,如-rw-r--r—爲644,要求使用命令取得644或0644這樣的數字。

解題思路:

1)	經過stat輸出包含目標的內容
2)	經過head,tail,sed,awk,grep定位到行(即取行)
3)	經過cut,awk等設置分隔符取出須要段內容(即取列)

實例演示:

查看演示文件屬性信息:
[root@oldboy oldboy]# touch etiantian
[root@oldboy oldboy]# stat etiantian 
  File: `etiantian'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d      Inode: 130147      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-04-23 05:24:50.648787149 +0800
Modify: 2018-04-23 05:24:36.355780254 +0800
Change: 2018-04-23 05:24:36.355780254 +0800

方法一:

[root@oldboy oldboy]# ls -ld etiantian | cut -c2-10
rw-r--r--
[root@oldboy oldboy]# ls -ld etiantian | cut -c2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3$4+$5+$6$7+$8+$9}'  
644

方法二:

[root@oldboy oldboy]# stat -c %a etiantian  
644
[root@oldboy oldboy]# stat -c %A etiantian  
-rw-r--r--

方法三:

[root@oldboy oldboy]# stat etiantian | awk -F "[0/]" 'NR==4 {print $2}'             
644

方法四:

[root@oldboy oldboy]# stat etiantian | grep -o "0644" 
0644
[root@oldboy oldboy]# stat etiantian | grep -o "644" 
644

方法五:

[root@oldboy oldboy]# stat etiantian | sed -nr 's#^.*\(0(.*)/-r.*$#\1#gp'
644
[root@oldboy oldboy]# stat etiantian | sed -nr 's#^.*\(0([0-6]+)/-r.*$#\1#gp'  
644
[root@oldboy oldboy]# stat etiantian | sed -nr 's#^.*\(0([0-6]*)/-r.*$#\1#gp' 
644

方法六:

[root@oldboy ~]# stat /etc/hosts | awk NR==4 | grep -Po '(?<=0)\d+'
644

二、linux下經過mkdir命令建立一個新目錄/oldboy/ett,ett的硬連接數是多少,爲何?

解答以下:
1)	ett目錄硬連接數量爲2
[root@oldboy oldboy]# ls -ld ett
drwxr-xr-x 2 root root 4096 Apr 24 22:11 ett
2)	包括ett目錄自己和ett目錄下面的」.」
[root@oldboy oldboy]# ls -ld ett
drwxr-xr-x 2 root root 4096 Apr 24 22:11 ett
[root@oldboy oldboy]# ls -ld ett/.
drwxr-xr-x 2 root root 4096 Apr 24 22:11 ett/.
3)	硬連接表明inode相同

三、請執行命令取出linux中eth0的IP地址(請用cut,awk,sed命令答)

演示內容:

[root@oldboy ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:E6:9D:C9  
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee6:9dc9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2175 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1232 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:185495 (181.1 KiB)  TX bytes:135164 (131.9 KiB)

實例演示:

方法一:
[root@oldboy ~]# ifconfig eth0 | sed -n "2p" | cut -d ":" -f2 | cut -d " " -f1
172.16.0.2
方法二:
[root@oldboy ~]# grep "IPADDR" /etc/sysconfig/network-scripts/ifcfg-eth0 | cut -d "=" -f2
172.16.0.2
方法三:
[root@oldboy ~]# ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}' 
172.16.0.2
方法四:
[root@oldboy ~]# ifconfig eth0 | sed -nr '2s#^.*dr:(.*)  B.*$#\1#gp'
172.16.0.2
[root@oldboy ~]# ifconfig eth0 | sed -n 's#^.*addr:\([0-9].*\) B.*$#\1#gp' 
172.16.0.2 
[root@oldboy ~]# ifconfig eth0 | sed -nr 's#^.*addr:([0-9].*) B.*$#\1#gp'  
172.16.0.2
方法五:
[root@oldboy ~]# ifconfig  eth0 | grep "inet addr" | awk -F ":"  '{print $2} ' | awk '{print $1}'                    
172.16.0.2
方法六:
[root@oldboy ~]# ifconfig eth0 | sed -n '2p' | awk -F "[ :]+" '{print $4}'   
172.16.0.2
awk命令-F 「:」,-F指定分隔符」:」,若是不加-F默認分隔符爲空格
NR 顯示當前行的記錄號即行號
NF 表示當前行記錄域或列的個數
$1 第一列,$2第二列,$0整行
$NF 最後一列,倒數第二列$(NF-1)
方法七:
[root@oldboy ~]# ifconfig eth0 | sed -nr '/inet addr/s#^.*dr:(.*)  B.*$#\1#gp'   
172.16.0.2
方法八:
[root@oldboy ~]# ifconfig eth0 | grep -Po '(?<=dr:)\S+'
172.16.0.2
注意:
Sed能夠過濾想要的內容
[root@oldboy ~]# ifconfig eth0 | sed -n '/inet addr/p'
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0

四、請給出默認狀況eth0網卡配置文件的路徑以及客戶端DNS的路徑

解答以下:
a)	eth0網卡配置文件路徑:
/etc/sysconfig/network-scripts/ifcfg-eth0
b)	DNS配置文件路徑:
/etc/resolv.conf
說明:若是配置DNS,ifcfg-eth0優先於resolv.conf,即先配置DNS配置文件,再配置eth0配置文件將會覆蓋DNS裏面配置的DNS

五、企業案例:查找當前目錄下全部文件,並把文件中的www.etiantian.org字符串替換成www.etiantian.me

解答以下:
[root@oldboy oldboy]# find . -type f | xargs sed -i 's#www.etiantian.org#www.etiantian.me#g'

六、問題:如何賦予oldboy文件-rw-r--r-x權限屬性

解答以下:
方法一:
[root@oldboy oldboy]# ls -ld oldboy   
-rw-r--r-- 1 root root 0 Apr 23 05:34 oldboy
[root@oldboy oldboy]# chmod o+x oldboy
[root@oldboy oldboy]# ls -ld oldboy   
-rw-r--r-x 1 root root 0 Apr 23 05:34 oldboy
方法二:
[root@oldboy oldboy]# ls -ld oldboy   
-rw-r--r-- 1 root root 0 Apr 23 05:34 oldboy
[root@oldboy oldboy]# chmod 645 oldboy
[root@oldboy oldboy]# ls -ld oldboy   
-rw-r--r-x 1 root root 0 Apr 23 05:34 oldboy

七、執行下面命令時發現提示須要輸入密碼,請問提示輸入的密碼是哪一個用戶的密碼?[test@oldboy ~]$ sudo su - gandalf

解答以下:
[test@oldboy ~]$ sudo su - gandalf
[sudo] password for test: 
[gandalf@oldboy ~]$
當前執行命令test帳戶的密碼

八、問題:請問在一個命令上加上什麼參數能夠實現下面命令的內容在同一行輸出。

[gandalf@oldboy ~]$ echo "oldboy";echo "oldboy"
解答以下:
[gandalf@oldboy ~]$ echo -n "oldboy";echo "oldboy"
oldboyoldboy
說明:echo命令經常使用的參數
echo參數:
	-n do not output the trailing newline #不換行,即兩個命令輸出在同一行
	-e enable interpretation of backslash escapes #命令中能夠包含「\n,\t等」
[gandalf@oldboy ~]$ echo -e "oldboyoldgril"  
oldboyoldgril
[gandalf@oldboy ~]$ echo -e "oldboy\noldgril\told"
oldboy
oldgril old

九、問題:請給出以下格式的date命令 例:11-02-26。再給出實現按周輸出 好比:週二輸出爲2,請分別給出命令(標黃即本題答案)

解答以下:
[root@oldboy ~]# date
Tue Apr 24 23:37:03 CST 2018
[root@oldboy ~]# date +%F
2018-04-24
[root@oldboy ~]# date +%y-%m-%d
18-04-24
[root@oldboy ~]# date +%w
2
[root@oldboy ~]# date +%u
2
[root@oldboy ~]# date +%X
23:44:02
[root@oldboy ~]# date +%T
23:44:08
[root@oldboy ~]# date +%F,%T  
2018-04-24,23:45:05
[root@oldboy ~]# date +%F" "%T 
2018-04-24 23:45:09
[root@oldboy ~]# date +%y-%m-%d" "%H:%M:%S 
18-04-24 23:46:48
[root@oldboy ~]# date -s "2018/04/25 21:43" ##手動修改系統日期和時間
Wed Apr 25 21:43:00 CST 2018

特殊引用時間方法:

[root@oldboy ~]# echo $(date +%y-%m-%d" "%H:%M:%S)
18-04-24 23:47:26
[root@oldboy ~]# echo `date +%y-%m-%d" "%H:%M:%S`  
18-04-24 23:47:36

生產環境通常是作定時任務時間同步,機器少能夠直接和互聯網的時間同步,如:

 時間擴展問題:如打印三天前或三天後的日期格式如:2018-04-22/28

[root@oldboy ~]# date +%F     
2018-04-25
[root@oldboy ~]# date +%F -d "-3days"
2018-04-22
[root@oldboy ~]# date +%F -d "3 day ago"
2018-04-22
[root@oldboy ~]# date +%F -d "3days"
2018-04-28
[root@oldboy ~]# date +%F -d "+3days"      
2018-04-28

十、問題:環境變量如何查看及添加

解答以下:
PATH 全部命令的路徑所在地,用冒號分隔
[root@oldboy ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#臨時生效,永久生效須要添加到/etc/profile配置文件,使用source(.) /etc/profile當即生效
#$HOME表明普通用戶家目錄的全路徑
[root@oldboy ~]# export PATH=$PATH:$HOME/bin:/sbin
[root@oldboy ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/sbin

十一、已知/oldboy/test.txt文件內容爲:

[root@oldboy oldboy]# cat test.txt 
oldboy

xizi



xiaochao

請問如何把文件中的空行過濾掉?

解答以下:

方法一(推薦):
[root@oldboy oldboy]# grep -v "^$" test.txt 
oldboy
xizi
xiaochao
方法二(推薦):
[root@oldboy oldboy]# sed '/^$/d' test.txt 
oldboy
xizi
xiaochao
方法三:
[root@oldboy oldboy]# sed -nr '/^[^$]/p' test.txt 
oldboy
xizi
xiaochao
方法四:
[root@oldboy oldboy]# awk '/^[^$]/' test.txt 
oldboy
xizi
xiaochao

十二、請描述下列路徑的內容時作什麼的?

/var/log/messages			系統日誌
/var/log/secure			系統安全日誌
/var/spool/clientmqueue	郵件臨時目錄(臨時隊列)
/proc/interrupts			查看中斷文件
/etc/fstab					磁盤文件系統開機自動掛載文件
/etc/profile				全局的環境變量配置文件

1三、如何快速查到ifconfig的全路徑,請給出命令:

解答以下:
[root@oldboy ~]# which ifconfig
/sbin/ifconfig
[root@oldboy ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@oldboy ~]# whereis -b ifconfig  
ifconfig: /sbin/ifconfig
[root@oldboy ~]# locate ifconfig
/sbin/ifconfig
/usr/sbin/pifconfig
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/fr/man8/ifconfig.8.gz
/usr/share/man/man8/ifconfig.8.gz
/usr/share/man/man8/pifconfig.8.gz
/usr/share/man/pt/man8/ifconfig.8.gz
[root@oldboy ~]# find / -name "ifconfig"
/sbin/ifconfig

1四、每週日上午9:30來linux培訓機構上課(用/oldboy.sh代替),請用linux定時任務命令表示

解答以下:
模擬題意:
[root@oldboy ~]# echo "echo "welcome to learning linux"" > oldboy.sh 
[root@oldboy ~]# ls -ld oldboy.sh 
-rw-r--r-- 1 root root 31 Apr 25 22:36 oldboy.sh
[root@oldboy ~]# cat oldboy.sh 
echo welcome to learning linux
[root@oldboy ~]# /bin/sh oldboy.sh                                        
welcome to learning linux
演示實例:
[root@oldboy ~]# crontab -e #建立定時任務
no crontab for root - using an empty one
#learning linux 9:30 sunday by wolf_dreams 2018-04-25
30 09 * * 0 /bin/sh /root/oldboy.sh > /dev/null 2>&1
[root@oldboy ~]# crontab -l #查看已經建立的定時任務
#learning linux 9:30 sunday by wolf_dreams 2018-04-25
30 09 * * 0 /bin/sh /root/oldboy.sh > /dev/null 2>&1

1五、請給出查看當前哪些用戶在線的linux命令

解答以下:
[root@oldboy ~]# who #當前登陸linux系統的用戶
root     pts/0        Apr 24 23:06 (172.16.0.100)
[root@oldboy ~]# w #當前登陸系統用戶詳細信息
 22:47:19 up  3:22,  1 user,  load average: 0.08, 0.05, 0.01
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    172.16.0.100     Tue23    0.00s  0.28s  0.00s w
[root@oldboy ~]# last #最近登陸系統用戶及對系統作何種操做
root     pts/0        172.16.0.100     Tue Apr 24 23:06   still logged in   
root     pts/0        172.16.0.100     Tue Apr 24 21:33 - 23:06  (01:32)    
reboot   system boot  2.6.32-431.el6.x Tue Apr 24 21:33 - 22:47 (1+01:14)   
[root@oldboy ~]# lastlog #系統全部用戶登陸日誌狀況
Username         Port     From             Latest
root             pts/0    172.16.0.100     Tue Apr 24 23:06:40 +0800 2018
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
uucp                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
gopher                                     **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
dbus                                       **Never logged in**
vcsa                                       **Never logged in**
abrt                                       **Never logged in**
haldaemon                                  **Never logged in**
ntp                                        **Never logged in**
saslauth                                   **Never logged in**
postfix                                    **Never logged in**
sshd                                       **Never logged in**
tcpdump                                    **Never logged in**
apache                                     **Never logged in**
gandalf                                    **Never logged in**
test                                       **Never logged in**
[root@oldboy ~]# users #當前正在工做的用戶
root

16、公司開發人員申請對某一臺服務器10天的普通用戶權限,請問你如何操做只給此用戶10天的使用權限

解答以下:
[root@oldboy ~]# date +%F  
2018-04-25
[root@oldboy ~]# chage -l test
Last password change                                    : Apr 24, 2018
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
#普通帳戶test,10天后過時
[root@oldboy ~]# usermod -e "$(date +%F -d "+10day")" test
[root@oldboy ~]# chage -l test
Last password change                                    : Apr 24, 2018
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : May 05, 2018
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
#取消test普通用戶添加的過時期限
[root@oldboy ~]# chage -E -1 test
[root@oldboy ~]# chage -l test
Last password change                                    : Apr 24, 2018
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

17、關機、重啓、註銷命令總結

關機:
Shutdown -h now #馬上關機
Shutdown -h +1  #1分鐘後關機
init 0
halt
poweroff
重啓:
reboot
shutdown -r now
shutdown -r +1
init 6
註銷:
logout
exit
Ctrl+d #快捷鍵註銷

3    Linux運維基礎測試題(第三關)

經過一段時間對linux系統的基本命令、文件屬性及權限、三劍客grep、sed、awk正則表達式以及經常使用的通配符、VI編輯器的學習,進行掌握測試是否造成本身潛意識的知識等

3.1    習題實例

一、每隔1分鐘,打印一個+號到oldboy.log,請給出crontab完整命令

#系統定時任務配置文件
[root@oldboy ~]# cat /etc/crontab
#建立定時任務
[root@oldboy ~]# crontab -e
#echo + oldboy.log file by wolf_dreams 2018-05-01
*/1 * * * * echo "+" > /root/oldboy/oldboy.log
#查看已建立的定時任務
[root@oldboy ~]# crontab -l
#echo + oldboy.log file by wolf_dreams 2018-05-01
*/1 * * * * echo "+" > /root/oldboy/oldboy.log
#顯示實時寫入動做
[root@oldboy ~]# tail -f /root/oldboy/oldboy.log
+
tail: /root/oldboy/oldboy.log: file truncated
+

二、每隔2個小時將系統文件/etc/services文件打包備份到/tmp目錄下(每次備份按時間生成不一樣的備份包)

#打包腳本實例
[root@oldboy oldboy]# vi backup_service.sh
#!/bin/bash
cd /
/bin/tar -czvf /tmp/$(date +%F-%T).tar.gz etc/services
[root@oldboy oldboy]# chmod u+x backup_service.sh
[root@oldboy oldboy]# ls -l backup_service.sh 
-rwxr--r-- 1 root root 65 May  1 11:45 backup_service.sh
#查看定時任務每分鐘執行一次
[root@oldboy oldboy]# crontab -l | tail -2   
####tar ***/etc/services
*/1 * * * * /bin/sh /root/oldboy/backup_service.sh > /dev/null 2>&1
#查看定時任務每兩個小時執行一次
[root@oldboy oldboy]# crontab -l | tail -2
####tar ***/etc/services
00 */2 * * * /bin/sh /root/oldboy/backup_service.sh > /dev/null 2>&1
#顯示演示結果(每隔1分鐘)
[root@oldboy tmp]# ls -l
total 256
-rw-r--r-- 1 root root 127303 May  1 12:10 2018-05-01-12:10:01.tar.gz
-rw-r--r-- 1 root root 127303 May  1 12:11 2018-05-01-12:11:01.tar.gz
#顯示演示結果(每隔2個小時)
[root@oldboy tmp]# ls -l
total 256
-rw-r--r-- 1 root root 127303 May  1 14:00 2018-05-01-14:00:05.tar.gz
-rw-r--r-- 1 root root 127303 May  1 16:00 2018-05-01-16:00:28.tar.gz

三、天天晚上12點,打包站點目錄/var/www/html備份到/data目錄下(每次備份按時間生成不一樣的備份包)

#打包備份腳本實例
[root@oldboy oldboy]# vi backup_html.sh    
#!/bin/bash
cd /
/bin/tar -czvf /data/backup_$(date +%F).tar.gz var/www/html
#給備份腳本賦予x執行權限
[root@oldboy oldboy]# chmod u+x backup_html.sh
[root@oldboy oldboy]# ls -ld backup_html.sh 
-rwxr--r-- 1 root root 79 May  1 17:59 backup_html.sh
#查看定時任務天天晚上12:00執行備份腳本
[root@oldboy oldboy]# crontab -l |tail -2
###tar /var/www/html file /data
00 00 * * * /bin/sh /root/oldboy/backup_html.sh > /dev/null 2>&1
#顯示備份腳本執行結果
[root@oldboy tmp]# ls -l /data/              
total 12
-rw-r--r-- 1 root root 167 May  1 00:00 backup_2018-05-01.tar.gz
-rw-r--r-- 1 root root 167 May  2 00:00 backup_2018-05-02.tar.gz
-rw-r--r-- 1 root root 167 May  3  2018 backup_2018-05-03.tar.gz
4`;do date -s "2018-05-$n 00:00";sleep 60;done 
Tue May  1 00:00:00 CST 2018

四、寫一個定時任務,天天晚上0點刪除第三題中生成的過時的壓縮包(只保留最近7天)

#循環設置時間的腳本實例
[root@oldboy tmp]# for n in `seq 1 1 14`;do date -s "2018-05-$n 00:00";sleep 60;done 
Tue May  1 00:00:00 CST 2018
Wed May  2 00:00:00 CST 2018
Thu May  3 00:00:00 CST 2018
Fri May  4 00:00:00 CST 2018
Sat May  5 00:00:00 CST 2018
Sun May  6 00:00:00 CST 2018
Mon May  7 00:00:00 CST 2018
Tue May  8 00:00:00 CST 2018
Wed May  9 00:00:00 CST 2018
Thu May 10 00:00:00 CST 2018
Fri May 11 00:00:00 CST 2018
Sat May 12 00:00:00 CST 2018
Sun May 13 00:00:00 CST 2018
Mon May 14 00:00:00 CST 2018
#查看/data目錄下的文件
[root@oldboy ~]# ls -l /data/
total 56
-rw-r--r-- 1 root root 167 May  1 00:00 backup_2018-05-01.tar.gz
-rw-r--r-- 1 root root 167 May  2 00:00 backup_2018-05-02.tar.gz
-rw-r--r-- 1 root root 167 May  3 00:00 backup_2018-05-03.tar.gz
-rw-r--r-- 1 root root 167 May  4 00:00 backup_2018-05-04.tar.gz
-rw-r--r-- 1 root root 167 May  5 00:00 backup_2018-05-05.tar.gz
-rw-r--r-- 1 root root 167 May  6 00:00 backup_2018-05-06.tar.gz
-rw-r--r-- 1 root root 167 May  7 00:00 backup_2018-05-07.tar.gz
-rw-r--r-- 1 root root 167 May  8 00:00 backup_2018-05-08.tar.gz
-rw-r--r-- 1 root root 167 May  9 00:00 backup_2018-05-09.tar.gz
-rw-r--r-- 1 root root 167 May 10 00:00 backup_2018-05-10.tar.gz
-rw-r--r-- 1 root root 167 May 11 00:00 backup_2018-05-11.tar.gz
-rw-r--r-- 1 root root 167 May 12 00:00 backup_2018-05-12.tar.gz
-rw-r--r-- 1 root root 167 May 13 00:00 backup_2018-05-13.tar.gz
-rw-r--r-- 1 root root 167 May 14 00:00 backup_2018-05-14.tar.gz
#刪除/data目錄下文件的腳本實例
[root@oldboy oldboy]# vi remove_backup.sh
#!/bin/bash
/bin/find /data/ -type f -name "*.tar.gz" ! -mtime -7 | xargs /bin/rm –f
[root@oldboy oldboy]# chmod u+x remove_backup.sh 
[root@oldboy oldboy]# ls -ld remove_backup.sh 
-rwxr--r-- 1 root root 82 May 14 00:09 remove_backup.sh
#查看設置的定時任務(天天晚上12點)
[root@oldboy oldboy]# crontab -l | tail -2
###remove /data directory *.tar.gz files
00 00 * * * /bin/sh /root/oldboy/remove_backup.sh > /dev/null 2>&1
#再次查看/data目錄確認是否把7天之前以及第7天的壓縮包是否刪除
[root@oldboy ~]# ls -l /data/
total 28
-rw-r--r-- 1 root root 167 May  8 00:00 backup_2018-05-08.tar.gz
-rw-r--r-- 1 root root 167 May  9 00:00 backup_2018-05-09.tar.gz
-rw-r--r-- 1 root root 167 May 10 00:00 backup_2018-05-10.tar.gz
-rw-r--r-- 1 root root 167 May 11 00:00 backup_2018-05-11.tar.gz
-rw-r--r-- 1 root root 167 May 12 00:00 backup_2018-05-12.tar.gz
-rw-r--r-- 1 root root 167 May 13 00:00 backup_2018-05-13.tar.gz
-rw-r--r-- 1 root root 167 May 14 00:00 backup_2018-05-14.tar.gz

五、請描述下列路徑的內容時作什麼的?

/etc/sysctl.conf			配置一些系統信息,並且它的內容所有是對應於/proc/sys/這個目錄的子目錄及文件
/etc/rc.local				開機自啓動程序放置目錄
/etc/hosts				LAN域名解析
/etc/fstab					系統開機自動掛載文件系統
/var/log/secure			安全日誌

六、請說出下列grep正則表達式的含義

^						表示以什麼開頭
$						表示以什麼結尾
.(點號)					表示任意單個字符
\						表示轉義
*						表示任意0個、1個及多個字符
\{n,m\}					表示匹配前面字符n-m次
[^t]						表示匹配不包含t字符的內容
^[^t]						表示匹配非t開頭的任意字符

七、vi命令考察,根據中文給出命令

退出保存										表示:wq
退出並強制保存									表示:wq!
強制退出,不保存								表示:q!
光標移動到文件的最後一行						表示G
光標移動到文件的第一行							表示gg
從光標所在位置將光標移動到當前行的開頭			表示0或^或home
從光標所在位置將光標移動到當前行的結尾			表示$或Shift+a(到結尾處於編輯模式)或end
取消上一次的動做								表示u
刪除一行及刪除包含改行的10行					表示dd、10dd
複製一行及複製包含改行的10行					表示yy、10yy
粘貼複製的內容									表示p
向下搜索										表示/	繼續搜索n,反向搜索N
向上搜索										表示?	繼續搜索n,反向搜索N

八、受權oldboy目錄及其子目錄755的權限,請給出命令

[root@oldboy ~]# ls -ld oldboy
drw-r--r-- 2 root root 4096 Apr 29 18:59 oldboy
[root@oldboy ~]# chmod -R 755 oldboy
[root@oldboy ~]# ls -ld oldboy      
drwxr-xr-x 2 root root 4096 Apr 29 18:59 oldboy
[root@oldboy ~]# ls -l oldboy
total 8
-rwxr-xr-x 1 root root 120 Apr 29 18:59 guanggao.txt
-rwxr-xr-x 1 root root 121 Apr 29 18:59 guanggao.txt.ogi

九、把oldboy目錄及其子目錄的屬主改成oldboy,組改成root,請給出命令

[root@oldboy ~]# ls -ld oldboy;ls -l oldboy 
drwxr-xr-x 2 test test 4096 Apr 29 18:59 oldboy
total 8
-rwxr-xr-x 1 test test 120 Apr 29 18:59 guanggao.txt
-rwxr-xr-x 1 test test 121 Apr 29 18:59 guanggao.txt.ogi
[root@oldboy ~]# chown -R oldboy:root oldboy
[root@oldboy ~]# ls -ld oldboy;ls -l oldboy 
drwxr-xr-x 2 oldboy root 4096 Apr 29 18:59 oldboy
total 8
-rwxr-xr-x 1 oldboy root 120 Apr 29 18:59 guanggao.txt
-rwxr-xr-x 1 oldboy root 121 Apr 29 18:59 guanggao.txt.ogi

十、描述下umask的做用,並舉例

解答:
umask值是控制linux系統默認建立文件默認權限是644和目錄的默認權限是755,umask值默認爲0022,umask是由八進制數組成0-7,計算umask值由三種方法:一、數字計算二、二進制換算三、第三方計算工具;
文件的計算方法是:若是umask位是偶數,則使用文件權限666減去umask值得出linux系統建立文件的默認權限;若是umask位是奇數,則使用文件權限666減去umask值後在奇數位上加1得出linux系統建立文件的默認權限;
目錄的計算方式是:使用目錄權限777減去umask值得出linux系統建立目錄的默認權限

十一、添加一個用戶oldman,並指定屬於sa組,要求組ID爲801,uid爲808,而且不創建家目錄及禁止其登錄

[root@oldboy ~]# groupadd -g 801 sa
[root@oldboy ~]# useradd -g sa -u 808 -s /sbin/nologin -M oldman
[root@oldboy ~]# tail -1 /etc/passwd        
oldman:x:808:801::/home/oldman:/sbin/nologin
[root@oldboy ~]# tail -1 /etc/group 
sa:x:801:

十二、如何查看第十一題中用戶的uid及屬於組的信息

[root@oldboy ~]# id oldman
uid=808(oldman) gid=801(sa) groups=801(sa)

1三、查看當前系統每IP鏈接數

[root@cobbler-node1 ~]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0    180 172.16.0.3:2201             172.16.0.100:49278          ESTABLISHED 
tcp        0      0 172.16.0.3:5389             172.16.0.100:54140          TIME_WAIT   
tcp        0      0 172.16.0.3:21               172.16.0.100:54139          TIME_WAIT   
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    9741   /var/run/portreserve/socket
unix  6      [ ]         DGRAM                    9773   /dev/log
unix  2      [ ]         DGRAM                    7937   @/org/kernel/udev/udevd
unix  2      [ ]         DGRAM                    28397  
unix  2      [ ]         DGRAM                    27407  
unix  2      [ ]         DGRAM                    9866   
unix  2      [ ]         DGRAM                    9840   
unix  3      [ ]         DGRAM                    7957   
unix  3      [ ]         DGRAM                    7956   
[root@cobbler-node1 ~]# netstat -n|awk '/^tcp/{print $4}'|awk -F ":" '{print $1}'|sort -n |uniq -c
      3 172.16.0.3

1四、請列出(http|https|ftp|telnet|ssh|rsync|dns|mysql)服務使用的端口

[root@cobbler-node1 ~]# awk --posix '$1~/^(http|https|ftp|telnet|ssh|rsync|dns|mysql)$/ {print $0}' /etc/services          
ftp             21/tcp
ftp             21/udp          fsp fspd
ssh             22/tcp                          # The Secure Shell (SSH) Protocol
ssh             22/udp                          # The Secure Shell (SSH) Protocol
telnet          23/tcp
telnet          23/udp
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
http            80/sctp                         # HyperText Transfer Protocol
https           443/tcp                         # http protocol over TLS/SSL
https           443/udp                         # http protocol over TLS/SSL
https           443/sctp                        # http protocol over TLS/SSL
rsync           873/tcp                         # rsync
rsync           873/udp                         # rsync
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ftp             21/sctp                 # FTP
ssh             22/sctp                 # SSH
相關文章
相關標籤/搜索