Linux運維命令以及概念整理總結(1)

1、文件系統分層結構: LBS Linux Standard Base
2、ls命令、wc命令、時間戳、stat、通配符glob
3、touch、cp、mv、rm、批量改名rename
4、tree、mkdir、rmdir
5、節點編號inode以及節點表、硬鏈接以及軟鏈接
6、file命令、標準輸入,標準輸出

新建位圖圖像 (2)

1、文件系統分層結構: LBS Linux Standard Base

/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader,grub)都存放于此目錄

/bin:供所有用戶使用的基本命令;不能關聯至獨立分區, OS啟動即會用到的程序

/sbin:管理類的基本命令;不能關聯至獨立分區, OS啟動即會用到的程序

/lib:啟動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)

/lib64:專用于x86_64系統上的輔助共享庫文件存放位置

/etc:配置文件目錄

/home/USERNAME:普通用戶家目錄

/root:管理員的家目錄

/media:便攜式移動設備掛載點

注意:

文件名稱區分大小寫

以.開頭的文件為隱藏文件

字符設備是順序訪問的,塊設備是隨機訪問的

dev/zero 是字符設備 c

sda 是塊設備 b block

塊設備有緩存,字符設備沒有緩存

設置文件設備顏色 /etc/DIR_COLORS

 

bin實際是個軟連接 快捷方式

所以 ll /bin/? ? ?ll /bin? ? ? 有區別 因為bin目錄是個軟鏈接

 

2、ls命令、wc命令、時間戳、stat命令、通配符glob

ls命令

ls -a 包含隱藏文件

ls -l 就是ll 顯示額外的信息

ls -R 目錄遞歸情況

ls -1 文件分行顯示

ls -S 按大到小排序

ls /data -lt 按照數據修改時間排序從新到舊(mtime)

ls /data -ltu 按照訪問時間排序從新到舊(atime)

ls /data -ltc 按照元數據修改時間排序從新到舊(ctime)

ls -U /data 按照排放次序排序,即創建次序 舊的文件排在前面 新的排后

ls -X 按文件后綴排序

ls -r 倒序排列文件

ls -d 只在本目錄不進入文件夾

ls -d */ 只顯示當前目錄文件夾

ls -i 查看文件inode 節點編號

例如在/data下有/dir1和/dir2兩個目錄

那么只顯示目錄的方法是:

ls -d /data/*/

ls -d .* 顯示當前目錄下的隱藏文件以及文件夾

ls -R 遞歸目錄

ls -R .* 顯示當前目錄和子目錄的包含../父目錄文件

ls -R .[^.]* 顯示遞歸隱藏文件

ls -Rd .[^.]* 顯示本目錄而不進入子目錄遞歸的隱藏文件

ls -ad .[^.]* 不顯示.和.的顯示本目錄的隱藏文件

wc命令

統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出。

-c 統計字節數。

-l 統計行數。

-m 統計字符數。這個標志不能與 -c 標志一起使用。

 

stat命令

查看單個文件3個時間

文件數據分為:metadata(元數據), data

三個時間戳:

access time:訪問時間,atime,讀取文件內容

modify time: 修改時間, mtime,改變文件內容(數據)

change time: 改變時間, ctime,元數據發生改變

 

文件名優先級排列順序 數字 小寫字母 大寫字母

atime 讀取時間(access time) ctime 元數據修改時間 meta data 例如 擁有者名字。。。

不修改數據則會變化讀時間

ll –time=atime /data/1? ? ? ? ? 查看/data/1的讀時間

ll –time-ctime /data/1? ? ? ? ? ?查看/data/1元數據(狀態)修改時間

stat /data/file6? ? ? ? ? ? ? ? ? ? ? ? ?看file6的所有時間

 

glob 通配符

ls /etc/*.conf

* 一個或多個字符

? 一個字符

注:漢字是2個字節一個字符

ls ~-/data 列出上一個進入目錄下的/data

ls file[1..20] 表示 1 或者2 或者.或者0 4個文件

ls file[1-20] 表示1到20

ls file{1..20} 表示1到20

touch {A..D} 則創建 A B C D四個文件

touch f[A-D] 則創建f[A-D]這一個文件

 

ls f[a-d]則列出 fa fA fb fB fc fC fd 不會列出fD

ls f[A-D]則列出 fA fb fB fc fC fd fD 不會列出fa

 

如果有a b c abc四個文件ls /data/[abc] 會顯示a,b,c這三個文件但不會顯示abc這個文件

如果有a b c d 四個文件 ls /data/[^abc] 則會顯示d 就是排除的意思

 

[]代表選擇中間的任意一個字符而不是全部字符

[:digit:] 任意數字0-9

[:lower:] 任意小寫字母

[:upper:] 任意大寫字母

[:alpha:]任意大小寫字母

[:alnum:]任意數字或字母

 

ls f[[:upper:]] 列出所有包含單個大寫字母的文件

幫助文件 man 7 glob

 

練習

1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄

2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄

3、顯示/etc/目錄下以非字母開頭,后面跟了一個字母及其它任意長度任意字符的文件或目錄

4、顯示/etc/目錄下所有以rc開頭,并后面是0-6之間的數字,其它為任意字符的文件或目錄

5、顯示/etc目錄下,所有以.d結尾的文件或目錄

6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

7、只顯示/root下的隱藏文件和目錄

8、只顯示/etc下的非隱藏目錄

 

練習答案

1. ls /var/l*[[:digit:]]*[[:lower:]]

2. ls /etc/[[:digit:]]*[^[:digit:]]

3. ls /etc/[^[:alpha:]][[:alpha:]]*

4. ls -d /etc/rc[0-6]*

5. ls -d /etc/*.d

6. ls -d /etc/[mnrp]*.conf

7. ls -d /root/.*

8. ls -d /etc/[^.]*/

 

