經過這段時間學習Linux基礎命令,爲了檢測本身對Linux基礎命令掌握的狀況,從網上整理13到測試題,並將其整理出來供你們參考學習。html
一、建立目錄/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搭配)
一、如何取得/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 #快捷鍵註銷
經過一段時間對linux系統的基本命令、文件屬性及權限、三劍客grep、sed、awk正則表達式以及經常使用的通配符、VI編輯器的學習,進行掌握測試是否造成本身潛意識的知識等
一、每隔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