Skip to content

Instantly share code, notes, and snippets.

@Roger8
Last active May 18, 2025 14:09
Show Gist options
  • Save Roger8/76e63a5b815a8cf32f43846998160bbb to your computer and use it in GitHub Desktop.
Save Roger8/76e63a5b815a8cf32f43846998160bbb to your computer and use it in GitHub Desktop.
Linux & Shell commond 笔记

Linux

uptime   # Linux 系统运行了多久
vmstat  #命令报告有关进程、内存、分页、块 IO、中断和 CPU 活动等信息。
w 命令 显示了当前登录在该系统上的用户及其进程。
# w username
# w vivek
free #命令显示了系统的可用和已用的物理内存及交换内存的总量,以及内核用到的缓存空间。
iostat 命令用于汇报 CPU 的使用情况,以及设备、分区和网络文件系统(NFS)的 IO 统计信息。

sar 命令用于收集、汇报和保存系统活动信息。要查看网络统计,请输入:
# sar -n DEV | more
显示 24 日的网络统计:
# sar -n DEV -f /var/log/sa/sa24 | more
您还可以使用 sar 显示实时使用情况:
# sar 4 5

mpstat 命令显示每个可用处理器的使用情况,编号从 0 开始。命令 mpstat -P ALL 显示了每个处理器的平均使用率:
# mpstat -P ALL

pmap – 监控进程的内存使用情况
pmap 命令用以显示进程的内存映射,使用此命令可以查找内存瓶颈。
# pmap -d PID
显示 PID 为 47394 的进程的内存信息,请输入:
# pmap -d 47394
最后一行非常重要:
mapped: 933712K 映射到文件的内存量
writeable/private: 4304K 私有地址空间
shared: 768000K 此进程与其他进程共享的地址空间

netstat 命令显示网络连接、路由表、接口统计、伪装连接和多播连接等信息。
# netstat -antp | grep python
# netstat -tulpn
# netstat -nat

ss 命令用于获取套接字统计信息。它可以显示类似于 netstat 的信息。不过 netstat 几乎要过时了,ss 命令更具优势。要显示所有 TCP 或 UDP 套接字:
# ss -t -a# ss -u -a
显示所有带有 SELinux 安全上下文Security Context的 TCP 套接字:
# ss -t -a -Z

iptraf – 获取实时网络统计信息
iptraf 命令是一个基于 ncurses 的交互式 IP 网络监控工具。它可以生成多种网络统计信息,包括 TCP 信息、UDP 计数、ICMP 和 OSPF 信息、以太网负载信息、节点统计信息、IP 校验错误等。它以简单的格式提供了以下信息:
基于 TCP 连接的网络流量统计
基于网络接口的 IP 流量统计
基于协议的网络流量统计
基于 TCP/UDP 端口和数据包大小的网络流量统计
基于二层地址的网络流量统计

tcpdump – 详细的网络流量分析