3、touch、cp、mv

 

新建位圖圖像 (2)

touch命令

 

生成文件名為前一天時間的日志文件:

touch `date -d “-1 day” +%F`.log

 

注:

/etc/motd 是設置用戶登陸后的提示信息

/etc/issue 是設置用戶登陸前的提示信息

 

例:如果本來已經存在/etc/motd

touch /etc/motd

則不會改變文件,但是會刷新文件的3個時間

如果使用> /etc/motd 則會改變原文件變成空文件而且改變mtime和ctime(利用此特性可以刪除大文件)

例如創建大文件bigfile

dd if=/dev/zero of=/data/bigfile bs=1M count=1024

 

有一個bigfile大文件,則刪除大文件,釋放磁盤空間安全的方法為:

> bigfile

rm -f bigfile

原理就是利用> bigfile 創建同名文件會覆蓋原大文件變成一個小文件,然后刪除

 

touch -a 僅改變atime和ctime

touch -m 僅改變mtime和ctime

touch -t 指定atime和mtime的時間戳

touch -t 201910200830.50 /etc/hosts

touch -c 如果文件不存在則不予創建

cp命令

 

cp -r 才能復制目錄

cp -d 保留原始鏈接屬性,例如原文件是軟鏈接 則復制后還是原軟鏈接

cp -p 默認保留模式 擁有者 時間戳等如果可能還保留上下文 鏈接還有額外信息等沒有-r功能

cp -a /etc/ /data/etcbackup 保留屬性的備份 -a保留所有屬性(最全)

復制/dev/sda /dev/zero 之類的必須用cp -a 才能成功因為能保留所有屬性

cp -u 只復制源比目標更新的文件

cp -av /usr /data/ v可以看到過程一般復制大文件用,可以看到過程防止死機

cp –backup=numbered f1 /data/f1 復制同時建立原文件的備份,生產環境中建議加入原cp別名

alias cp=’cp -i –backup=numbered’ 寫入 .bashrc內

1、定義別名命令baketc,每天將/etc/目錄下所有文件,備份到/app獨立的子目錄下,并要求子目錄格式為

backupYYYY-mm-dd,備份過程可見

2、創建/app/rootdir目錄,并復制/root下所有文件到該目錄內,要求保留原有權限

 

練習題答案

