Linux進階知識和命令

一.Linux目錄結構

目錄node

說明python

/lostlinux

found系統修復正則表達式

/binshell

二進制命令所在的目錄。express

/bootvim

系統引導程序所需的文件目錄。安裝系統分區的時候通常單獨要分一個boot分區,大小可謂128-256M,該分區數據增加神效centos

/devbash

(Device flies)設備軟件目錄,好比磁盤、光驅…..網絡

/etc

系統配置,啓動程序

/home

普通用戶的家,目錄默認數據存放目錄

/lib

啓動系統和運行命令所需的共享庫文件和內核模塊存放

/mnt

臨時掛載存儲設備的掛載點, u盤直接插入光驅沒法使用,要先掛載後使用

/opt

額外的應用軟件包

/proc

操做系統運行時,進程信息及內核信息(好比cpu、硬盤分區、內存信息等)存放在這裏。/proc目錄是虛擬文件系統的掛載點,proc並非真正的文件系統,它的定義能夠參見/etc/ fstab,系統運行不少信息都在這個目錄下。

/proc/loadavg

<==系統負載(系統繁忙程度)

/proc/memrino

<==系統內存信息

/proc/cpuinfo

<==系統cpu信息

/proc/mounts

  <==系統掛載信息。

/root

Linux超級用戶root的家目錄:root相似win32管理員administrator

/sbin

和管理系統相關的命令(超級管理員用)

/tmp

(Temporary files)臨時文件目錄, 這個目錄能夠被用做回收站使用

/usr

用戶或系統軟件應用程序目錄

/var

這個目錄的內容是常常變更的。是個用來存放系統日誌的目錄,系統日誌的路徑/var/log/messages; /var/lib用來存放一些庫文件

 

/etc系統初始化及設置相關重要文件

/etc/sysconfig/network-scripts/ifcfg-eth0  #網卡配置文件

/etc/resolv.conf                       #Linux系統DNS配置文件

/etc/sysconfig/network                 #CentOS-6主機名配置文件

/etc/hostname                          #CentOS-7主機名配置文件

/etc/syscconfig/i18n                   #CentOS-6字符集配置文件

/etc/locale.conf                       #CentOS-7字符集配置文件 

/etc/hosts                             #ip地址與域名快速解析的文件

/etc/fstab                             #配置開機設備自動掛載的文件

/etc/rc.local                          #存放開機自啓動程序命令的文件

/etc/inittab                           # centos7設定運行級別等配置的文件

/etc/systemd/system/default.target     #centos7設定運行級別等配置的文件

/usr/lib/systemd/system/runlevel*.target  #centos7運行級別

/etc/profile及/etc/bashrc             #配置系統的環境變量/別名等的文件

/etc/profile.d                         #用戶登陸後執行的腳本所在的目錄

/etc/issue和/etc/issue.net            #配置在用戶登陸終端前顯示信息的文件

/etc/init.d                            #軟件啓動程序所在的目錄

/etc/motd                              #配置用戶登陸系統以後顯示提示內容的文件

/etc/redhat-release                    #聲明RedHat版本號和名稱信息的文件

/etc/sysctl.conf                       #Linux內核參數設置文件

網卡配置文件詳解

systemctl   restart    network
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
UUID=30126a53-c912-4552-a7fe-af1925bd4d2f    #網卡uuid克隆虛擬機須要刪除。
HWADDR=00:0c:29:fe:f9:8a                     #mac地址,網卡惟一標識,克隆虛擬機要刪除。
NM_CONTROLLED=no                             #要不要被網絡管理器控制,選no
USERCTL=no                                   #USER ConTrol普通用戶是否能夠管理網卡,no
PEERDNS=yes                                  #要不要覆蓋/etc/resolv.conf文件(DNS客戶端文件)
IPV6INIT=no                                  #是否支持ipV6
DEVICE=eth0                                  #網卡設備的名字,eth0是第一塊。
ONBOOT=yes                                   #開機時,是否和系統一塊兒啓動
TYPE=Ethernet                                #以太網
BOOTPROTO=none                               #啓動協議.dhcp(動態主機配置協議).static/none(靜態ip)
IPADDR=10.0.0.200                            #IP地址
NETMASK=255.255.255.0                        #子網掩碼(也能夠是24)
GATEWAY=10.0.0.2                             #網關
DNS1=223.5.5.5                               #第一個DNS
DNS2=223.6.6.6                               #第二個DNS

