1. 程式人生 > >如何過濾出已知當前目錄下oldboy中的所有一級目錄

如何過濾出已知當前目錄下oldboy中的所有一級目錄

3.4 dep 分隔符 member 排除 故障 多少 設置ip 如何解決

第1章 linux啟動過程
1.1 linux啟動過程
(1) 開機自檢(BIOS)內存cup是否有問題(硬件檢查)
(2) MBR引導
(3) GRUB菜單(選擇不同的內核)
(4) 加載內核(kernel)
(5) 運行init進程(linux裏面的第一個進程,初始化過程)
(6) 讀取/etc/inittab配置文件(運行級別配置文件)
(7) 執行/etc/rc.d/rc.sysinit腳本(系統初始化腳本,設置主機名,設置IP地址)
(8) 執行/etc/rc.d/rc腳本(根據系統的雲心級別,再開機的時候啟動不同的軟件)

  1. PATH
    PATH 存放的是linux下命令的路徑(位置)
    [root@oldboyedu50-lnb ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

1.2 linux執行命令過程
1.是否是別名
2.在PATH中找命令是否存在
1).提示
command not found
2).執行

小結:
1.linux啟動過程
2.PATH作用
PS1 LANG PATH (三個環境變量)
3.linux執行命令過程
1.3 題1過濾 一級目錄
##.1 如何過濾出已知當前目錄下oldboy中的所有一級目錄(提示:不包含oldboy目錄下面目錄的子目錄及隱藏目錄,即只能是第一級目錄)?

創建環境
mkdir /oldboy -p
cd /oldboy

mkdir ext/oldboy test xiaodong xiaofan xingfujie -p
touch jeacen oldboy wodi.gz yingsui.gz

1.3.1 方法1-tree
[root@oldboyedu50-lnb /oldboy]# tree -dL 1
.
├── ext
├── test
├── xiaodong
├── xiaofan
└── xingfujie

5 directories

#-d 只顯示目錄
#-L level 最多顯示多少層