1. alias baketc=`cp -av /etc /data/backup`date +%F“ 注意目錄如果/etc/則會失敗或者/etc/*會沒有包含

隱藏文件

2. cp -a /root /data/rootdir

 

mv移動和重命名文件

 

mv -i 交互式

mv -f 強制式

如果mv命令的目標和源在相同的文件系統,作為mv 命令用新的文件名創建對應新的目錄項刪除舊目錄條

目對應的舊的文件名不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!

如果目標和源在一個不同的文件系統, mv相當于cp和rm

 

rm刪除命令

rm -i 交互式

rm -f 強制刪除

rm -r 遞歸

一般使用 rm -rf

鏈接數遞減,從而釋放的inode號可以被重用把數據塊放在空閑列表中刪除目錄項數據實際上不會馬上被刪

除,但當另一個文件使用數據塊時將被覆蓋。

 

 

rename 批量文件改名

 

rename “conf” “conf.bak” file* 批量備份conf后綴的文件為conf.bak

alias rm=`mv -t /data` rm變為mv到/data文件夾 建議設置

mv /root/Downloads/ /data/ 把目錄移動到/data/目錄下

 

平時生產中一般磁盤空間大于80%就要報警了

lsof |grep deleted 查看是否有文件已經刪除單沒有釋放空間

例如在本終端刪除文件,而其他終端還有人在訪問該文件

 

有一個bigfile大文件,則刪除大文件,釋放磁盤空間安全的方法為:

> bigfile

rm -f bigfile

就是利用> bigfile 創建同名文件會覆蓋原大文件變成一個小文件,然后刪除

注意touch命令只是改變3個時間但是不會改變內容

 

 

4、tree、mkdir、rmdir

tree

tree命令centos6需要安裝~

tree -L 只顯示第一層 -L 2 顯示1.2層

tree -L -d 只顯示第一層文件夾

 

mkdir創建目錄

mkdir -p 可以一次創建深目錄

例如 mkdir -p /data/dir1/dir2/dir3/dir4

如果想看到創建過程可以加v

例如mkdir -pv /data/dir1/dir2/dir3/dir4

 

創建目錄時直接指定權限則可以:

mkdir -m

 

rmdir 刪除空目錄

如果不是空的也不會刪除

rmdir -p 則是遞歸刪除父空目錄 就是從最低層開始一層層查空目錄如果是空則刪除

例如執行rmdir -d /data/dir1/dir2/dir3/dir4 如果都為空目錄則會直接刪除右邊4個,data是掛載點所以不

會刪除

rm -r 則是遞歸刪除目錄樹不管目錄是不是為空!

 

習題

(1) 如何創建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a,/testdir/dir1/x/b, /testdir/dir1/y/a,

/testdir/dir1/y/b

(2) 如何創建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a,/testdir/dir2/x/b

(3) 如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6,/testdir/dir5/dir7

 

練習題答案:

1.mkdir -p /testdir/dir1/{x,y}/{a,b}

2.mkdir -p /testdir/dir2/{x/{a,b},y}

3.mkdir -p /testdir/dir{3,4,5/dir{6,7}}

cp /etc/hosts{,.bak} 備份文件

等價于 cp /etc/hosts /etc/hosts.bak

encho file{,b}

則為 file fileb

 

5、節點編號inode以及節點表、硬鏈接以及軟鏈接

 

節點編號inode

ls -i 查看節點編號

同一分區中節點編號唯一

inode table 節點表

注意:

節點編號有限如果發現空間沒用光而創建文件失敗則很可能是因為系統節點編號已經用光

touch file{1..52000} 會顯示錯誤因為這樣寫等價于

touch file1 file2…file52000參數太長應該這樣寫

echo file{1..524288} |xargs touch

如果刪除

echo file{1..524288} |xargs rm

或者直接刪除目錄

shred -zv -n 6 hosts 用隨機數據填充空間然后反復覆蓋6次文件hosts

shred -zvu -n 6 hosts 填充完后刪除文件hosts

 

硬鏈接

ln f1 f2 為文件f1創建硬鏈接f2

文件夾不能創建硬鏈接

文件的初始鏈接數為1,文件夾初始鏈接數為2因為有當前/.這個鏈接

創建硬鏈接只能在同一磁盤分區,因為節點編號跨磁盤分區是不唯一的

硬鏈接的作用就是一個文件有幾個名字

 

軟鏈接

ln -s f1 f3 為文件f1創建軟鏈接f3

ln -s ../date/f2 /root/f2_link 這里的相對路徑是相對/root的路徑而不是當前目錄的路徑必須注意!

readlink 看軟鏈接指向原始文件

一般生產中部署軟件都用軟鏈接,方便部署,例如nginx-1.10升級到nginx-1.12可用以下方法:

ln -s nginx-1.10 nginx

rm -f nginx

ln -s nginx-1.12 nginx

 

軟,硬鏈接本質區別:

硬鏈接:同一個文件多個名字

軟鏈接:一個文件對應快捷方式,不同文件

1、鏈接數

2、跨分區

3、目錄

4、原始和鏈接文件關系

5、刪除

6、大小

 

6、file命令、標準輸入,標準輸出

 

file 查看文件類型

通過打開文件分析magic number來實現文件分析的

file -f filelist 列出文件filelist中文件名的文件類型

可用nano filelist在里面添加如/etc/hosts /data /bin/ls然后

file -f filelist 顯示3個文件類型信息

標準輸入和輸出

程序:指令+數據

讀入數據:Input

輸出數據:Output

打開的文件都有一個fd: file descriptor (文件描述符)

Linux給程序提供三種I/O設備

標準輸入(STDIN)-0 默認接受來自鍵盤的輸入

標準輸出(STDOUT)-1 默認輸出到終端窗口

標準錯誤(STDERR)-2 默認輸出到終端窗口

I/O重定向:改變默認位置

ll /proc/$$/fd

查看當前正在打開文件的文件描述符

exec 8<>/data/hosts

直接分配文件描述符8給hosts這個文件

cat /proc/$$/fd/8這時候等價于cat /data/hosts

刪除用exec 8>&_

ls > /dev/pts/5 輸出信息重定向到5號顯示窗口

ls > /data/ls.out 正確信息重定向到文件 隱含有1> (同時如果不存在/data/ls.out則創建文件)

cmd 2>/data/err.log 錯誤信息重定向到文件/data/err.log 不存在則建立文件一個>只覆蓋原內容,》是追

加新內容不覆蓋原內容

ls /error /data >f1 2>f2 正確信息重定向f1 錯誤信息重定向 f2

ls /error /data >all.log 2>&1 正確的錯誤的信息都定向到all.log (對順序敏感不能寫反)

另一種寫法

ls /error /data &>all.log

(ls;pwd)>all.log ls pwd 內容都重定向到all.log

hostname > /dev/null 重定向到黑洞~即沒有內容輸出

>bigfile 即空重定向bigfile即為空

》f1 這樣創建是追加模式更安全 創建文件推薦

特殊內容無法重定向

思考哪個命令效果與眾不同

A cmd > log 2>&1

B cmd 2>&1 > log

C cmd &> log

D cmd 2>log >&2

答案是B

STDOUT和STDERR可以被重定向到文件

命令 操作符號 文件名

支持的操作符號包括:

> 把STDOUT重定向到文件

2> 把STDERR重定向到文件

&> 把所有輸出重定向到文件

?> 文件內容會被覆蓋

set –C 禁止將內容覆蓋已有文件,但可追加

>| file 強制覆蓋

set +C 允許覆蓋

>> 原有內容基礎上,追加內容把輸出和錯誤重新定向到文件

2> 覆蓋重定向錯誤輸出數據流

2>> 追加重定向錯誤輸出數據流

標準輸出和錯誤輸出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合并標準輸出和錯誤輸出為同一個數據流進行重定向

&> 覆蓋重定向

&>> 追加重定向

COMMAND > /path/to/file.out 2>&1 (順序很重要)

COMMAND >> /path/to/file.out 2>&1

():合并多個程序的STDOUT

( cal 2007 ; cal 2008 ) > all.txt

(ls;pwd) > all.log

可以把不需要的信息直接重定向到/dev/null

ls > /dev/null 2>&1

hostname > /dev/null

又比如創建軟鏈接

ln -s all.log all_link

> all_link

這樣會導致原文件all.log內容被清空

標準輸入重定向 例如

cat < /etc/hosts

表示把/etc/hosts文件里的內容用輸入到cat

cat < f1 > f1 會清空文件f1

cat < f1 >> f1 會不斷循環復制f1的內容

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95922

(0)
MaxMax
上一篇 2018-04-14
下一篇 2018-04-14

相關推薦

  • Linux命令之alias

    語法,選項,參數

    Linux筆記 2018-07-22
  • 如何搭建CA(向CA申請證書)

    系統中搭建CA CA的配置文件 vim /etc/pki/tls/openssl.cnf 默認 CA_default? (可建多個) [ CA_default ] dir???????????? = /etc/pki/CA????? # Where everything is kept? CA的工作目錄 certs?????????? = $dir/cert…

    Linux筆記 2018-05-19
  • Linux-文件管理

    文件系統分層結構標準 http://www.pathname.com/fhs http://www.pathname.com/fhs/pub/fhs-2.3.pdf 包括 boot bin sbin etc lib64 tmp usr mnt media dev var home net misc srv proc sys root opt selinux …

    2018-03-30
  • Linux 用戶及權限管理(未完)

    1、查看(登錄)用戶名稱及所啟動的進程 A、使用w命令查看登錄用戶正在使用的進程信息 w命令用于顯示已經登錄系統的用戶的名稱,以及他們正在做的事。該命令所使用的信息來源于/var/run/utmp文件。w命令輸出的信息包括: 用戶名稱 用戶的機器名稱或tty號 遠程主機地址 用戶登錄系統的時間 空閑時間(作用不大) 附加到tty(終端)的進程所用的時間(JC…

    Linux筆記 2018-05-28
  • 網段劃分

    物理上在一個網段,邏輯上不在一個網段 則通訊必須經過路由器 只要不在一個網段就要經過路由器 路由表   由于有類地址之間跨度太大,不利于使用,現在生產環境中使用的是無類地址。 無類地址:網絡ID,主機ID不確定 CIDR:無類域間路由 無類域間路由表示法 IP/網絡ID位數   172.20.0.123 netmask:子網掩碼 32位二…

    Linux筆記 2018-07-02
  • liunx 基礎

    時間和日期:

    Linux筆記 2018-04-01
欧美性久久久久