1. 程式人生 > >《Linux學習筆記——整理自馬哥Linux運維》_待完成

《Linux學習筆記——整理自馬哥Linux運維》_待完成

ls
	-l:長格式
		-:普通檔案(f)
		d:目錄檔案
		b:塊裝置檔案(block)
		c:字元裝置檔案(character)
		l:符號連結檔案(symbolic link file)
		p:命令管道(pipe)
		s:套接字檔案(socket)

		檔案許可權:9位,每3位一組,每組:rwx讀寫執行,沒有許可權就用-表示

		檔案硬連結的次數
		檔案屬主(owner)
		檔案的屬組(group)
		檔案大小(size),預設單位是位元組
		時間戳(timestamp),最近一次被修改的時間
			訪問:access
			修改:modify。檔案內容發生改變。
			改變:change。metadata,元資料,檔案屬性。

	-h:human readable,做單位轉換
	-a:顯示以.開頭的隱藏檔案
		.當前目錄
		..當前目錄的上一級目錄
	-A:顯示所有檔案,但不顯示.和..
	-d:顯示目錄自身屬性
	
	-i:索引節點號
		index node, inode
	-r:逆序顯示
	-R:遞迴(recursive)顯示
	
cd:change directory
	不加引數,回到家目錄,home directory
	cd ~USERNAME:進入指定使用者的家目錄
	cd -:在當前目錄和前一次所在目錄之前來回切換

命令型別:
	內建命令(shell內建)
	外部命令:在檔案系統的某個路徑下有一個與命令名稱相應的可執行檔案
	
環境變數:命名的記憶體空間
	變數賦值
	path:使用冒號分割的路徑
	o(1):衡量程式執行效率的標準,無論佇列多長,執行效率一樣
	
	
type:顯示指定屬於哪種型別
date:時間管理
Linux:rtc,real time clock
	硬體時鐘
	系統時鐘
	
ntp:網路時間協議

獲得命令的使用幫助:
內部命令:
	help COMMAND
外部命令:
	COMMAND --help
命令手冊:manual
man COMMAND:一般對外部命令
whatis COMMAND:檢視命令所在章節
分章節:常見章節有8個
	1.使用者命令(/bin, /usr/bin, /usr/local/bin)
	2.系統呼叫
	3.庫使用者
	4.特殊檔案(裝置檔案)
	5.檔案格式(配置檔案的語法)
	6.遊戲
	7.雜項:miscellaneous
	8.管理命令(/sbin, /usr/sbin, /usr/local/sbin)

<>:必須給定內容
[]:可省略
|:多選一
{}:分組,沒有特殊意義

man:
	name:命令名稱及功能簡要說明
	synopsis:用法說明,包括可用選項
	description:命令功能的詳盡說明,可能高包括每一個選項的意義
	options:說明每一個選項的意義
	files:此命令相關的配置檔案
	bugs:
	examples:使用示例
	see also:另外參照
翻屏:
	向後翻屏:space
	向前翻屏:b
	向下翻行:enter
	向上翻行:k
	
查詢:
	/keyword:自前向後
	?keyword:自後向前
	n:下一個
	N:前一個
	根據/和?的n N方向不一樣
	q:退出

hwclock -w把系統時間寫入硬體時間
hwclock -s把硬體時間寫入系統時間

線上文件:
info COMMAND
文件 /usr/share/doc

cal:calender日曆

echo預設列印換行符
printf預設不列印換行符

file命令及其用法:

Windows:PE可移植檔案
Linux:ELF可執行可連線檔案

檔案系統:
rootfs:根檔案系統,對於每個檔案,都只能從根檔案系統訪問。

FHS:檔案系統層級標準
	/boot:系統啟動相關檔案,如核心、initrd、以及grub(bootloader)
	/dev:裝置檔案
			塊裝置:隨機裝置,可以實現隨機訪問的裝置,資料塊
			字元裝置:線性裝置,可以實現線性訪問的裝置,按字元為單位
			裝置號:主裝置號(major)和次和裝置號(minor)
	/etc:配置檔案
	/home:使用者的家目錄,每一個使用者的家目錄通常預設為/home/USERNAME
	/root:管理員的家目錄
	/lib:庫檔案
		靜態庫:.a
		動態庫:.dll,.so(shared object)
		核心模組檔案(/lib/modules)
	/media:掛載點目錄,移動裝置
	/mnt:掛載點目錄,額外的臨時檔案系統
	/misc:雜項
	/opt:可選目錄,第三方程式的安裝目錄
	/proc:偽檔案系統,核心對映檔案
	/sys:偽檔案系統,跟硬體裝置相關的屬性對映檔案,如硬碟
	/tmp:臨時檔案
	/var:可變化的檔案
	/bin:可執行檔案,使用者命令
	/sbin:管理命令
	
	/usr:universal shared read-only
		/usr/bin
		/usr/sbin
		/usr/lib
		
		/usr/local:第三方程式的安裝目錄
			/usr/local/bin
			/usr/local/sbin
			/usr/local/lib
命名規則:
	1.長度不能超過255個字元
	2.不能使用/當檔名
	3.嚴格區分大小寫
	