配置DNS的配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0
配置方法:DNS1=xxx.xxx.xxx.xxx   DNS2=xxx.xxx.xxx.xxx
/etc/resolv.conf
配置方法:nameserver   xxx.xxx.xxx.xxx    nameserver   xxx.xxx.xxx.xxx

CentOS-7系統修改主機名

hostnamctl   set-hostname    新的主機名
修改配置文件/etc/hostname

修改字符集

echo $LANG #查看
export LANG=zh_CN.UTF-8 #臨時修改
localectl set-locale LANG=en_US.utf8 #需從新加載,永久生效
CentOS-6修改配置文件/etc/syscconfig/i18n
CentOS-7修改配置文件/etc/locale.conf
source    配置文件

運行級別

CentOS-6

runlevel #查看

#修改級別
init  級別   /  或者修改運行級別配置文件/etc/inittab 
0   關機狀態  (不要把運行級別永久設置爲0)
1   單用戶模式  root密碼忘記  故障 
2   多用戶模式  (不能使用NFS軟件)
3   徹底的多用戶模式  文本模式 命令行模式 
4   沒有使用 
5   桌面模式 X11 
6   重啓     (不要把運行級別永久設置爲0)

CentOS-7

systemctl   get-default  #查看
systemctl  set-default  #修改

別名與環境變量

#查看系統中已經定義的別名
alias      #alias  命令
#命令設置 (臨時生效,重啓系統以後失效)
alias  rm=' echo rm command bny'
#配置文件修改
vim   /etc/profile| /etc/bashrc (別名全部用戶可用)#國法 
vim   ~/.bashrc| ~/.bash_profile(別名當前用戶可用)#家規
#生效(永久生效)
source  配置文件名
#取消別名
unalias   有別名的命令
env #查看環境變量

#命令設置(臨時生效,重啓系統以後失效)
export  TEST=123   #環境變量統一大寫(普通變量隨意),名稱不要與系統中已經定義好的變量衝突
echo   $TEST #查看

#配置文件定義  
vim     /etc/profile(全部用戶可用)#國法 
vim     ~/.bash_profile(當前用戶可用)#家規
#生效(永久生效)
source   配置文件
#取消環境變量
unset   TEST
#對系統的小優化
cat >>/etc/profile.d/color.sh<<"EOF"
alias ll='ls -l --color=auto --time-style=long-iso'
PS1='\[\e[32;1m\][\u@\h \W]\$ \[\e[0m\]'
EOF
source  /etc/profile

/var目錄下的路徑知識

    /var/log              #記錄系統及軟件運行信息文件所在的目錄
    /var/log/messages     #系統級別日誌文件
    /var/log/secure       #用戶登陸信息日誌文件
    /var/log/dmesg        #記錄硬件信息加載狀況的日誌文件

/proc目錄下的重要路徑知識

    /proc/meminfo       #系統內存信息
    /proc/cpuinfo       #關於處理器的信息,如類型,廠家,型號,性能等
    /proc/loadavg       #系統負載信息,uptime的結果
    /proc/mounts        #已加載的文件系統的列表

/dev目錄下的路徑知識

    /dev/sd*                        #磁盤設備
    /dev/sr0或者/dev/cdrom         #光驅設備文件
    /dev/zero                      #寫0設備,做用:1.清空磁盤數據 2.產生空設備文件
    /dev/null                      #黑洞設備,做用:銷燬操做系統輸出信息使用

 

二.軟件安裝

yum  install  -y  tree  xxxx            #安裝軟件
yum  grouplist                      #查看已安裝的軟件包            
yum  groupinstall                       #安裝指定的軟件包
yum  provides                           #查詢命令屬於哪一個軟件包
yum  remove   sl   -y               #刪除一個軟件包
-ivh   rpm –ivh              #軟件包  
-e     rpm –e               #卸載軟件包 
-qa    rpm –qa              #查詢全部軟件包
-ql    rpm –ql               #查看軟件包裏的文件列表
-qf    rpm –qf              #查詢命令或文件屬於哪一個軟件包
-qc    rpm  -qc           #查詢軟件的主配置文件
#編譯安裝三部曲
./conflgure             #編譯參數選項
make                  #開始編譯
make install            #開始安裝

