Linux文件系統:
Linux: glibc
程序編譯方式:
動態鏈接
靜態編譯
進程的類型:
終端:硬件設備,關聯一個用戶接口
與終端相關:通過終端啓動
與終端無關:操作引導啓動過程當中自動啓動
操作系統的組成:
靜態:kernel,application
文件系統:層級結構
FHS:filesystem hierarchy standard文件系統層級結構標準
http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
/bin : 所有用戶可用的基本命令程序文件;
/sbin:供系統管理員使用的工具
/boot:引導加載器必須用到的各種靜態文件:kernel,initramfs(initrd),grub等
/dev : 存儲特殊文件或設備文件;
設備有兩種類型:字符設備(線性設備),塊設備(隨機設備);
/etc :系統程序的配置文件,只能爲靜態;
/home:普通用戶的家目錄的集中位置;一般每個普通用戶的家目錄默認爲此目錄下與用戶同名的子目錄,/home/username;
/root:管理員的家目錄:可選;
/lib :爲系統啓動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及內核提供內核模塊
libc.so.*:動態鏈接的c庫
ld*:運行時鏈接器/加載器;
modules:用於存儲內核模塊的目錄
/lib64:64位系統特有的存放64位共享庫的路徑;
/media:便攜式設備掛載點,cdrom,floppy等;
/mnt :其他文件系統的臨時掛載點;
/opt :附加應用程序的安裝位置;可選路徑;
/srv :當前主機爲服務提供的數據;
/tmp :爲那些會產生臨時文件的程序提供的用於存儲臨時文件的目錄;可供所有用戶執行寫入操作;有特殊權限;
/usr:usr hierarchy ,全局共享的只讀數據路徑;
bin,sbin
lib,lib64
include:c程序頭文件
share:命令手冊和自帶文檔的架構特有文件的存儲位置;
local:另一個層級結構;
X11R6:x-window程序的安裝位置
src:程序源碼文件的存儲位置;
/usr/local:讓系統管理員安裝本地應用程序;也通常用於安裝第三方程序;
/var :/var hierarchy , 存儲常發生變化的數據的目錄;
cache 應用緩存數據
lib 可變狀態信息
local / usr / local的可變數據
lock 鎖定文件
log 日誌文件和目錄
opt / opt的可變數據
run 與運行流程相關的數據
spool 應用假脫機數據
tmp 系統重新啓動之間保留的臨時文件
/proc :內核和進程存儲其相關信息:他們多爲內核參數,例如net.Ipv4.ip._forward,虛擬爲net/ipv4/ip_forward,存儲於/proc/sys/,因此其完整路徑爲/proc/sys/net/ipv4/ip_forward;虛擬文件系統;
/sys :sysfs 虛擬文件系統提供了一種比proc更爲理想的訪問內核數據的途徑;其主要作用在於爲管理Linux設備模型的接口;內核和系統信息虛擬文件系統
參考文檔:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html
Linux文件上的文件類型:
-:常規文件;即f;
d:directory ,目錄文件;
b:block device ,塊設備文件,支持以"block"爲單位進行隨機訪問;
c:character device ,字符設備文件,支持以"character"爲單位進行線性訪問;
major number :主設備號,用於標識設備類型,進而確定要加載的驅動程序;
minor number : 次設備號,用於標識同一類型中的不同的設備;
8位二進制:0-255
l:symbolic link,符號鏈接文件;
p:pipe,命令管道;
s:socket,套接字文件;
Linux基本命令:
命令類型:
外部命令
shell內嵌命令
區分內外部命令:
type commend
內部:bulitin
外部:顯示爲命令文件路徑;
注意:命令可以有別名;別名可以與原名相同,此時原名被隱藏;因此要獲取原命令,則使用\command;
命令別名:
alias :獲取所有可用別名的定義;
alias cmd :定義別名(注意:僅對當前shell進程有效);
unalias name:撤銷別名;
which:
顯示命令完整路徑;
whereis:
顯示二進制命令在何處,以及man手冊;
-b:只查看二進制程序路徑;
-m:只查看使用手冊文件路徑;
who:
查看登入到前端口的用戶;
-b:顯示系統最近一次啓動時間;
-r:運行級別;
-u:
w:
who 的增強版,還可顯示做什麼,例如:CPU資源佔用....;
bash的基礎特性1:history
歷史命令:shell 進程會其會話中保存此前用戶提交執行過的命令;
]# history
定製history的功能,可通過環境變量實現;
HISTSIZE:shell進程可保留的歷史的條數;
HISTFLIE:持久保存命令歷史文件;
.bash_history
HISTFILESIZE:命令歷史文件數;
命令用法:
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c:清空命令歷史;
-d offset:清除某條歷史命令;
-r:從文件讀取命令歷史至歷史列表中;
-w:把歷史列表中的命令追加至歷史文件中;
history # :顯示最近#條命令;
調用命令歷史列表中的命令:
!#:調用第#條命令執行;
!!:再一次執行上一條命令;
!SITRING:再一次執行命令歷史列表中最近一個以SIRING(開頭字母,從下往上檢索)開頭的命令;
注意:命令的重複執行有時候需要依賴於冪等性;
調用上一條命令的參數:
快捷鍵:esc+.
字符串:!$
控制命令歷史記錄的方式:
環境變量:HISTCONTROL
ignoredups:忽略重複的命令;
ignorespace:忽略以空白字符開頭的命令
ignoreboth:以上兩者同時生效;
修改變量的值:
NAME='VALUE'
總結:
FHS,命令及bash命令歷史
FHS:
/bin,/sbin,/lib,/lib64,/etc
/home,/root
/boot
/media,/mnt
/proc,/sys
/tmp
/srv 爲服務提供數據
/opt
/dev
/usr
/bin,/sbin,lib,lib64,share,local,include
/var
cache,lib,log,....
命令:which,whereis,who,w,alias,unalias
命令歷史:history
bash的基礎特性2: 命令/路徑補全
tab鍵
目錄管理類命令:mkdir,rmdir
mkdir: 創建目錄
-p:遞歸創建目錄
-v:顯示創建詳細過程
-m MODE:直接給定權限
rmdir: 移除空目錄
-p:只要目錄爲空就刪除,連續執行;(不提倡使用)
-v:顯示過程;
實踐:
如何創建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?
如何創建a_c,a_d,b_c,b_d;
創建目錄結構/tmp/mysysroot/
bin
sbin
etc
sysconfig
network-scripts
usr
bin
local
bin
etc
lib
lib64
var
cache
log
run
├── sysmyroot
│ ├── bin
│ ├── etc
│ │ └── sysconfig
│ │ └── network-scripts
│ ├── sbin
│ ├── usr
│ │ ├── bin
│ │ ├── lib
│ │ ├── lib64
│ │ └── local
│ │ ├── bin
│ │ └── etc
│ └── var
│ ├── cache
│ ├── log
│ └── run
bash的基礎特性3:命令行展開
~:自動展開爲用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,並能夠將其展開爲多項式;
例如: mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir -v {a,b}_{c,d}
mkdir -pv /tmp/sysmyroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,local/{bin,etc},lib,lib64},var/{cache,log,run}}
tree命令:
-L level : 指定要顯示的層級;
bash的基礎特性4: 命令的執行狀態結果
命令執行的狀態結果:
bash通過狀態返回值來輸出此結果;
成功:0
失敗:1-255
命令執行完成之後,其狀態返回值保存於 bash 的特殊變量$?中;
命令正常執行時,有的還會有命令返回值;
根據命令及功能不同,結果個不相同;
引用命令執行結果:
$(cmd)
`cmd
例如: -pv /tmp/$(date +%H-%M-%S)
bash的基本特性5:引用
強引用:''
弱引用:""
命令引用:``
bash的基礎特性6:快捷鍵
ctrl+a
ctrl+e
ctrl+u
ctrl+k
ctrl+l
文本查看命令:cat,tac,head,tail,more,less