相對路徑:
絕對路徑:

檔案管理
	
目錄管理
	ls
	cd
	pwd
	mkdir:建立空目錄,路徑的最後一個節點才是我們要建立的目錄
		-p:自動建立
		-v:verbose詳細資訊
		mkdir -pv /mnt/test/{x/m,y}
	命令列展開:
		{a,b}_{c,d} 可以建立a_c,a_d,b_c,b_d
		就像(a+b)*(c+d)
		
	rmdir(remove directory):刪除空目錄(只能刪除空目錄)
		-p:自動刪除父目錄
	tree:檢視目錄樹
	檔案的建立和刪除
		touch:可用來建立檔案,但主要目的是為了修改時間戳的
			-c:不建立檔案
			-a:修改訪問時間
			-m:修改修改時間
			-t:指定時間
		建立檔案可以使用檔案編輯器
			nano:
		rm:刪除檔案
			-i:給提示
			-f:強行刪除
			-r:遞迴刪除
	複製和移動檔案
	cp:copy
		SRC DEST
		一個檔案到一個檔案
		多個檔案到一個目錄
		不允許多個檔案複製到一個檔案
		不允許一個檔案同時複製多份
		目標是一個目錄,將儲存原始檔的名字
		目標是一個檔案,將儲存為該檔案的名字
		如果源是多個,目標一定是目錄
		預設情況下不復制目錄
		-r/-R 遞迴複製一個目錄
		-p:複製後的檔案保留原始檔的屬組,屬主
		-a:保留原始檔的所有屬性,歸檔複製,常用於備份
		複製連結,預設複製連結連結的原始檔
		-P:保持連結檔案
		-i:
		
	mv SRC DEST
		-f:強制目錄存在
		-t:目標,再寫源
	install:複製檔案指定屬性
		-d:建立目錄,-d DIRECTORY...
		SRC DEST:複製檔案,預設複製過去是有執行許可權的
		-m:指定許可權
		-t:指定目標,再指定源
		源只能是檔案
		
	stat:顯示檔案或檔案系統的狀態資訊
	
發行版:
	Fedora, Redhat(Centos), SUSE, Debian(Ubuntu, Mint), Gentoo, LFS(Linux From Scratch)

對系統的操作一般是對其配置檔案進行修改
文字處理:cat, more, less, head, tail, cut, sort, uniq, grep

檢視文字:
	cat、tac、more、less、head、tail
	
	cat:連結並顯示
		-n:顯示行號
		-E:顯示行結束符
		
	tac:反向顯示
	
	分屏顯示:
	more:回車一行一行翻,b一屏翻,缺點:翻到最後就直接退出了
	less:到最後不會直接退出,按q才退出
	
	head:檢視檔案的前n行
	tail:檢視檔案的後n行,預設十行
		-f:檢視檔案尾部,不退出,等待顯示後續追加至此檔案的新內容
	