三.Linux文件類型

-rw-------. 1 root root 4434 May 30 13:58 ks.cfg
-rw-------. ①:文件類型與權限
1           ②:硬連接次數
root        ③:所屬用戶
root        ④:所屬組
4434        ⑤:文件大小
May30 13:58 ⑥⑦⑧:最新修改的時間與日期
ks.cfg      ⑨:文件或目錄名稱
Linux下擴展名只是方便用戶記憶,對文件類型不影響
.txt                    #文本文件
.log                    #日誌文件
.conf .cfg .configure .xml   #配置文件
.sh .bash               #shell腳本
.py                     #python腳本
ls -l 文件名 //看第一個字符
格式         說明
-           普通文件(文本, 二進制, 壓縮, 圖片, 日誌等) 
d           目錄文件
b           設備文件(塊設備)存儲設備硬盤 /dev/sda1, /dev/sda2
c               設備文件(字符設備)打印機,終端 /dev/tty1, /dev/zero
s               套接字文件, 進程間通訊(socket)
p           管道文件
l               連接文件

文件及目錄查找命令

file  [文件]     #查看普通文件類型
which   [命令] #顯示命令的全路徑
whereis  [命令]    #查看命令及其相關內容
做用:查找目錄下文件 
find /oldboy –maxdepth 1 –type f –name 「*.txt」 -size +1M
-maxdepth      #最大查找多少層,必定放在最前面,1是該目錄下一層
-type          #類型 f d l
-iname         #名字 (忽略大小寫)
-name          #名字 
-size +1M(大於1M)-100k(小於100k ) #根據大小查找文件 
-mtime +7(7天之前) -7(7天之內)     #根據時間查找文件
示例:
find /root/  -type f  -iname "*.txt" |xargs  cp -t /tmp/
cp   $(find /root/  -type f  -iname "*.txt")   /tmp/
find  /root/  -type f  -iname "*.txt" -exec cp {} /tmp/  \;
find  /root/  -type f  -iname "*.txt" | xargs -i  cp {} /tmp/
seq 10 >ett.txt
xargs -n5 <ett.txt
-n   分組
主要配合find命令使用

壓縮包管理

#建立壓縮包
[root@oldboy ~]# tar zcvf  /tmp/etc.tar.gz     /etc/
把/etc/打包壓縮 壓縮包放在/tmp/etc.tar.gz
tar 參數 zcvf
z 表示經過gzip軟件進行壓縮
c 表示建立壓縮包
v 表示顯示建立壓縮包和解壓的過程
f 表示指定壓縮包(f必定要放在這幾個參數的最後)
t 查看壓縮包內容
tar  tf   /tmp/etc.tar.gz
#解壓
x 表示解壓
解壓時進入到tmp 下 cd/tmp
tar  xf  /tmp/etc.tar.gz
/tmp/etc.tar.gz 解壓到 /opt 
tar  xf /tmp/etc.tar.gz  -C  /opt/

排除  --exclude
#壓縮文件
zip    test.zip   test.log

#壓縮目錄
zip  -r  test.zip    test
-q   #靜默模式

#解壓
unzip  test.zip

#解壓到指定目錄
unzip  -d     /opt scripts.zip

#解壓的其餘參數
-l   只看一下zip壓縮包中包含哪些文件,不進行解壓縮
-v   查看顯示的文件列表還包含壓縮比率
-t   檢查zip文件是否損壞

date 顯示與設置系統時間

