聲明:所有文章只作為學(xué)習(xí)筆記用,轉(zhuǎn)載非原創(chuàng)
很重要
https://www.cnblogs.com/aguncn/p/7000775.html?utm_source=itdadao&utm_medium=referral
https://www.cnblogs.com/liang-io/p/9825363.html
基礎(chǔ)命令
學(xué)會(huì)如何使用 man 命令去閱讀文檔。學(xué)會(huì)使用 apropos(適當(dāng)?shù)模?去查找文檔
命令行藝術(shù)
https://explainshell.com/
https://cloud.tencent.com/developer/article/1441454
幫助
--help
man -k
apropos 適當(dāng)?shù)?/p>
#命令運(yùn)行原理
用戶(hù)輸入命令,
bash利用空格切割獲得命令,
判斷命令是內(nèi)部或外部命令,
在$PATH中給定的目錄中從左向右尋找。Linux環(huán)境變量以:分割的。
shell的簡(jiǎn)單定義就是命令行解釋器,功能是將使用者的命令翻譯給核心處理
Linux 計(jì)算日期的時(shí)間是以 1970 年 1 月 1 日作為 1 不斷累加得到的時(shí)間
這是因?yàn)?,Linux 計(jì)算日期的時(shí)間是以 1970 年 1 月 1 日作為 1 不斷累加得到的時(shí)間,到 1971 年 1 月 1 日,則為 366 天。這里顯示 15775 天,也就是說(shuō),此 root 賬號(hào)在 1970 年 1 月 1 日之后的第 15775 天修改的 root 用戶(hù)密碼。
那么,到底 15775 代表的是哪一天呢?可以使用如下命令進(jìn)行換算:
[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年03月11日 星期一 00:00:00 CST
/etc/shadow
mysql:!!:18203::::::
date -d "1970-01-01 18203 days"
2019年 11月 03日 星期日 00:00:00 CST
https://cloud.tencent.com/developer/article/1445050
vim 自帶教程
vimtutor
怎樣記住命令 https://www.zhihu.com/question/21690166
常用的英文單詞
https://blog.csdn.net/s464036801/article/details/8219574
runlevel control directory rc.d 運(yùn)行級(jí)別
field separator 分隔符
* **GPL**(GNU 通用公共許可證,GNU General Public License)
* **Grep**(全局正則表達(dá)式及打印,Global Regular Expression and Print)
如 invoke 調(diào)用, locale 當(dāng)?shù)?,compatible兼容, configure,verbose冗長(zhǎng) ... etc
tx是發(fā)送(transport),rx是接收(receive)
信息摘要(Message Digest)
recursive 遞歸
reverse, 上下顛倒的意思
dereference 取消引用
negated 英[n??ɡe?t?d][](javascript:;)[](javascript:;) | 美[n??ɡe?t?d][](javascript:;)[](javascript:;) |
| v. | 取消; 使無(wú)效; 否定; 否認(rèn) |
probe 探測(cè)
Merge 合并,結(jié)合,并入; 相融; 融入; 漸漸消失在某物中;
orphaned 孤兒
Resume each 恢復(fù)
suspended 暫停的
bootstrap 引導(dǎo)程序
symbols 符號(hào)標(biāo)志
Selective Acknowledgment 選擇確認(rèn)
Referenced 被引用
Anonymous 匿名
Implementations 實(shí)做
omit 忽略
quotas 配額
--numeric-sort 數(shù)字
promiscuous 混雜
Thread Id 線(xiàn)程
periodically 定期的
Toggle 切換
control Group 控制組 --- cgroup
OOM killer(Out Of Memory killer)
\" double quote 雙引號(hào) (man printf)
\\ backslash 反斜杠
malloc的全稱(chēng)是memory allocation
SELinux(Security Enhanced Linux) 增強(qiáng)
IPC(Inter-Process Communication),進(jìn)程間通信
LWP(Light Weight Process)輕量級(jí)進(jìn)程
Extra Packages for Enterprise Linux (or EPEL)
resident set size 常駐內(nèi)存
Assembling 匯編、集合組合
GUI:Graphic User Interface
requisite 必要條件
頁(yè)目錄(page directory, PGD
wildcard 通配符
reaping 收割,回收
General-Purpose Registers 通用寄存器
Embedded 嵌入式 Linux Consulting 咨詢(xún)服務(wù)
圖形界面
GNOME (C,圖形庫(kù)gtk)
KDE (C++,圖形庫(kù)qt),下圖為CentOS6.10的KDE界面
XFCE (輕量級(jí)桌面)
PS: 如果用戶(hù)需要用到圖形處理小工具,需要查看圖形工具支持的圖形庫(kù),選擇對(duì)應(yīng)的GUI,否則小工具無(wú)法使用。
CLI:Command Line Interface(文本模式)
Extra Packages for Enterprise Linux (or EPEL) 簡(jiǎn)言之,EPEL是專(zhuān)門(mén)為RHEL、CentOS等Linux發(fā)行版提供額外rpm包的
https://www.cnblogs.com/f-ck-need-u/p/8494992.html
Emacs,著名的集成開(kāi)發(fā)環(huán)境和文本編輯器。
[https://www.cnblogs.com/33debug/p/6657519.html](https://www.cnblogs.com/33debug/p/6657519.html)
#shell 定義:
對(duì)于一般用戶(hù),我們不能直接使用操作系統(tǒng)(kernel)。而是通過(guò) kernel的“外殼”程序,也就是所謂的shell,來(lái)與kernel溝通。
從技術(shù)角度 , Shell的最簡(jiǎn)單定義 : 命 令 行 解 釋 器(command Interpreter)
主要包含:
a. 將使用者的命令翻譯給核心(kernel)處理。
b. 同時(shí),將核心的處理結(jié)果翻譯給使用者。
#父子
[https://jingyan.baidu.com/article/0eb457e5c9559203f1a90514.html](https://jingyan.baidu.com/article/0eb457e5c9559203f1a90514.html)
圖解快捷鍵
[https://blog.csdn.net/weixin_42256178/article/details/80392077?utm_source=distribute.pc_relevant.none-task]
#快捷鍵
[b]檢索[/b]
Ctrl+r: 快速檢索歷史命令。(r: retrieve 找回)
Ctrl+p: 上一個(gè)使用的歷史命令。 (p: previous)
Ctrl+n: 下一個(gè)使用的歷史命令。(n: next)
[b]移動(dòng)[/b]
Ctrl+a: 光標(biāo)回到命令行首。 (a: ahead)
Ctrl+e: 光標(biāo)回到命令行尾。 (e: end)
Ctrl+b: 光標(biāo)向行首移動(dòng)一個(gè)字符。 (b: backwards)
Ctrl+f: 光標(biāo)向行尾移動(dòng)一個(gè)字符。 (f: forwards)
Alt +f: 光標(biāo)向前移動(dòng)一個(gè)單詞。 (f: forwards)
Alt +b: 光標(biāo)向后移動(dòng)一個(gè)單詞。 (b: backwards)
[b]刪除[/b]
Ctrl+w: 刪除光標(biāo)處之前的詞。 (不包括光標(biāo)處字符)
Alt +d: 刪除光標(biāo)之后的詞。 (包括光標(biāo)處字符)
Ctrl+k: 刪除光標(biāo)處到行尾的字符。(包括光標(biāo)處字符)
Ctrl+u: 刪除光標(biāo)處到行首的字符。(不包括光標(biāo)處字符)
Ctrl+h: 向行首刪除一個(gè)字符。
Ctrl+d: 向行尾刪除一個(gè)字符。
[b]粘貼[/b]
Ctrl+y: 粘貼剛才所刪除的內(nèi)容。
[b]其他控制鍵[/b]
Tab 鍵: 命令、文件名等自動(dòng)補(bǔ)全功能。
Ctrl+t: 交換光標(biāo)所在字符和其前的字符。
Ctrl+i: 相當(dāng)于 Tab 鍵。
Ctrl+m: 相當(dāng) Enter 鍵。
Ctrl+o: 相當(dāng)于 Ctrl+m。
Ctrl+v: 插入特殊字符。例如:Ctrl+v+m(插入^M)
Ctrl+s: 掛起當(dāng)前 shell??梢允箍焖佥敵龅慕K端屏幕停下來(lái)。
Ctrl+q: 退出 Ctrl+s 狀態(tài)。
Ctrl+z: 使正在運(yùn)行在終端的任務(wù),運(yùn)行于后臺(tái)。 (可用 fg 恢復(fù))
Ctrl+c: 中斷終端中正在執(zhí)行的任務(wù)。
Ctrl+d: 退出終端。
#Shell特殊狀態(tài)變量
$? 獲取執(zhí)行上一個(gè)指令的執(zhí)行狀態(tài)返回值(0成功,非0為失?。?$$ 獲取當(dāng)前執(zhí)行Shell腳本的進(jìn)程號(hào)(PID)
$! 獲取上一個(gè)在后臺(tái)工作的進(jìn)程的進(jìn)程號(hào)(PID)
$_ 獲取在此之前執(zhí)行的命令或腳本的最后一個(gè)參數(shù)
bashrc
/etc/skel/.bashrc
[https://www.cnblogs.com/midworld/p/11006967.html](https://www.cnblogs.com/midworld/p/11006967.html)
#命令總結(jié)
[http://c.biancheng.net/view/5970.html](http://c.biancheng.net/view/5970.html)
[https://blog.csdn.net/qq_44740871/article/details/97420340](https://blog.csdn.net/qq_44740871/article/details/97420340)
[https://blog.51cto.com/11620628/2430428](https://blog.51cto.com/11620628/2430428)
以bash為例
解釋器優(yōu)先從bash自帶的命令也就是內(nèi)部命令(在內(nèi)存中)中找,找到了自然就直接執(zhí)行了,沒(méi)找到呢?就在外部命令中找,也就是磁盤(pán)中存在的可執(zhí)行程序或代碼,這里就存在一個(gè)優(yōu)先級(jí),我們知道內(nèi)存中是有一塊Cache的,這里面有從硬盤(pán)中緩存過(guò)來(lái)的數(shù)據(jù),我們使用過(guò)的命令自然也在其中,優(yōu)先從這里面找,找不到也不是就放棄了,直接去硬盤(pán)里面找,此時(shí)就通過(guò)PATH環(huán)境變量來(lái)找,PATH里存放的就是路徑可以看一下
# 十進(jìn)制轉(zhuǎn)十六進(jìn)制
printf "%x\n" 7906
#lsof
lsof +D /workshare/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 16398 root cwd DIR 253,0 4096 35813076 /workshare
tail 16476 root cwd DIR 253,0 4096 35813076 /workshare
tail 16476 root 3r REG 253,0 774 35813081 /workshare/test1.txt
13 . 列出所有的網(wǎng)絡(luò)連接
lsof -i
14. 列出所有tcp 網(wǎng)絡(luò)連接信息
lsof -i tcp
15. 列出所有udp網(wǎng)絡(luò)連接信息
lsof -i udp
16. 列出誰(shuí)在使用某個(gè)端口
lsof -i :3306
17. 列出誰(shuí)在使用某個(gè)特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
18. 列出某個(gè)用戶(hù)的所有活躍的網(wǎng)絡(luò)端口
lsof -a -u test -i
#命令基本意思
用 apropos -e 或 whatis 可以顯示 section 代號(hào):
man 1 ls
man 1p ls
[root@master locales]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
[root@master locales]# whatis ps
ps (1) - report a snapshot of the current processes.
ps (1p) - report process status
1. -h 通常意指 'h' + uman, 也就是 human-readable,能讓人類(lèi)方便讀的格式輸出, 比如 1.3 GB 格式, 而不是 1300000000 bytes, 代表者有: ls -lth, sort -h
2. -v (小寫(xiě)) 通常意指 'v' erbose, 代表者有: curl -v, ssh -v, python -v
2.1 -V (大寫(xiě)) 通常意指 ‘V’ ersion,與 --version 相比之下比較冷門(mén),代表者有: gedit -V, firefox -V, openvt -V
2.2 --version (小寫(xiě) v) 也是意指 ‘V’ ersion,代表者是九成的命令: python --version, konsole --version, gnome-shell --version, firefox --version, chromium-browser --version, bash --version, curl --version, tree --version, ls --version, journalctl --version, gedit --version, unp --version。 除了 java 和 javac 使用非 GNU 標(biāo)準(zhǔn)的 -version (少了一個(gè) '-')
2.3 --help, 同上, 九成的命令都有。不推薦 -h, 很多命令沒(méi)有 -h, 亦或已經(jīng)用來(lái)代表 'h'uman-readable。
3. -a 通常意指 'a'll, 全部文件的意思(因?yàn)殚_(kāi)頭 "." 命名的文件是默認(rèn)隱藏的如 vim 的 .swp 恢復(fù)文件, 歷史原因和后果請(qǐng)看此 https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp), 代表者有: ls -a, tree -a
4. -r 通常意指:
[a]. 'r' + everse, 上下顛倒的意思,代表者有: ls -lthr, sort -r
- 本人的 l alias 是 `ls -larthiF --context --color', 其中 t+r 排列最新更改日期的文件在最下方,畢竟大多數(shù)情況下,我只關(guān)心最近的文件。
[b]. 'r' + ecursive, 遞歸的意思,普遍用于遍歷目錄的子目錄,代表者有: grep -r, rm -r
[c]. 'R' 也可能意指 'R' ecursive , 代表者有:
[c.1] ls -R, chmod -R
[c.2] grep -R (--dereference- 'R' ecursive)
[d]. rm 和 cp 的 -r 和 -R 同樣是 recursive。切記有些平臺(tái)只有 -r, 有些平臺(tái)只有 -R, 有些平臺(tái)兩者都有。
5. --exclude-dir 排除某個(gè)目錄,代表: cloc . --exclude-dir=xxx, grep -rniI --exclude-dir=xxx abc ./* 。
5.1 "exclude" 是排除的意思,對(duì)立的就是 "include"。"dir" 是 "directory" 的縮寫(xiě),表示 "目錄"。Unix 傳統(tǒng)不使用 "folder" 這個(gè)英文表示目錄。
建議:
0. 學(xué)習(xí)命令選項(xiàng)不需要英文很好,manual 的英文簡(jiǎn)單,而且重復(fù)頻率很高, 如 invoke, locale,compatible, configure, ... etc 不像英文小說(shuō)每一段都有新詞囧。
1. 不僅僅是 man,當(dāng)不確定的時(shí)候,可以用 --help 快速一覽選項(xiàng)。切記 --help 不等同于 man, 有時(shí)需要兩個(gè)命令互補(bǔ)。也別忘了 info。要切記的是 man 本身有 section 分類(lèi) ,如圖所示, man 1 ls 和 man 1posix ls 可以瀏覽兩個(gè)不同的 manual, 用 apropos -e 或 whatis 可以顯示 section 代號(hào):
#管道
https://www.cnblogs.com/old-path-white-cloud/p/11685558.html
/proc 偽文件系統(tǒng) https://blog.csdn.net/qq_28357631/article/details/60764758
/proc 文件系統(tǒng)是一種內(nèi)核和內(nèi)核模塊用來(lái)向進(jìn)程(process)
簡(jiǎn)單來(lái)說(shuō):之所以把/proc文件系統(tǒng)稱(chēng)為虛擬,是因?yàn)槠浒奈募妥幽夸洸](méi)有存儲(chǔ)在磁盤(pán)上,而是由內(nèi)核在進(jìn)程訪(fǎng)問(wèn)此類(lèi)信息時(shí)候動(dòng)態(tài)創(chuàng)建而成的。
盡管/proc 中的文件是虛擬的,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳瘛痬ore’, ‘less’或’cat’這樣的程序來(lái)查看。當(dāng)編輯程序試圖打開(kāi)一個(gè)虛擬文件時(shí),這個(gè)文件就通過(guò)內(nèi)核中的信息被憑空地(on the fly) 創(chuàng)建了。
├1/ 關(guān)于進(jìn)程1的信息目錄。每個(gè)進(jìn)程在/proc 下一個(gè)名為其進(jìn)程號(hào)的目錄。
├cpuinfo 處理器信息,如類(lèi)型、制造商、型號(hào)和性能。
├devices 當(dāng)前運(yùn)行的核心配置的設(shè)備驅(qū)動(dòng)的列表。
├dma 顯示當(dāng)前使用的DMA通道。
├filesystems 核心配置的文件系統(tǒng)。
├interrupts 顯示使用的中斷,and how many of each there have been.
├ioports 當(dāng)前使用的I/O端口。
├kcore 系統(tǒng)物理內(nèi)存映象。與物理內(nèi)存大小一樣,但實(shí)際不占這么多內(nèi)存;
├kmsg 核心輸出的消息。也被送到syslog 。
├ksyms 核心符號(hào)表。
├loadavg 系統(tǒng)”平均負(fù)載”;3個(gè)沒(méi)意義的指示器指出系統(tǒng)當(dāng)前的工作量。
├m(xù)eminfo 存儲(chǔ)器使用信息,包括物理內(nèi)存和swap。
├m(xù)odules 當(dāng)前加載了哪些核心模塊。
├net 網(wǎng)絡(luò)協(xié)議狀態(tài)信息。
最主要的,就是local_address本地地址:端口、rem_address遠(yuǎn)程地址:端口、st連接狀態(tài)。
注1:文件中都是用的16進(jìn)制,所以HTTP的80端口記錄為0050。
注2:狀態(tài)碼對(duì)應(yīng)如下
00 "ERROR_STATUS",
01 "TCP_ESTABLISHED",
02 "TCP_SYN_SENT",
03 "TCP_SYN_RECV",
04 "TCP_FIN_WAIT1",
05 "TCP_FIN_WAIT2",
06 "TCP_TIME_WAIT",
07 "TCP_CLOSE",
08 "TCP_CLOSE_WAIT",
09 "TCP_LAST_ACK",
0A "TCP_LISTEN",
0B "TCP_CLOSING",
├self 到查看/proc 的程序的進(jìn)程目錄的符號(hào)連接。
├stat 系統(tǒng)的不同狀態(tài)
├uptime 系統(tǒng)啟動(dòng)的時(shí)間長(zhǎng)度。
└version 核心版本。
https://www.cnblogs.com/cfinder010/p/3143263.html
https://github.com/torvalds/linux/blob/v4.10/Documentation/networking/proc_net_tcp.txt
https://blog.csdn.net/whatday/article/details/100693051
查看
/proc/cpuinfo - CPU 的信息(型號(hào), 家族, 緩存大小等)
/proc/meminfo - 物理內(nèi)存、交換空間等的信息
/proc/mounts - 已加載的文件系統(tǒng)的列表
/proc/devices - 可用設(shè)備的列表
/proc/filesystems - 被支持的文件系統(tǒng)
/proc/modules - 已加載的模塊
/proc/version - 內(nèi)核版本
/proc/cmdline - 系統(tǒng)啟動(dòng)時(shí)輸入的內(nèi)核命令行參數(shù)
/proc/sys/vm/
/proc/net/dev
[shell腳本中使用getopts處理多命令行選項(xiàng)]https://blog.csdn.net/wdz306ling/article/details/79974377
https://blog.csdn.net/ouyang_peng/article/details/86493502
tail 與 head
[http://www.itdecent.cn/p/72ebecad9566](http://www.itdecent.cn/p/72ebecad9566)
head -n k和head -n +k 相同 (k是相同數(shù)字)
tail -n k和tail -n -k 相同
head -n -3 testfile (共10行)
1
2
3
4
5
6
7
head -n -3輸出7行(祛除后面三行),而tail -n +3輸出8行(從第三行開(kāi)始)。 頭正尾負(fù)
性能 進(jìn)程相關(guān)
https://www.cnblogs.com/zhuochong/p/10185707.html
java 常用的分析手段和邏輯
https://www.cnblogs.com/onmyway20xx/p/3668861.html
jstack
jmap
https://my.oschina.net/hosee/blog/906955
OOM killer(Out Of Memory killer)
1、UNIX options, which may be grouped and must be preceded by a dash.
??UNIX選項(xiàng),可以分組,并且必須以 '-' 開(kāi)頭。
??如 -A -e
2、BSD options, which may be grouped and must not be used with a dash.
?? BSD選項(xiàng),可以分組,不能和 '-' 一起使用。
??如 a
3、GNU long options, which are preceded by two dashes.
?? GNU長(zhǎng)選項(xiàng),前面有兩個(gè)'--'。
?? 如 --help
---ps -ef
UID //用戶(hù)ID、但輸出的是用戶(hù)名
PID //進(jìn)程的ID
PPID //父進(jìn)程ID
C //進(jìn)程占用CPU的百分比
STIME //進(jìn)程啟動(dòng)到現(xiàn)在的時(shí)間
TTY //該進(jìn)程在那個(gè)終端上運(yùn)行,若與終端無(wú)關(guān),則顯示? 若為pts/0等,則表示由網(wǎng)絡(luò)連接主機(jī)進(jìn)程。
CMD //命令的名稱(chēng)和參數(shù)
---ps aux
同ps -ef 不同的有列有
USER //用戶(hù)名
%CPU //進(jìn)程占用的CPU百分比
%MEM //占用內(nèi)存的百分比
VSZ //該進(jìn)程使用的虛擬內(nèi)存量(KB)
RSS //該進(jìn)程占用的固定內(nèi)存量(KB)(駐留中頁(yè)的數(shù)量)
STAT //進(jìn)程的狀態(tài)
START //該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間
TIME //該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間
其中STAT狀態(tài)位常見(jiàn)的狀態(tài)字符有
D //無(wú)法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程);
R //正在運(yùn)行可中在隊(duì)列中可過(guò)行的;
S //處于休眠狀態(tài);
T //停止或被追蹤;
W //進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開(kāi)始無(wú)效);
X //死掉的進(jìn)程 (基本很少見(jiàn));
Z //僵尸進(jìn)程;
< //優(yōu)先級(jí)高的進(jìn)程
N //優(yōu)先級(jí)較低的進(jìn)程
L //有些頁(yè)被鎖進(jìn)內(nèi)存;
s //進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);
l //多線(xiàn)程,克隆線(xiàn)程(使用 CLONE_THREAD, 類(lèi)似 NPTL pthreads);
+ //位于后臺(tái)的進(jìn)程組;
其它常用組合
ps -eFh
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
#top
[https://www.zhangshengrong.com/p/8AaY3v53X2/](https://www.zhangshengrong.com/p/8AaY3v53X2/)
-H 顯示線(xiàn)程 -p 指定pid
-H 線(xiàn)程模式,示例:top -H -p `pidof mysqld`
選項(xiàng):
-d # 指定刷新時(shí)間間隔,默認(rèn)為3秒
-b 全部顯示所有進(jìn)程
-n # 刷新多少次后退出
-H 線(xiàn)程模式,示例:top -H -p `pidof mysqld`、
查看watch 用法
watch more /proc/net/dev
郵件服務(wù) 理解
簡(jiǎn)單郵件傳輸協(xié)議(Simple Mail Transfer Protocol,SMTP):用于發(fā)送和中轉(zhuǎn)發(fā)出的電子郵件,占用服務(wù)器的25/TCP端口。
郵局協(xié)議版本3(Post Office Protocol 3):用于將電子郵件存儲(chǔ)到本地主機(jī),占用服務(wù)器的110/TCP端口。
Internet消息訪(fǎng)問(wèn)協(xié)議版本4(Internet Message Access Protocol 4):用于在本地主機(jī)上訪(fǎng)問(wèn)郵件,占用服務(wù)器的143/TCP端口。