文字處理:
	cut,join,sed,awk
	
	cut:
		-d:指定分隔符,預設空格
		-f:指定要顯示的欄位,
			-f 1,3
			-f 1-3
	文字排序:
		sort:預設按位的ascii排序,升序
			-n:數值排序
			-r:降序
			-t:欄位分隔符
			-k:以哪個欄位為關鍵字排序
			-u:相同的行只顯示一次
			-f:不區分大小寫
		在sort和uniq中,只有相鄰且相同的行才被認為相同的行,不相鄰但相同,被認為不同行
		uniq:
			-c:顯示某行重複的次數
			-d:只顯示重複的行
	文字統計:wc(word count
		wc:
			-l:只顯示行數
			-c:位元組數
			-m:字元數
			-L:最長的一行包含的字元數
	字元處理命令:
		tr:轉換或刪除字元
			tr charset1 charset2
			無法指定檔案,需要進行輸入重定向
			替換大寫:
				tr 'a-z' 'A-Z'
			-d:刪除出現在字符集中的所有字元
bash及其特性:
	shell:外殼
	GUI:Gnome,KDE,Xfce
	CLI:sh,csh,ksh,bash,tcsh,ksh,zsh
linux允許一個使用者登入多次,shell都是獨立的
程序:在每個程序看來,當前主機上只存在核心和當前程序
程序是程式的副本,程序是程式執行的例項


使用者工作環境:
bash:
	#
	$
	1.命令歷史,命令補全
	2.管道、重定向
	3.命令別名
	4.命令列編輯
	5.命令列展開
	6.檔名通配
	7.變數
	8.程式設計
	
	命令列編輯:
		命令游標跳轉:
			ctrl+a:到行首
			ctrl+e:當行尾
			ctrl+d:
			ctrl+u:刪除游標至行首的內容
			ctrl+k:刪除游標至行尾的內容
			ctrl+l:清屏
	命令歷史:
		history:檢視命令歷史
			-c:清空命令歷史
			-d:刪除指定位置的命令
				-d 510 3:從510行刪去三個命令
			-w:儲存命令歷史至歷史檔案,在使用者的家目錄的.bash_history隱藏檔案中
		
		使用技巧:
			!n:執行命令歷史中第n條命令
			!-n:執行命令歷史中的倒數第n條命令
			!!:執行上一條命令
			!string:執行命令歷史中以指定字串開頭的命令
			!$:引用前一個命令的最後一個引數
			esc,.:效果同上
			alt+.:效果同上,遠端終端不支援
	命令補全:
		前提:path環境變數配置正常,唯一標識命令,若不唯一,可以雙敲tab鍵顯示所有該字串開頭的命令
		
		路徑補全:和命令補全相似,但補全機制不一樣
		
	命令別名:
		alias CMDALIAS='COMMAND [options] [arguments]'
		若命令中間有空格,要用引號
		命令別名只在當前的shell的生命週期有效
		若要永久有效,需要寫入bash的配置檔案
		撤銷別名:
			unalias CMDALIAS
		使用命令本身,\COMMAND
	命令替換:$(COMMAND) 反引號`COMMAND`,反引號是波浪號底下的
		把命令中某個子命令替換為其執行結果的過程
		cmd1 [] [] $(cmd2)
		touch /file$(date +%F-%H-%M-%S)
	bash支援的引號:
	``:命令替換
	"":弱引用,可以實現變數替換
	'':強引用,不完成變數替換

	檔名通配:globbing
	*:匹配任意長度的任意字元
	?:匹配任意單個字元
	[]:匹配指定範圍內的任意單個字元
		[abc],[a-m],[a-zA-Z],[0-9]
	[^]:匹配指定範圍外的任意單個字元
	[:space:]:空白字元
	[:punct:]:標點符號
	[:lower:]:小寫字母
	[:upper:]:大寫字母
	[:alpha:]:大小寫字母
	[:digit:]:數字
	[:alnum:]:數字和大小寫字母
	
	

	環境變數:
		path:命令搜尋路徑
		HISTSIZE:命令歷史大小,預設是1000條
	
			
		
shell:
	子shell,可以用pstree檢視
	退出當前shell:exit
	父子之間不一定有關聯關係
	
控制訊號:
	ctrl+c
	shift+pageup/down:翻屏

執行程式
裝置管理
軟體管理
程序管理
網路管理

使用者、組、許可權
安全上下文(secure context)
許可權:
	r,w,x
	檔案:
		r:可讀,可以使用類似cat等命令檢視檔案
		w:可寫,可以編輯或刪除此檔案
		x:可執行,exacutable,可以再命令提示符下當作命令提交給核心執行
	目錄:
		r:可以對此目執行ls以列出內部的所有檔案
		w:可以在此目錄建立檔案
		x:可以使用cd切換進此目錄,也可以使用ls -l檢視內部檔案的詳細資訊
	rwx:
		r--:只讀
		r-x:讀和執行
		---:無許可權
	0 000,---:無許可權
	1 001,--x:執行
	2 010,-w-:寫
	3 011,-wx:寫和執行
	4 100,r--:只讀
	5 101,r-x:讀執行
	6 110,rw-:讀寫
	7 111,rwx:讀寫執行

使用者:uid, /etc/passwd
組:gid, /etc/group

影子口令: /etc/shadow
組: /etc/gshadow

使用者類別:
	管理員:uid:0
	普通使用者:uid:1-65535
		系統使用者:uid:1-499,不允許登入
		一般使用者:uid:500-60000
使用者組類別:
	基本組:使用者的預設組
	附加組:額外組,預設組以外的其他組
	私有組(建立使用者時,如果沒有為其指定所屬的組,系統會建立一個與使用者名稱同名的組,為私有組)
	管理員組:
	普通組:
		系統組:
		一般組:


account:登入名
password:密碼
uid:使用者id
gid:基本組id
comment:註釋
home dir:使用者家目錄
shell:使用者的預設shell



/etc/shadow
	account:登入名
	encrypted password:加密的密碼
	使用者名稱;密碼;最近一次修改密碼的時間;最短使用期限;最長使用期限;警告時間;非活動時間;過期時間

加密方法:
	對稱加密:加密和解密使用同一個密碼
	公鑰加密:每個密碼都成對出現,一個為私鑰(secret key),一個為公鑰(public key)
	單向加密:雜湊加密,提取資料特徵碼
		1.雪崩效應:初始條件的微小變化,會引起結果的巨大改變
		2.定長輸出:
			md5:Message Digest,128位定長輸出
			sha1:Secure Hash Algorithm,160位定長輸出

使用者管理:
	useradd USERNAME
	groupadd GRPNAME
	useradd, userdel, usermod, passwd, chsh, finger, id, chage
	
		useradd [options] USERNAME
			-u uid 
			-g gid(基本組)
			-G GID...(額外組)
			-c "COMMENT"
			-d /path/to/somewhere
			-s /etc/shells/???
				/etc/shells:指定了當前系統可用的安全shell
			-m -k
環境變數:
	PATH
	HISTSIZE
	SHELL
組管理:
	groupadd, groupdel, groupmod, gpasswd
許可權管理:
	chown, chgrp, chmod, umask

解析:名稱解析