date  顯示或設置系統時間
顯示日期以2018-09-30 顯示 
[root@oldboyedu /etc]# date +%F
2018-09-30
[root@oldboyedu /etc]# date +%Y-%m-%d 
2018-09-30
顯示日期,不顯示世紀
[root@oldboyedu /etc]# date +%y-%m-%d 
18-09-30
顯示時間以10:30:12 顯示
[root@oldboyedu /etc]# date +%T
10:30:12
[root@oldboyedu /etc]# date +%H:%M:%S
10:31:23
date +格式  
#%Y  year 
#%m  month 月 
#%d  day   日期
#%H  hour  小時 
#%M  minute 分鐘 
#%S  sec  秒 
#+%F  === %Y-%m-%d 2018-09-30
#+%T  === %H:%M:%S 
#+%w      周幾 (0週日)
date  參數
-d         根據你的描述顯示日期
-s       修改日期
#同步時間
ntpdate  ntp1.aliyun.com 

四.Linux系統角色

Linux 系統中,UID以以下的方式劃分:
0            表示管理員(root)
1 - 500      表示系統虛擬用戶
501 - 65535  表示普通用戶
不一樣的Linux發行版,這些數字可能不同

用戶及用戶組相關命令

useradd           添加用戶
-u                  給用戶指定UID
-s              指定用戶的shell命令解釋器
-M          表示不建立家目錄,建立虛擬用戶使用
-g          指定用戶組
-c              添加說明信息
passwd           設置密碼
--stdin      非交互式設置密碼
echo 123456 | passwd --stdin  用戶名
whoami            我是誰,顯示當前用戶
su              切換用戶
su -            切換用戶的時候更新環境變量
-c              切換到另外一個用戶,運行一個命令,   su - maple -c "pwd"
id                  查看用戶的uid,gid及歸屬的用戶組
userdel           刪除用戶,默認不刪除用戶的家目錄和郵箱
-r              刪除與用戶有關的全部信息
usermod           修改用戶信息
-s        修改用戶使用的shell 
-g        修改屬於的用戶組,主要組
-u        修改UID
-c        修改用戶說明
groupadd           建立用戶組
-g      指定用戶組並指定GID
groupdel           刪除用戶組,不能刪除還有用戶歸屬的主用戶組

        

文件的權限

列表的列定義以下:
[權限屬性信息] [鏈接數] [擁有者] [擁有者所屬用戶組] [大小] [最後修改時間] [文件名]
權限屬性列表爲10個字符:
    第一個字符表示文件類型,d爲目錄 -爲普通文件 l爲鏈接 b爲可存儲的接口設備 c爲鍵盤鼠標等輸入設備
    二、三、4個字符表示全部者權限,五、六、7個字符表示全部者同組用戶權限,八、9、10爲其餘用戶權限
    第二個字符表示全部者讀權限,若是有權限則爲r,沒有權限則爲-
    第三個字符表示全部者寫權限,若是有權限則爲w,沒有權限則爲-
    第四個字符表示全部者執行權限,若是有權限則爲x,沒有權限則爲-
    第五個字符表示全部者同組用戶讀權限,若是有權限則爲r,沒有權限則爲-
    第六個字符表示全部者同組用戶寫權限,若是有權限則爲w,沒有權限則爲-
    第七個字符表示全部者同組用戶執行權限,若是有權限則爲x,沒有權限則爲-
    第八個字符表示其餘非同組讀權限,若是有權限則爲r,沒有權限則爲-
    第九個字符表示其餘非同組寫權限,若是有權限則爲w,沒有權限則爲-
    第十個字符表示其餘非同組執行權限,若是有權限則爲x,沒有權限則爲-

文件的修改時間屬性

mtime    modify time    修改時間 (文件內容變化)
ctime    change time    屬性改變的時間(文件屬性;變化;大小;權限;inode;全部者用戶硬連接數量)
acime    access time    訪問時間(cat)
怎樣查看:
    stat命令

硬連接與軟鏈接

