[AD] -- 下方为内容广告,点击支持作者,想过滤广告? -- [AD]
记录后端开发过程中开发/问题排查中常用到的 Linux 命令。
简单入门学习可以在 《简明 Vim 练级攻略 | 酷 壳 - CoolShell》 学习。
学习完以后可以在 vim-adventures 上加以练习,这个网站将 vim 操作融入游戏中,寓教于乐。
博客中笔记 《Vim 配置与快捷键》 也提到了 Vim 编辑器的配置和快捷键相关的知识拓展。
编译器处理源代码的过程是
预处理 -> 编译 -> 汇编 -> 链接
-E 激活预处理(需重定向到文件)
-S 激活预处理和编译,获得汇编代码 .s
-c 激活预处理、编译和汇编 .o
-C 预处理时不删除注释
-M 生成文件关联信息,所依赖的源代码。
-MM 同上,但忽略由 #include 造成的依赖关系
-ldir 指定头文件位置,没有就在当前文件夹找,再没有就在默认文件夹找
-include 相当于 #include
-g 产生调试信息
-static 禁止使用动态链接库
-shared -G 使用动态链接库
-Wall 显示所有警告
-werror 将警告转换成错误,发送警告时终止编译
-w 关闭所有警告,不推荐
-o 修改默认的文件名
-O0 -O1 -O2 -O3 编译优化选项,0为无优化,默认为1
-fPIC 生成位置无关代码,用于共享库和动态链接
-v 显示详细的编译、汇编、连接命令
更多参见 http://www.cnblogs.com/lidan/archive/2011/05/25/2239517.html
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html
info threads
当前所有线程信息
set args -c
调试加 -c 参数 需要其他也可以直接加
(gdb) thread apply all bt
看所有线程的调用
print &a // 打印变量地址 x 0xbffff543 // 查看内存内的变量 x /4xb 0xbffff543 // 单字节查看内存内变量
ldd [可执行文件名]
第一列为程序依赖什么库,第二列为系统提供的与程序需要的库所对应的库,第三列为库加载的开始地址
http://man.linuxde.net/objdump
ELF文件(ELF(Executable and Linking Format)是一种对象文件的格式)各段内容,分析链接、符号表
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/readelf.html
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/pstack.html
pmap -x [pid]
Kbytes: 占用内存的字节数 RSS: 保留内存的字节数 Dirty: 脏页的字节数(包括共享和私有的) Mode: 内存的权限:read、write、execute、shared、private Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈) Device: 设备名 (major:minor)
查看物理cpu个数
grep 'physical id' /proc/cpuinfo | sort -u
查看核心数量
grep 'core id' /proc/cpuinfo | sort -u | wc -l
查看线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
主频
cat /proc/cpuinfo | grep MHz |uniq
型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
http://man.linuxde.net/ps
http://man.linuxde.net/top
显示所有线程 -H
部分指标解释 https://segmentfault.com/a/1190000008322093
-i [条件]:列出符合条件的进程。(4、6、协议、:端口、 @ip ) -p [进程号]:列出指定进程号所打开的文件; -u [用户名]:列出特定用户名的进程详情 +d<目录>:列出目录下被打开的文件;目录>
http://man.linuxde.net/lsof
lsof /data|grep delete
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/sar.html
http://man.linuxde.net/vmstat
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/vmstat.html
Procs(进程):
r: 运行队列中进程数量 b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小 free: 可用内存大小 buff: 用作缓冲的内存大小 cache: 用作缓存的内存大小
Swap(交换空间):
si: 每秒从交换区写到内存的大小 so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数 bo: 每秒写入的块数
system:
in: 每秒中断数,包括时钟中断 cs: 每秒上下文切换数
CPU(以百分比表示)
us: 用户进程执行时间(user time) sy: 系统进程执行时间(system time) id: 空闲时间(包括IO等待时间) wa: 等待IO时间
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/iostat.html
http://man.linuxde.net/iostat
如果%iowait的值过高,表示硬盘存在I/O瓶颈。
%idle值高,表示CPU较空闲。
如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
七层测试信息
time curl "https://www.google.com" -x 1.2.3.4:80 -s
显示如下:
real 2m26.351s user 0m3.456s sys 0m3.576s
https://httpd.apache.org/docs/2.0/programs/ab.html
ab -c 1 -n 100 -p test.txt -k http://127.0.0.1:1234/
-c 并发数 -n 总数 -p POST 的内容 -k keepalive
http://man.linuxde.net/ifconfig
http://man.linuxde.net/netstat
-a或–all:显示所有连线中的Socket; -t或–tcp:显示 TCP 传输协议的状况; -u或–udp:显示 UDP 传输协议的状况; -x或–unix:显示 Unix 套接字情况
分类统计脚本
netstat -an | awk '/^tcp/ {++state[$6]} END {for (key in state) print key,"\t",state[key]}'
LISTEN 3 ESTABLISHED 19 TIME_WAIT 4
https://linux.cn/article-1588-1.html
http://man.linuxde.net/traceroute
http://man.linuxde.net/tcpdump
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析
http://blog.51cto.com/laoyinga/1767613
eth.dst==20:dc:e6:f3:78:cc
ip.addr==192.168.1.122 //根据IP地址筛选,包括源ip或者目的IP
ip.src==192.168.1.122 //根据源IP地址筛选
ip.dst==192.168.1.122 //根据目的IP地址筛选
tcp.port==80 //根据TCP端口筛选数据包,包括源端口或者目的端口
tcp.dstport==80 //根据目的TCP端口筛选数据包。
tcp.srcport==80 //根据源TCP端口筛选数据包。
udp.port==4010 //根据UDP端口筛选数据包,包括源端口或者目的端口
udp.srcport==4010 //根据源UDP端口筛选数据包。
udp.dstport==4010 //根据目的UDP端口筛选数据包。
udp
tcp arp icmp smtp pop dns ip ssl http ftp telnet ssh rdp rip ospf
http.request.method==GET http.request.method==POST
|| //逻辑或
&& //逻辑与
! //逻辑非
mtr -n https://www.google.com
http://man.linuxde.net/dig
http://man.linuxde.net/curl
curl -w "\nnamelookup=%{time_namelookup}, connect=%{time_connect}, starttransfer=%{time_starttransfer}, total=%{time_total}, speed=%{speed_download}\n" https://www.google.com
https://blog.cloudflare.com/a-question-of-timing/
命令 openssl speed
证书链完整性检查 https://www.sslshopper.com/ssl-checker.html
证书等级评价 https://www.ssllabs.com/ssltest/index.html
证书发布查询 [https://crt.sh/?q=.google.com](https://crt.sh/?q=.google.com)
openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?
https://www.cnblogs.com/yjmyzz/p/openssl-tutorial.html
自己用 openssl 生成 CA 证书
https://blog.csdn.net/fhqsse220/article/details/45918829
SSL证书(HTTPS)背后的加密算法
https://www.cnblogs.com/TIlifeng/p/5488301.html
各种HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇总-自由,平等,共享,互助-51CTO博客
http://blog.51cto.com/shayi1983/1640723
自签名证书 https://www.appinn.com/mkcert/ https://github.com/FiloSottile/mkcert
#依赖
sudo apt install libnss3-tools
sudo yum install nss-tools
#运行
mkcert -install
工具推荐文章 https://www.globaldots.com/7-website-speed-test-tools-analyzing-web-performance/
瀑布图分析(内容较少) - https://www.webpagetest.org
瀑布图分析(试用一次后需要注册账号,内容较多) - https://www.dareboost.com/en
按国家划分的 DNS https://www.publicdns.xyz/country/
https://centralops.net/co/NsLookup.aspx
awk -F ‘ | ’ ‘{print $2}’ |
https://linux.cn/article-7602-1.html
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45
4 Tomatoes 25 $3.45
5 Onions 15 $1.45
6 Bananas 30 $3.45
cat data | awk -F '|' '{print $8}' | awk -F ':' '$2 > 14400' | wc -l
大于 14400 的行数
按 | 分割的第二个字段 |
awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20 { print $0 ;} ' food_list.txt
长度大于 8
awk '$3 <= 20 && length($2) > 8 { printf "%s\t%s\n", $0,"TRUE" ; } ' food_list.txt
-l 计算行数
-c 字节数
-m 字符数
-w 单词数
-c 统计出现的次数,要排序
-d 只打印重复的部分
-u 只打印不重复的部分
-i 忽略大小写
grep -rn “content” .
grep -a “xxx” a.log // grep认为a.log是二进制文件
tar -zcvf 压缩名.tar.gz 源文件1 源文件2 tar -zcvf 路径/压缩名.tar.gz 源文件1 源文件2 tar -zxvf tar -zxvf 压缩文件名.tar,gz -C /路径 (解压缩到特定路径 tar -ztvf 压缩文件名.tar,gz (查看压缩文件内容
将选定的文件发送(send)到本地机器
在弹出的框中选择文件,上传文件的用户和组是当前登录的用户
&>file、2>&1、1>&2
[AD] -- 下方为内容广告,点击支持作者,想过滤广告? -- [AD]