1.3.2 方法2-find
[root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d

.
./xiaodong
./xiaofan
./test
./ext
./xingfujie

#-maxdepth 最大的深度 最多顯示多少層
1.3.3 方法3-find
[root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d
.
./xiaodong
./xiaofan
./test
./ext
./xingfujie
查找點的目錄
[root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d -name "."
.
不顯示帶點的目錄,find命令取反 find -maxdepth 1 -type d ! -name "."
[root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d ! -name "."
./xiaodong
./xiaofan
./test
./ext
./xingfujie
#! 排除 取反 非

1.3.4 方法4 d開頭的
[root@oldboyedu50-lnb /oldboy]# ll |grep "^d"
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
[root@oldboyedu50-lnb /oldboy]# #^ 以....開頭的行 三劍客使用 正則表達式

1.3.5 方法5 第2列大於1
[root@oldboyedu50-lnb /oldboy]# ll |awk ‘$2>1‘
total 40
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
1.3.6 方法6- ls
[root@oldboyedu50-lnb /oldboy]# ls –F 不同類型的文件 加上不同的標記 目錄/
alex.txt jeacen oldboy.txt test.sh t.sh.bak xiaodong/ xingfujie/
ext/ oldboy test/ t.sh wodi.gz xiaofan/ yingsui.gz
[root@oldboyedu50-lnb /oldboy]# #-F 不同類型的文件 加上不同的標記 目錄/
[root@oldboyedu50-lnb /oldboy]# ls -F |grep "/"
ext/
test/
xiaodong/
xiaofan/
xingfujie/

[root@oldboyedu50-lnb /oldboy]# ls -ld */
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext/
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie/

1.4 小結:
1.tree find
2.grep awk
3.ls
1.5 題1 壓縮解壓
1.6 經典故障
tar命令經典故障 Removing leading `/‘ from member names

創建壓縮包都見過這個提示吧?
[root@oldboyedu50-lnb /oldboy]# tar zcf /tmp/etc.tar.gz /etc/
tar: Removing leading `/‘ from member names
什麽意思呢?
背後過程:
打包壓縮過程中 文件或目錄 絕對路徑---->相對路徑
打包的時候:
/etc/host
/etc/profile
壓縮包中樣子
etc/host
etc/profile

這個提示原因:
防止解壓的時候覆蓋源文件。

#12 /etc/目錄為linux系統的默認的配置文件及服務啟動命令的目錄
a.請用tar打包/etc整個目錄(打包及壓縮)。
c.請把a點命令的壓縮包,解壓到/tmp指定目錄下(最好只用tar命令實現)。
b.請用tar打包/etc整個目錄(打包及壓縮,但需要排除/etc/services文件)。

windows 壓縮 winrar/好壓/2345壓縮
linux 打包壓縮 tar

1.7 #創建壓縮包
tar zcf /tmp/etc.tar.gz /etc/

tar zcvf /tmp/etc.tar.gz /etc/
壓縮之後的放在那裏 目標

#z gzip 通過gzip 軟件壓縮
#c create 創建包
#v verbose 顯示過程
#f file 指定文件

1.7.1 #查看壓縮包內容
tar ztf /tmp/etc.tar.gz
#t list 顯示壓縮包內容

#解壓
tar etc.tar.gz 解壓 zxf z可以省略不寫
#x extract 解壓
壓縮
tar zcf
查看
tar tf

解壓
tar xf
顯示壓縮包信息
[root@oldboyedu50-lnb /tmp]# ll /tmp/etc.tar.gz
-rw-r--r-- 1 root root 9734648 Jul 20 01:41 /tmp/etc.tar.gz
#解壓到/opt 解壓到指定位置
[root@oldboyedu50-lnb /tmp]# tar xf /tmp/etc.tar.gz -C /opt/
-C 解壓到指定位置
[root@oldboyedu50-lnb /tmp]# ll /opt/
total 12
drwxr-xr-x. 2 root root 4096 Jul 11 01:16 data
drwxr-xr-x 78 root root 4096 Jul 19 20:43 etc
drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh

b.請用tar打包/etc整個目錄(打包及壓縮,但需要排除/etc/services文件)。
1.7.2 排除/etc/services文件
[root@oldboyedu50-lnb /tmp]# tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
tar: Removing leading `/‘ from member names

排除後
[root@oldboyedu50-lnb /tmp]# tar tf /tmp/etc-pai.tar.gz |grep services
etc/init/readahead-disable-services.conf
排除前
[root@oldboyedu50-lnb /tmp]# tar tf /tmp/etc.tar.gz |grep services
etc/init/readahead-disable-services.conf
etc/services

tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
--exclude-from name.txt 排除文件夾和文件

name.txt
oldboy.txt
/oldboy/oldboy

打包壓縮:
1.創建
2.查看
3.解壓
4.解壓到指定位置
5.排除(了解)

#2 假如當前目錄是

cd - 進入到上一次所在的位置

An argument of - is equivalent to $OLDPWD.

#cd - === cd $OLDPWD

cd .
cp/mv
cd ..
cd ~ ==== cd

#3.
[root@oldboyedu50-lnb /tmp]# cd /etc/
[root@oldboyedu50-lnb /etc]# touch oldboy.txt

ls -lrt
#-r 逆序
#-t 按照修改時間

#6 調試系統服務時,希望能實時查看系統日誌/var/log/secure的更新,如何做?

-f
-F == -f --try 如果文件不存在 會不斷重試

tail -f /var/log/secure
tailf /var/log/secure

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

[root@oldboyedu50-lnb /oldboy]# #{1..5} 生成序列
[root@oldboyedu50-lnb /oldboy]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu50-lnb /oldboy]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1 >nginx.conf
生成一列 然後追加到nginx.conf文件裏面

1.8.1 方法1 cat
[root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf -n顯示序號
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10

1.8.2 方法2 vim
vim nginx.conf
:set nu #顯示行號
#nu === number

:set nonu #取消顯示行號
1.8.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 一整行內容

顯示/proc/mounts 文件的行號和第1列和第3列
awk ‘{print NR,$1,$3}‘ /proc/mounts

1.8.4 方法4 grep -n

grep -n "." nginx.conf

. 正則表達式 任意一個字符
-n 顯示行號

1.8.5 方法5 nl number of lines
nl nginx.conf

1.8.6 方法6 sed
sed = nginx.conf
sed ‘=‘ nginx.conf |xargs -n2
[root@oldboyedu50-nlb ~]# sed ‘=‘ nginx.conf
[root@oldboyedu50-nlb ~]# sed “=” nginx.conf
=顯示行號
小結:
1.cat -n /vim (必會)
2.grep awk (必會)
3.nl sed
1.9 題4
已知nginx服務的訪問日誌按天記錄在服務器本地目錄/app/logs下,由於磁盤空間緊張,現在要求只能保留最近7天訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令。

刪除7天之前的日誌

mkdir -p /app/logs
cd /app/logs
for time in {01..20};do date -s "201805$time"; touch accesswww$(date +%F).log ;done
date -s "20180520 00:00:00"

date 顯示時間 修改時間
find
-mtime modify time 修改時間

[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-1 找出/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-2 8 linux系統運行級別一般為0-6,請分別寫出每個級別的含義。

1) 0-6
2)
runlevel
3)
init

第2章 題5
2.1 iptable
9 裝完系統後,希望讓網絡文件共享服務NFS(iptables),僅在3級別上開機自啟動,該如何做?
讓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

第3章 題6
3.1 亂碼字符集
linux系統中查看中文,但是亂碼了,請問如何解決亂碼問題?

亂碼原因:字符集不同
如何排查: 查看字符集是否相同
如何解決:修改字符集

第4章 題7
4.1 已知如下命令及結果:
[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
a.現在需要從文件中過濾出“oldboy”和“31333741”字符串,請給出命令.
b.如果需要從文件中過濾出“oldboy,31333741”字符串,請再給出命令.
a.現在需要從文件中過濾出“oldboy”和“31333741”字符串,請給出命令.

4.2 方法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

4.3 方法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 1對1的替換

4.4 方法3 tr+cut
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2,3,4 oldboy.txt
am oldboy,myqq is
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2-5 oldboy.txt
am oldboy,myqq is 31333741
-d 指定分隔符(菜刀)
-f 某一列

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

[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |cut -d " " -f3,6
oldboy 31333741
4.5 方法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}‘ oldboy.txt
oldboy

4.6 方法5 sed sed
[root@oldboyedu50-lnb /oldboy]# ca時t oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed ‘s#I am ##g‘ oldboy.txt
oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed ‘s#I am ##g‘ oldboy.txt |sed ‘s#,myqq is##g‘
oldboy 31333741

4.6.1 小結:
1.sed /tr + awk /cut 這兩個必須會
2.awk

4.6.2 如果需要從文件中過濾出“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

4.7 顯示 /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
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
USER:sync UID:5

[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

第5章 題8
14 如何查看/etc/services文件的有多少行?
顯示行號 只保留最後一行
[root@oldboyedu50-lnb /oldboy]# wc /etc/services
10774 58108 641020 /etc/services
[root@oldboyedu50-lnb /oldboy]# wc -l /etc/services
10774 /etc/services

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

|傳遞的是文字
|xargs 傳遞的是文件名

[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l
195

第6章 題9
15 過濾出/etc/services 文件包含3306或1521兩數字所在的行的內容。

egrep "3306或1521" /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

6.1 總結:
1.Linux啟動流程
2.PATH作用
3.查找 grep awk
4.打包壓縮 :創建 查看 解壓 解壓到xxx
5.基礎命令
6.顯示行號

第7章 vmware 經典故障:
該虛擬機似乎正在使用中。

如果該虛擬機未在使用,請按“獲取所有權(T)”按鈕獲取它的所有權。否則,請按“取消(C)”按鈕以防損壞。

配置文件: G:\VMware\模板機01\老男孩教育50期-模板機01.vmx。

方法1.重啟計算機
方法2.通過everything 搜索 .lck 刪除 虛擬機名稱.lck 目錄 重啟vmware

如何過濾出已知當前目錄下oldboy中的所有一級目錄