#硬連接用法
ln [原文件] [目標文件]
#硬連接
1.具備相同inode的不一樣文件名
2.刪除硬連接或者原文件之一,文件實體不會被刪除
3.刪除全部硬連接,數據會在被磁盤檢查或者新數據寫入時候刪除回收。
4.能夠給文件設置硬連接防止誤刪
5.經過ln [原文件] [目標文件]設置硬連接
6.經過rm –f 刪除硬連接
7.文件目錄不可建立硬連接,由於硬連接沒法跨區
#軟鏈接用法
ln –s [原文件] [目標文件]
#軟鏈接
1.    軟連接相似於快捷方式,存放原文件路徑,執行原文件
2.    刪除原文件,軟連接依然存在,可是失效
3.    執行ln –s [原文件] [目標文件]完成建立
4.    軟連接和原文件是不一樣類型文件,inode不一樣
5.    rm –f 刪除軟連接
6.    能夠建立目錄和文件的軟連接,便可以跨區
#硬連接與軟鏈接的區別
1.從定義:linux系統中,連接有兩種,一種被稱爲軟連接,相似於快捷方式,存放指向原文件inode的信息,與原文件inode不一樣。一種是硬連接,與原文件有相同的inode,能夠指向數據block。
2.從建立方式:硬連接命令 ln [原文件] [目標文件],軟連接命令ln –s  [原文件] [目標文件]
3.從建立對象:ln命令不能對目錄建立硬連接,可是能夠對目錄建立軟連接。由於軟連接能夠跨越文件系統,,硬連接則不能。對目錄和爲客戶建立的文件軟連接常常用到。
4.刪除軟連接文件,對硬連接和原文件無影響。
5.刪除文件硬連接,對原文件及軟連接文件無影響
6.刪除原文件,對硬連接讀取數據無影響,軟連接則失效。會出現紅底白字狀。
7.同時刪除原文件和硬連接,原文件纔會被真正刪除
8.不少硬件設備中的快照原理,相似於硬連接原理

五.Linux通配符與特殊符號

*
匹配任意(0個或多個)字符或字符串,包括空字符串
{}
生成序列
引用變量做爲變量與普通字符分隔
?
匹配任意1個字符,有且只有一個字符
[abcd]
匹配abcd中任何一個字符,abcd也但是其餘任意不連續字符
[a-z]
匹配a到z之間的任意一個字符, a到z表示範圍,字符先後要連續,-表示範圍的意思,也能夠用連續數字[1-9]
[!abcd]
同[^abcd],表示不匹配括號裏面的任何一個字符,也可爲[!a-d]
~    用戶的家目錄,超級用戶爲/root,普通用戶爲/home
-    表明上一次(相對於當前路徑)用戶所在的路徑
.    表明當前目錄(點號還有不少其它含義,暫且不表)
..    表明上一級目錄
''    單引號,所見即所得,即輸出單引號內容時會將單引號內的全部內容都原樣輸出,或者描述爲單引號裏面看到的是什麼就會輸出什麼,被稱之爲強引用。
""    雙引號,輸出雙引號內的全部內容時;若是內容中有命令(要反引下)、變量、特殊轉義符等,會先把變量、命令、轉義字符解析出結果,而後在輸出最終內容來,推薦使用,被稱爲弱引用。
``    反引號,通常用於引用命令,執行的時候命令會被執行,至關於$(),賦值和輸出都要將命令用``引發來。
空    賦值時,若是變量內容有空格會賦值不完整。而在輸出內容時,會將含有空格的字符串視爲一個總體輸出,若是內容中有命令(要反引下)、變量等,會先把變量、命令解析出結果,而後輸出最終內容,若是字符串中帶有空格等特殊字符,則有可能沒法完整的輸出,所以須要改加雙引號,通常連續的字符串、數字、路徑等能夠不加任何引號賦值和輸出,不過無引號的狀況最好用雙引號替代之,特別是變量賦值時。
#重定向符號
0          表示標準輸入(stdin),配合<或<<使用,數據流從右向左
1          表示標準輸出(stdout),配合>或>>使用,數據流從左向右
2          標準錯誤(stderr),配合>或>>使用,數據流從左向右
0<或<      標準輸入重定向,清空已有內容,數據從文件流向處理的命令
0<<或<<    追加輸入重定向,追加內容到底部,數據從文件流向處理命令
1>或>      標準輸出重定向,正常輸出重定向到文件,會清空已有內容
1>>或>>    標準輸出追加劇定向,將內容追加到文件底部,不清空已有內容
2>         錯誤輸出重定向,將標準錯誤內容重定向到文件,如文件存在內容則清空
2>>        錯誤輸出追加劇定向,將標準錯誤內容追加到文件底部,不會清空已有內容
;    表示一個命令的結束,也是命令間的分隔符
#    (1)表示是註釋內容,給管理員看的註釋部分,系統不會執行井號開頭的內容;(2)root用戶的命令提示符
|    表示管道,將一個命令處理後的內容輸出給下一個命令繼續處理
$    (1)字符串前加$符號,表明字符串變量內容;(2)普通用戶命令提示符
\    逃脫符,即將有特殊含義的字符還原成字符本意,例如\$僅表明美圓符
&    將程序放入後臺運行符,例如:/bin/sh /scripts/oldboy.sh &(後文會講)
#邏輯操做符號
&&    與,and
||     或,or
!      非,opppsite

六.正則表達式

POSIX規範將正則表達式分爲兩種:

基本正則表達式(BRE,basic regular expression);

擴展正則表達式(ERE,extended regular expression)——高級功能。

+    通常與[]進行配合 把各類連續的東西取出來
|     或
( )    一個總體 後向引用-sed
{ }    0{n,m}    前一個字符至少連續出現n次,最多連續出現了m次
?     前一個字符連續出現0次或1次
BRE:^ $ ^$  . * .* []  [^] \
ERE:+ | () {} ?
BRE:grep/sed/awk
ERE:egrep/grep -E/sed -r/awk
$
^$空行 cat -A    取出文件中的空行或包含#或只有空格的行
.(點)
\(撬棍)
[abc]
[^abc]
|(豎線)
()
#表示重複連續出現
+
*
a{n,m}
?
#查看資料
man sed/grep/awk
info grep/sed/awk
#轉義字符
轉義字符    意義    ASCII碼值(十進制)
\a    響鈴(BEL)    007
\b    退格(BS) ,將當前位置移到前一列    008
\f    換頁(FF),將當前位置移到下頁開頭    012
\n    換行(LF) ,將當前位置移到下一行開頭    010
\r    回車(CR) ,將當前位置移到本行開頭    013
\t    水平製表(HT) (跳到下一個TAB位置)    009
\v    垂直製表(VT)    011
\\    表明一個反斜線字符''\'    092
\'    表明一個單引號(撇號)字符    039
\"    表明一個雙引號字符    034
\0    空字符(NULL)    000
\ddd    1到3位八進制數所表明的任意字符    三位八進制
\xhh    1到2位十六進制所表明的任意字符    二位十六進制

七.Linux系統12位權限體系

rwx含義
read       可讀
write      可寫
execute    命令  or  腳本
rwx 權限位表示
r    read        讀           4
w    write        寫           2
x    execute        執行         1
-                 沒有權限     0
權限位計算
-rwxr-xr-x        755
-r-x------         500
-rw-------        600
-rw-r--r--        644
-rwxrwxrwx        777

644        rw-r--r--    
755        rwxr-xr-x
400        r--------
650        rw-r-x---
404        r-----r-- 
403        r------wx
#chmod命令
chmod:change mode,修改權限,-R 遞歸修改
#用戶的表示方法
u-user(文件的全部者-主人)
g--group(用戶屬於的組-家人)
o-others(其餘人 隔壁老王-陌生人)
#權限授予
+添加權限
-去掉某一個權限
=先去掉原有的權限,而後在賦予新的權限 chmod u=rx test.sh
#權限對應的數字
r---   4
w----  2
x----- 1
- ==== 0
#使用數字授予權限
rwxr-xr-x 755
chmod 755 test.sh
#chown命令
chown change own,修改屬主屬組,-R 遞歸修改
r 是否能查看文件內容 
w 是否能修改文件的內容,須要r權限配合 rw 
  只有w的時候vim強制修改文件內容,會致使源文件內容清空
x 是否能運行命令或腳本的權限,須要r權限配合
root 默認對文件rw權限,默認沒有執行權限
#linux系統默認權限控制命令umask
臨時:umask 022 #默認爲022
永久:修改/etc/profile文件
#chattr 授予隱藏屬性
授予文件或目錄隱藏的權限
a (append 只能追加) 若是設置了這個權限 只能追加 不能刪除 不能修改
i( immutable 無敵) 沒法修改 沒法刪除
#lsattr 查看隱藏屬性
查看當前目錄全部文件及目錄的隱藏屬性
相關文章
相關標籤/搜索