1. 程式人生 > >第二關練習題-下部

第二關練習題-下部

services 含義 正則表達式 first 圖片 logs 軟連接 mkdir args


第二關練習題-下部

作者:左婷婷

歸檔:學習筆記

2018/7/24

快捷鍵:

Ctrl + 1 標題1

Ctrl + 2 標題2

Ctrl + 3 標題3

Ctrl + 4 實例

Ctrl + 5 程序代碼

Ctrl + 6 正文

格式說明:

藍色字體:註釋

×××背景:重要

綠色背景:註意


技術分享圖片

老男孩教育教學核心思想6重:重目標、重思路、重方法、重實踐、重習慣、重總結

學無止境,老男孩教育成就你人生的起點!

聯系方式:

網站運維QQ交流群:

Linux 385168604

架構師 390642196

Python 29215534

大數據 421358633

官方網站:

http://www.oldboyedu.com


1.1 打印配置文件nginx.conf內容的行號及內容,該如何做?... 3

1.1.1 方法1 cat 3

1.1.2 方法2 vim.. 3

1.1.3 方法3 awk 顯示某一列... 3

1.1.4 方法4 grep -n. 4

1.1.5 方法5 nl number of lines. 4

1.2 本地目錄/app/logs下刪除7天之前的日誌... 5

1.2.1 find -mtime +7|xargs ls –l 5

1.2.2 #找出/app/logs 下面以.log結尾的7天之前的文件 顯示詳細信息(ls -l) (3種方法) 5

1.3 linux系統運行級別一般為

0-6,請分別寫出每個級別的含義。... 6

1.4 iptables開機自啟動?... 6

1.5 linux系統中查看中文,但是亂碼了,請問如何解決亂碼問題?... 7

1.6 現在需要從文件中過濾出“oldboy”和“31333741”字符串,請給出命令. 7

1.6.1 方法1 sed+awk. 7

1.6.2 方法2 tr+awk. 8

1.6.3 方法3 tr+cut 8

1.6.4 方法4 awk. 8

1.6.5 方法5 sed sed. 9

1.7 如果需要從文件中過濾出“oldboy,31333741”字符串,請再給出命令. 9

1.8 顯示 /etc/passwd 1列和第3列內容 要求格式顯示為

: 9

1.9 如何查看/etc/services文件的有多少行?... 9

1.9.1 顯示行號 只保留最後一行... 9

1.10 統計出 /etc目錄下面 .conf結尾的文件的數量... 10

1.11 總結:... 10

1.12 預習:... 10

1.1 打印配置文件nginx.conf內容的行號及內容,該如何做?