ps -auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    6月29   0:04 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    6月29   0:06  \_ [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   6月29   0:00  \_ [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    6月29   0:14  \_ [migration/0]
找出占用内存资源最多的前 10 个进程
# ps -auxf | sort -nr -k 4 | head -10
找出占用 CPU 资源最多的前 10 个进程
# ps -auxf | sort -nr -k 3 | head -10

shell

awk

# 每两行进行合并
awk '{tmp=$0;getline;print tmp","$0}'
#awk首先读取到了第一行,然后getline,就得到了第二行,
#因为getline之后,awk会改变对应的NF,NR,FNR和$0等内部变量,所以此时的$0的值就不再是1,而是2了

# 交换奇数行与偶数行
awk '{getline tmp; print tmp; print $0}'
#上面例子将getline得到的下一行的内容放在了tmp这个变量里,因此NF,NR,FNR和$0等内部变量并不会被改变。

# 多个分隔符
awk -F'[/=]' '{print $3 "\t" $5 "\t" $8}' file
或 awk -F"/|=" '{print $3, $5, $NF}' file 

# 匹配
awk -F: '$1~/mail/{print $1}' /etc/passwd           //$1匹配指定内容才显示
awk -F: '$1!~/mail/{print $1}' /etc/passwd          //不匹配

awk -F":" '{if($1=="mysql") print $3}' /etc/passwd          //与上面相同 
awk -F":" '$3>1000{print $3}' /etc/passwd                      //大于
awk -F: '$3+$4 > 200' /etc/passwd
# 格式化输出
awk '{printf "%-8s %-8s %-10s\n",$1,$2,$3}' 

sed

# sed通常用-n -p选项结合来输出指定的行,sed有一个步长的设置,
# 例如从第一行开始,每2行输出
# 打印奇数行,中间是个波浪号~
tail -10 face.txt | sed -n '1~2p'
# 打印偶数行
tail -10 face.txt | sed -n '2~2p'

# 匹配多个
sed -E  's/<image file=|'\''|>//g'  # 用 |  , 单引号用'pattern' 包围

#提取字符串
echo "dsda限20052.14-025.14,8000504036.jpg"  | sed  's/.*\([0-9]\{10\}\.jpg\)/\1/g'
echo "dsda限20052.14-025.14,8000504036.jpg"  | sed  's/.*\([0-9]\{10\}\)\.\(jpg\)/\1_\2/g'
#括号要用\转义,后面的\1 表示第一个()内容, \2 第二个()内容
#dsda限20052.14-025.14,8000504036.jpg  ---> 8000504036_jpg

grep

grep -F -v -f b.txt a.txt | sort | uniq  # 结果为 a-b 差集

# -n 输出对应行 及 行号
grep -n 'http' tx
# -c 统计匹配数
grep -c 'http' tx

#The name "grep" stands for "general regular expression processor" and as noted it searchs a file for matches to a #regular expression like "^Taz" or "_*$". It has a few useful options as well. For example:

   grep -v <regular_expression> <file_list>
#-- lists all lines that don't match the regular expression. 

#Other options include:
   grep -n      # List line numbers of matches.
   grep -i      # Ignore case.
   grep -l      # Only list file names for a match.

# 查找包含字符串的文件 -r 递归文件夹 -n 输出所在行 -I 避开二进制文件
grep -rnI extract_reid_features ./
#./models/reid/__init__.py:41:def extract_reid_features(reid_model, image, tlbrs):
#./tracker/mot_tracker.py:12:from models.reid import load_reid_model, extract_reid_features

## Linux系统中,利用grep打印匹配的上下几行
## 如果在只是想匹配模式的上下几行,grep可以实现。
grep -5   'parttern' inputfile //打印匹配行的前后5行
grep -C 5 'parttern' inputfile //打印匹配行的前后5行
grep -A 5 'parttern' inputfile //打印匹配行的后5行
grep -B 5 'parttern' inputfile //打印匹配行的前5行

sort

sort file1 file2 合并排序两个文件的内容 
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) 
sort file1 file2 | uniq -u 删除交集,留下其他的行 
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) 
tt 
9407309001_1.jpg
2407002684_2.jpg
7607002633_3.jpg

t1
2407002684_2.jpg
8407002034_1.jpg
..x..x.
3407004722_1.jpg

#sort tt t1

2407002684_2.jpg
2407002684_2.jpg
3407004722_1.jpg
7607002633_3.jpg
8407002034_1.jpg
9407309001_1.jpg
..x..x.

sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份), uniq -c 统计出现次数

      2 2407002684_2.jpg
      1 3407004722_1.jpg
      1 7607002633_3.jpg
      1 8407002034_1.jpg
      1 9407309001_1.jpg
      1 ..x..x.

sort file1 file2 | uniq -u 删除交集,留下其他的行

3407004722_1.jpg
7607002633_3.jpg
8407002034_1.jpg
9407309001_1.jpg
..x..x.

sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)

2407002684_2.jpg

paste

paste file1 file2 合并两个文件或两栏的内容

11	2407002684_2.jpg
22	8407002034_1.jpg
33	..x..x.
aa	3407004722_1.jpg
bb	

tr | uniq

#* The "tr" utility translates from one set of characters to another. For example, to translate uppercase characters #to lowercase characters: 大写转小写

tr '[A-Z]' '[a-z]' < file1.txt > file2.txt

#* The "uniq" utility removes duplicate consecutive lines from a file. It has the syntax:
uniq source.txt output.txt

    wc -c        # Character count only.
    wc -w        # Word count only.
    wc -l        # Line count only.
    
#There are a wide variety of selection criteria. If you just want to print out the directories in a search from your #current directory, you can do so with: 打印当前目录下文件夹

   find . -type d -print
   
# 输出 从3开始到40 之间,每隔 11 的数
for i in {3..40..11};do echo $i;done
3
14
25
36
[ $a == $b ] - 用于字符串比较
[ $a -eq $b ] - 用于数字比较

#打印数组的第一个元素 ?
echo ${array[0]}

打印数组的所有元素 ?
echo ${array[@]}

#检查字符串是否以字母 "abc" 开头 ?
[[ $string == abc* ]]

@Roger8
Copy link
Author

Roger8 commented Nov 15, 2018

unzip x.zip "*mobile/要解压的文件" -d <要解压的目录> # 解压zip中指定文件到指定文件夹

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment