聲明:所有文章只作為學(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)行原理
用戶輸入命令,
bash利用空格切割獲得命令,
判斷命令是內(nèi)部或外部命令或粮,
在$PATH中給定的目錄中從左向右尋找器虾。Linux環(huán)境變量以:分割的。
shell的簡(jiǎn)單定義就是命令行解釋器,功能是將使用者的命令翻譯給核心處理
Linux 計(jì)算日期的時(shí)間是以 1970 年 1 月 1 日作為 1 不斷累加得到的時(shí)間
這是因?yàn)榻娇眩琇inux 計(jì)算日期的時(shí)間是以 1970 年 1 月 1 日作為 1 不斷累加得到的時(shí)間炕置,到 1971 年 1 月 1 日,則為 366 天男韧。這里顯示 15775 天朴摊,也就是說,此 root 賬號(hào)在 1970 年 1 月 1 日之后的第 15775 天修改的 root 用戶密碼此虑。
那么甚纲,到底 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ù)兀琧ompatible兼容, 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. | 取消; 使無效; 否定; 否認(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 線程
periodically 定期的
Toggle 切換
control Group 控制組 --- cgroup
OOM killer(Out Of Memory killer)
\" double quote 雙引號(hào) (man printf)
\\ backslash 反斜杠
malloc的全稱是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 咨詢服務(wù)
圖形界面
GNOME (C,圖形庫(kù)gtk)
KDE (C++,圖形庫(kù)qt),下圖為CentOS6.10的KDE界面
XFCE (輕量級(jí)桌面)
PS: 如果用戶需要用到圖形處理小工具莫其,需要查看圖形工具支持的圖形庫(kù)癞尚,選擇對(duì)應(yīng)的GUI,否則小工具無法使用乱陡。
CLI:Command Line Interface(文本模式)
Extra Packages for Enterprise Linux (or EPEL) 簡(jiǎn)言之浇揩,EPEL是專門為RHEL、CentOS等Linux發(fā)行版提供額外rpm包的
https://www.cnblogs.com/f-ck-need-u/p/8494992.html
Emacs憨颠,著名的集成開發(fā)環(huán)境和文本編輯器胳徽。
[https://www.cnblogs.com/33debug/p/6657519.html](https://www.cnblogs.com/33debug/p/6657519.html)
#shell 定義:
對(duì)于一般用戶,我們不能直接使用操作系統(tǒng)(kernel)爽彤。而是通過 kernel的“外殼”程序养盗,也就是所謂的shell,來與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热幔±稚瑁可以使快速輸出的終端屏幕停下來。
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í)行了窗价,沒找到呢如庭?就在外部命令中找叹卷,也就是磁盤中存在的可執(zhí)行程序或代碼撼港,這里就存在一個(gè)優(yōu)先級(jí)坪它,我們知道內(nèi)存中是有一塊Cache的,這里面有從硬盤中緩存過來的數(shù)據(jù)帝牡,我們使用過的命令自然也在其中往毡,優(yōu)先從這里面找,找不到也不是就放棄了靶溜,直接去硬盤里面找开瞭,此時(shí)就通過PATH環(huán)境變量來找,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. 列出誰在使用某個(gè)端口
lsof -i :3306
17. 列出誰在使用某個(gè)特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
18. 列出某個(gè)用戶的所有活躍的網(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罩息,能讓人類方便讀的格式輸出嗤详, 比如 1.3 GB 格式, 而不是 1300000000 bytes, 代表者有: ls -lth, sort -h
2. -v (小寫) 通常意指 'v' erbose, 代表者有: curl -v, ssh -v, python -v
2.1 -V (大寫) 通常意指 ‘V’ ersion,與 --version 相比之下比較冷門瓷炮,代表者有: gedit -V, firefox -V, openvt -V
2.2 --version (小寫 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, 很多命令沒有 -h翔忽, 亦或已經(jīng)用來代表 'h'uman-readable。
3. -a 通常意指 'a'll赫段, 全部文件的意思(因?yàn)殚_頭 "." 命名的文件是默認(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" 的縮寫,表示 "目錄"非迹。Unix 傳統(tǒng)不使用 "folder" 這個(gè)英文表示目錄环鲤。
建議:
0. 學(xué)習(xí)命令選項(xiàng)不需要英文很好,manual 的英文簡(jiǎn)單憎兽,而且重復(fù)頻率很高, 如 invoke, locale冷离,compatible, configure, ... etc 不像英文小說每一段都有新詞囧。
1. 不僅僅是 man纯命,當(dāng)不確定的時(shí)候西剥,可以用 --help 快速一覽選項(xiàng)。切記 --help 不等同于 man亿汞, 有時(shí)需要兩個(gè)命令互補(bǔ)蔫耽。也別忘了 info。要切記的是 man 本身有 section 分類 留夜,如圖所示匙铡, 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)核模塊用來向進(jìn)程(process)
簡(jiǎn)單來說:之所以把/proc文件系統(tǒng)稱為虛擬碍粥,是因?yàn)槠浒奈募妥幽夸洸]有存儲(chǔ)在磁盤上鳖眼,而是由內(nèi)核在進(jìn)程訪問此類信息時(shí)候動(dòng)態(tài)創(chuàng)建而成的。
盡管/proc 中的文件是虛擬的嚼摩,但它們?nèi)钥梢允褂萌魏挝募庉嬈骰蛳瘛痬ore’, ‘less’或’cat’這樣的程序來查看钦讳。當(dāng)編輯程序試圖打開一個(gè)虛擬文件時(shí),這個(gè)文件就通過內(nèi)核中的信息被憑空地(on the fly) 創(chuàng)建了枕面。
├1/ 關(guān)于進(jìn)程1的信息目錄愿卒。每個(gè)進(jìn)程在/proc 下一個(gè)名為其進(jìn)程號(hào)的目錄。
├cpuinfo 處理器信息潮秘,如類型琼开、制造商、型號(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è)沒意義的指示器指出系統(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.reibang.com/p/72ebecad9566](http://www.reibang.com/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行(從第三行開始)。 頭正尾負(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)妨马,可以分組,并且必須以 '-' 開頭杀赢。
??如 -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 //用戶ID、但輸出的是用戶名
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)行绊困,若與終端無關(guān)文搂,則顯示? 若為pts/0等,則表示由網(wǎng)絡(luò)連接主機(jī)進(jìn)程秤朗。
CMD //命令的名稱和參數(shù)
---ps aux
同ps -ef 不同的有列有
USER //用戶名
%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)位常見的狀態(tài)字符有
D //無法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程)煤蹭;
R //正在運(yùn)行可中在隊(duì)列中可過行的;
S //處于休眠狀態(tài);
T //停止或被追蹤硝皂;
W //進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開始無效)常挚;
X //死掉的進(jì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 //多線程贝或,克隆線程(使用 CLONE_THREAD, 類似 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 顯示線程 -p 指定pid
-H 線程模式咪奖,示例:top -H -p `pidof mysqld`
選項(xiàng):
-d # 指定刷新時(shí)間間隔盗忱,默認(rèn)為3秒
-b 全部顯示所有進(jìn)程
-n # 刷新多少次后退出
-H 線程模式,示例: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消息訪問協(xié)議版本4(Internet Message Access Protocol 4):用于在本地主機(jī)上訪問郵件靡挥,占用服務(wù)器的143/TCP端口汤纸。