[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1 >nginx.conf

1.1.1 方法1 cat

[root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf //顯示行號

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

1.1.2 方法2 vim

使用vim nginx.conf

按esc退出後

加入:set nu 回車 #顯示行號

#nu === number

:set nonu #取消顯示行號

1.1.3 方法3 awk 顯示某一列

[root@oldboyedu50-lnb ~]# awk '{print NR,$1}' /oldboy/nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

NR 行號

$1 1

$2 2

$0 一整行內容

1.1.3.1 顯示/proc/mounts 文件的行號和第1列和第3

awk '{print NR,$1,$3}' /proc/mounts

1.1.4 方法4 grep -n

grep -n "." nginx.conf 顯示所有行

. 正則表達式 任意一個字符

-n 顯示行號

1.1.5 方法5 nl number of lines

nl nginx.conf 顯示行號

方法6 sed

Sed = nginx.conf

=顯示行號

小結:

1.cat -n /vim (必會)

2.grep awk (必會)

3.nl sed

/selinux /selinux

1.2 本地目錄/app/logs下刪除7天之前的日誌

mkdir -p /app/logs // 創建環境

cd /app/logs

for time in {01..20};do date -s "201805$time"; touch access_www_$(date +%F).log ;done

date -s "20180520 00:00:00"

date //顯示時間 修改時間

find

-mtime

modify time 修改時間

1.2.1 find -mtime +7|xargs ls –l

[root@oldboyedu50-lnb /app/logs]# find -mtime +7|xargs ls –l // 顯示前七天之前的文件

-rw-r--r-- 1 root root 0 May 1 00:00 ./access_www_2018-05-01.log

-rw-r--r-- 1 root root 0 May 2 00:00 ./access_www_2018-05-02.log

-rw-r--r-- 1 root root 0 May 3 00:00 ./access_www_2018-05-03.log

-rw-r--r-- 1 root root 0 May 4 00:00 ./access_www_2018-05-04.log

-rw-r--r-- 1 root root 0 May 5 00:00 ./access_www_2018-05-05.log

-rw-r--r-- 1 root root 0 May 6 00:00 ./access_www_2018-05-06.log

-rw-r--r-- 1 root root 0 May 7 00:00 ./access_www_2018-05-07.log

-rw-r--r-- 1 root root 0 May 8 00:00 ./access_www_2018-05-08.log

-rw-r--r-- 1 root root 0 May 9 00:00 ./access_www_2018-05-09.log

-rw-r--r-- 1 root root 0 May 10 00:00 ./access_www_2018-05-10.log

-rw-r--r-- 1 root root 0 May 11 00:00 ./access_www_2018-05-11.log

-rw-r--r-- 1 root root 0 May 12 00:00 ./access_www_2018-05-12.log

1.2.2 #找出/app/logs 下面以.log結尾的7天之前的文件 顯示詳細信息(ls -l) (3種方法)

find /app/logs/ -type f -name "*.log" -mtime +7

方法1

find /app/logs/ -type f -name "*.log" -mtime +7|xargs ls -l

方法2

ls -l $(find /app/logs/ -type f -name "*.log" -mtime +7)

ls -l `find /app/logs/ -type f -name "*.log" -mtime +7`

方法3

find /app/logs/ -type f -name "*.log" -mtime +7 -exec ls -l {} \;

1.3 linux系統運行級別一般為0-6,請分別寫出每個級別的含義。

運行級別

10-6 含義

0 關機 (不要把運行級別設置為0

1 單用戶模式 single user mode

2 多用戶模式無法使用 NFS

3 完全多用戶模式 命令行模式 文本模式 (工作默認的環境)

4 待開發

5 X11 桌面(desktop)模式 圖形化界面模式 6 重啟 (不要把運行級別設置為6

runlevel 查看

init 修改

1.4 iptables開機自啟動?

[root@oldboyedu50-lnb ~]# chkconfig --level 3 iptables on //防火墻開機自啟動

[root@oldboyedu50-lnb ~]# chkconfig |grep ipt 查看

iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off

1.5 linux系統中查看中文,但是亂碼了,請問如何解決亂碼問題?

技術分享圖片

已知如下命令及結果:

[oldboy@test ~]$ mkdir /oldboy ; echo "I am oldboy,myqq is 31333741">/oldboy/oldboy.txt

[oldboy@test ~]$ cat oldboy.txt

I am oldboy,myqq is 31333741

1.6 現在需要從文件中過濾出“oldboy”和“31333741”字符串,請給出命令.

b.如果需要從文件中過濾出“oldboy,31333741”字符串,請再給出命令.

1.6.1 方法1 sed+awk

[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt 將逗號替換為空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}' 顯示第三,六列

oldboy 31333741

1.6.2 方法2 tr+awk

[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt 將逗號替換為空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |awk '{print $3,$6}' 顯示第三,六列

oldboy 31333741

tr sed命令閹割版

[root@oldboyedu50-lnb /oldboy]# echo 123123|tr "123" "abc"

abcabc

[root@oldboyedu50-lnb /oldboy]# echo 112233|tr "123" "abc"

aabbcc

[root@oldboyedu50-lnb /oldboy]# #tr 11的替換

1.6.3 方法3 tr+cut

[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt 將逗號替換為空格

I am oldboy myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |cut -d " " -f3,6 //-d 指定分隔符(菜刀)

-f 某一列

oldboy 31333741

1.6.4 方法4 awk

[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt

I am oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# awk -F "," '{print $2}' oldboy.txt //以逗號分割顯示第二列

myqq is 31333741

#-F 指定分隔符(菜刀)

#-F指定多個分隔符

[root@oldboyedu50-lnb /oldboy]# awk -F "[, ]" '{print $3,$6}' oldboy.txt //以逗號空格為分隔符顯示第三,六列

Oldboy 31333741

1.6.5 方法5 sed sed

[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt

I am oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt //將I am替換為空

oldboy,myqq is 31333741

[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt |sed 's#,myqq is##g' //將I am替換為空

再將,myqq is替換為空

oldboy 31333741

1.7 如果需要從文件中過濾出“oldboy,31333741”字符串,請再給出命令.

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3"*_*"$NF}' oldboy.txt

oldboy*_*31333741

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3":)"$NF}' oldboy.txt

oldboy:)31333741

[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3","$NF}' oldboy.txt 以空格逗號為分隔符,加上“,”顯示第三,最後一列

oldboy,31333741

1.8 顯示 /etc/passwd 1列和第3列內容 要求格式顯示為:

USER:1列內容 UID:3列內容

USER:1列內容 UID:3列內容

USER:1列內容 UID:3列內容

USER:1列內容 UID:3列內容

USER:1列內容 UID:3列內容

[root@oldboyedu50-lnb /oldboy]# awk -F":" '{print "USER:"$1,"UID:"$3}' /etc/passwd|column -t

USER:root UID:0

USER:bin UID:1

USER:daemon UID:2

USER:adm UID:3

USER:lp UID:4

1.9 如何查看/etc/services文件的有多少行?

1.9.1 顯示行號 只保留最後一行

[root@oldboy oldboy]# cat -n /etc/services

[root@oldboyedu50-lnb /oldboy]# wc /etc/services //統計文件信息

10774 58108 641020 /etc/services

[root@oldboyedu50-lnb /oldboy]# wc -l /etc/services //-l顯示行號

10774 /etc/services

1.10 統計出 /etc目錄下面 .conf結尾的文件的數量

|傳遞的是文字

|xargs 傳遞的是文件名

[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc –l 統計.conf結尾的文件的數量

195

過濾出/etc/services 文件包含33061521兩數字所在的行的內容。

egrep "33061521" /etc/services

egrep "3306|1521" /etc/services

mysql 3306/tcp # MySQL

mysql 3306/udp # MySQL

ncube-lm 1521/tcp # nCube License Manager

ncube-lm 1521/udp # nCube License Manager

| 擴展正則表達式 egrep == grep -E

1.11 總結:

1.顯示行號

2.find命令mtime *3

3.運行級別 啟動流程

4.linux顯示亂碼排查過程

5.awk取出某一列 指定分隔符

6.其他命令

1.12 預習:

linux文件屬性

軟連接與硬鏈接區別

磁盤空間不足及排查解決過程


第二關練習題-下部