SHELL 总结 命令的使用 基本快捷键 性能命令等

声明:所有文章只作为学习笔记用,转载非原创

很重要

https://www.cnblogs.com/aguncn/p/7000775.html?utm_source=itdadao&utm_medium=referral

https://www.cnblogs.com/liang-io/p/9825363.html
基础命令
学会如何使用 man 命令去阅读文档。学会使用 apropos(适当的) 去查找文档

命令行艺术

https://explainshell.com/
https://cloud.tencent.com/developer/article/1441454
帮助
--help
man -k
apropos 适当的

#命令运行原理
用户输入命令,
bash利用空格切割获得命令,
判断命令是内部或外部命令,
在$PATH中给定的目录中从左向右寻找。Linux环境变量以:分割的。
shell的简单定义就是命令行解释器,功能是将使用者的命令翻译给核心处理

Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间
这是因为,Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 15775 天,也就是说,此 root 账号在 1970 年 1 月 1 日之后的第 15775 天修改的 root 用户密码。

那么,到底 15775 代表的是哪一天呢?可以使用如下命令进行换算:
[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 运行级别
field separator 分隔符
*   **GPL**(GNU 通用公共许可证,GNU General Public License) 
*   **Grep**(全局正则表达式及打印,Global Regular Expression and Print)

 如 invoke 调用, locale 当地,compatible兼容, configure,verbose冗长 ... etc 
     tx是发送(transport),rx是接收(receive)
 信息摘要(Message Digest)
recursive 递归
reverse, 上下颠倒的意思
dereference 取消引用
negated   英[nɪˈɡeɪtɪd][](javascript:;)[](javascript:;) | 美[nɪˈɡeɪtɪd][](javascript:;)[](javascript:;) | 
                    | v. | 取消; 使无效; 否定; 否认 |
probe 探测
Merge 合并,结合,并入; 相融; 融入; 渐渐消失在某物中;
orphaned 孤儿
Resume each 恢复
suspended 暂停的
bootstrap 引导程序
symbols 符号标志
Selective Acknowledgment 选择确认
Referenced 被引用
Anonymous 匿名
Implementations  实做
omit 忽略
quotas 配额
--numeric-sort  数字
promiscuous 混杂
Thread Id 线程
periodically 定期的
Toggle 切换
control Group 控制组 --- cgroup 
OOM killer(Out Of Memory killer)
 \"     double quote 双引号     (man printf)
  \\     backslash  反斜杠
malloc的全称是memory allocation
SELinux(Security Enhanced Linux) 增强
IPC(Inter-Process Communication),进程间通信
LWP(Light Weight Process)轻量级进程
Extra Packages for Enterprise Linux (or EPEL) 
resident set size 常驻内存
Assembling 汇编、集合组合 
  GUI:Graphic User Interface
requisite 必要条件
页目录(page directory, PGD
wildcard  通配符
reaping 收割,回收
General-Purpose Registers 通用寄存器
Embedded 嵌入式  Linux Consulting 咨询服务

图形界面

GNOME (C,图形库gtk)
KDE (C++,图形库qt),下图为CentOS6.10的KDE界面 
XFCE (轻量级桌面)
PS: 如果用户需要用到图形处理小工具,需要查看图形工具支持的图形库,选择对应的GUI,否则小工具无法使用。
CLI:Command Line Interface(文本模式)

Extra Packages for Enterprise Linux (or EPEL) 简言之,EPEL是专门为RHEL、CentOS等Linux发行版提供额外rpm包的
https://www.cnblogs.com/f-ck-need-u/p/8494992.html
Emacs,著名的集成开发环境和文本编辑器。

[https://www.cnblogs.com/33debug/p/6657519.html](https://www.cnblogs.com/33debug/p/6657519.html)

#shell 定义:
   对于一般用户,我们不能直接使用操作系统(kernel)。而是通过 kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
从技术角度 , Shell的最简单定义 : 命 令 行 解 释 器(command Interpreter)
主要包含:
    a. 将使用者的命令翻译给核心(kernel)处理。
    b. 同时,将核心的处理结果翻译给使用者。

#父子
[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: 上一个使用的历史命令。 (p: previous)
Ctrl+n: 下一个使用的历史命令。(n: next)

[b]移动[/b]
Ctrl+a: 光标回到命令行首。 (a: ahead)
Ctrl+e: 光标回到命令行尾。 (e: end)
Ctrl+b: 光标向行首移动一个字符。 (b: backwards)
Ctrl+f: 光标向行尾移动一个字符。 (f: forwards)
Alt +f: 光标向前移动一个单词。 (f: forwards)
Alt +b: 光标向后移动一个单词。 (b: backwards)

[b]删除[/b]
Ctrl+w: 删除光标处之前的词。 (不包括光标处字符)
Alt +d: 删除光标之后的词。 (包括光标处字符)
Ctrl+k: 删除光标处到行尾的字符。(包括光标处字符)
Ctrl+u: 删除光标处到行首的字符。(不包括光标处字符)
Ctrl+h: 向行首删除一个字符。
Ctrl+d: 向行尾删除一个字符。

[b]粘贴[/b]
Ctrl+y: 粘贴刚才所删除的内容。

[b]其他控制键[/b]
Tab 键: 命令、文件名等自动补全功能。

Ctrl+t: 交换光标所在字符和其前的字符。

Ctrl+i: 相当于 Tab 键。
Ctrl+m: 相当 Enter 键。
Ctrl+o: 相当于 Ctrl+m。

Ctrl+v: 插入特殊字符。例如:Ctrl+v+m(插入^M)

Ctrl+s: 挂起当前 shell。可以使快速输出的终端屏幕停下来。
Ctrl+q: 退出 Ctrl+s 状态。
Ctrl+z: 使正在运行在终端的任务,运行于后台。 (可用 fg 恢复)
Ctrl+c: 中断终端中正在执行的任务。
Ctrl+d: 退出终端。



#Shell特殊状态变量
$?     获取执行上一个指令的执行状态返回值(0成功,非0为失败)
$$      获取当前执行Shell脚本的进程号(PID)
$!      获取上一个在后台工作的进程的进程号(PID)
$_      获取在此之前执行的命令或脚本的最后一个参数


bashrc 
/etc/skel/.bashrc 
[https://www.cnblogs.com/midworld/p/11006967.html](https://www.cnblogs.com/midworld/p/11006967.html)





#命令总结
[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为例
解释器优先从bash自带的命令也就是内部命令(在内存中)中找,找到了自然就直接执行了,没找到呢?就在外部命令中找,也就是磁盘中存在的可执行程序或代码,这里就存在一个优先级,我们知道内存中是有一块Cache的,这里面有从硬盘中缓存过来的数据,我们使用过的命令自然也在其中,优先从这里面找,找不到也不是就放弃了,直接去硬盘里面找,此时就通过PATH环境变量来找,PATH里存放的就是路径可以看一下
 
# 十进制转十六进制 
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 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
lsof  -i tcp
15. 列出所有udp网络连接信息
lsof  -i udp
16. 列出谁在使用某个端口
lsof -i :3306
17. 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
18. 列出某个用户的所有活跃的网络端口
lsof  -a -u test -i

#命令基本意思

apropos -ewhatis 可以显示 section 代号:
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 标准的 -version (少了一个 '-')
2.3 --help, 同上, 九成的命令都有。不推荐 -h, 很多命令没有 -h, 亦或已经用来代表 'h'uman-readable。

3. -a 通常意指 'a'll, 全部文件的意思(因为开头 "." 命名的文件是默认隐藏的如 vim 的 .swp 恢复文件, 历史原因和后果请看此 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 排列最新更改日期的文件在最下方,毕竟大多数情况下,我只关心最近的文件。

[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。切记有些平台只有 -r, 有些平台只有 -R, 有些平台两者都有。

5. --exclude-dir 排除某个目录,代表: cloc . --exclude-dir=xxx, grep -rniI --exclude-dir=xxx abc ./* 。

5.1 "exclude" 是排除的意思,对立的就是 "include"。"dir" 是 "directory" 的缩写,表示 "目录"。Unix 传统不使用 "folder" 这个英文表示目录。

建议:

0. 学习命令选项不需要英文很好,manual 的英文简单,而且重复频率很高, 如 invoke, locale,compatible, configure, ... etc 不像英文小说每一段都有新词囧。

1. 不仅仅是 man,当不确定的时候,可以用 --help 快速一览选项。切记 --help 不等同于 man, 有时需要两个命令互补。也别忘了 info。要切记的是 man 本身有 section 分类 ,如图所示, man 1 lsman 1posix ls 可以浏览两个不同的 manual, 用 apropos -ewhatis 可以显示 section 代号:



#管道

https://www.cnblogs.com/old-path-white-cloud/p/11685558.html

/proc 伪文件系统 https://blog.csdn.net/qq_28357631/article/details/60764758

/proc 文件系统是一种内核和内核模块用来向进程(process)
简单来说:之所以把/proc文件系统称为虚拟,是因为其包含的文件和子目录并没有存储在磁盘上,而是由内核在进程访问此类信息时候动态创建而成的。
尽管/proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像’more’, ‘less’或’cat’这样的程序来查看。当编辑程序试图打开一个虚拟文件时,这个文件就通过内核中的信息被凭空地(on the fly) 创建了。

├1/ 关于进程1的信息目录。每个进程在/proc 下一个名为其进程号的目录。

├cpuinfo 处理器信息,如类型、制造商、型号和性能。

├devices 当前运行的核心配置的设备驱动的列表。

├dma 显示当前使用的DMA通道。

├filesystems 核心配置的文件系统。

├interrupts 显示使用的中断,and how many of each there have been.

├ioports 当前使用的I/O端口。

├kcore 系统物理内存映象。与物理内存大小一样,但实际不占这么多内存;

├kmsg 核心输出的消息。也被送到syslog 。

├ksyms 核心符号表。

├loadavg 系统”平均负载”;3个没意义的指示器指出系统当前的工作量。

├meminfo 存储器使用信息,包括物理内存和swap。

├modules 当前加载了哪些核心模块。

├net 网络协议状态信息。
最主要的,就是local_address本地地址:端口、rem_address远程地址:端口、st连接状态。

注1:文件中都是用的16进制,所以HTTP的80端口记录为0050。
注2:状态码对应如下
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 的程序的进程目录的符号连接。

├stat 系统的不同状态

├uptime 系统启动的时间长度。

└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 的信息(型号, 家族, 缓存大小等)
/proc/meminfo - 物理内存、交换空间等的信息
/proc/mounts - 已加载的文件系统的列表
/proc/devices - 可用设备的列表
/proc/filesystems - 被支持的文件系统
/proc/modules - 已加载的模块
/proc/version - 内核版本
/proc/cmdline - 系统启动时输入的内核命令行参数
/proc/sys/vm/
/proc/net/dev

[shell脚本中使用getopts处理多命令行选项]https://blog.csdn.net/wdz306ling/article/details/79974377

https://blog.csdn.net/ouyang_peng/article/details/86493502

tail 与 head

 
[https://www.jianshu.com/p/72ebecad9566](https://www.jianshu.com/p/72ebecad9566)
head -n k和head -n +k 相同 (k是相同数字)
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行(从第三行开始)。 头正尾负

性能 进程相关

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选项,可以分组,并且必须以 '-' 开头。
  如 -A -e
2、BSD options, which may be grouped and must not be used with a dash.
   BSD选项,可以分组,不能和 '-' 一起使用。
  如 a
3、GNU long options, which are preceded by two dashes.
   GNU长选项,前面有两个'--'。
   如 --help

---ps -ef 
UID    //用户ID、但输出的是用户名 
PID    //进程的ID 
PPID    //父进程ID 
C      //进程占用CPU的百分比 
STIME  //进程启动到现在的时间 
TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD    //命令的名称和参数

---ps aux
同ps -ef 不同的有列有
USER      //用户名 
%CPU      //进程占用的CPU百分比 
%MEM      //占用内存的百分比 
VSZ      //该进程使用的虚拟內存量(KB) 
RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
STAT      //进程的状态 
START    //该进程被触发启动时间 
TIME      //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有
D      //无法中断的休眠状态(通常 IO 的进程); 
R      //正在运行可中在队列中可过行的; 
S      //处于休眠状态; 
T      //停止或被追踪; 
W      //进入内存交换 (从内核2.6开始无效); 
X      //死掉的进程 (基本很少见); 
Z      //僵尸进程; 
<      //优先级高的进程 
N      //优先级较低的进程 
L      //有些页被锁进内存; 
s      //进程的领导者(在它之下有子进程); 
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+      //位于后台的进程组;
其它常用组合
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`
选项:
    -d # 指定刷新时间间隔,默认为3秒
    -b 全部显示所有进程
    -n # 刷新多少次后退出
    -H 线程模式,示例:top -H -p `pidof mysqld`、


查看watch 用法

watch more /proc/net/dev

邮件服务 理解

简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。

  邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。

  Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • 1.命令格式:ifconfig [网络设备] [参数] 2.命令功能: ifconfig 命令用来查看和配置网络设...
    Nuuuu阅读 3,692评论 0 12
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows...
    我想起个好名字阅读 294评论 0 1
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,318评论 0 9