基础命令
cp -a file1 file2 # 连同文件的所有特性一起复制
ctrl + z # 终止yum安装命令
touch xxx.txt # 创建新文件,或修改已存在文件时间戳
touch * # 将当下所有文件时间戳修改成系统当前时间
touch –d 20400210 test.txt # 将test.txt文件的日期改为20400210
touch abc.log # 若abc.log文件存在,则修改为系统的当前时间;若不存在,则生成一个为当前时间的空文件
ctrl+a # 终端输入命令时,跳到命令头部
ctrl+e # 终端输入命令时,跳到命令尾部
date +"%Y/%m/%d %H:%M:%M" # date格式化输出日期时间
tar -cvf out.tar /opt/test # 压缩归档目录或文件成一个.tar文件
tar -xvf out.tar # 解压文件
rpm -ql package_name # 查询已安装软件包。不过很多软件包我们并不知道名字
rpm -e package_name # 卸载软件包
rpm -ivh package_name # 安装软件包
sort -k3nr # 对输出解决进行排序。-k 指定排序的列;-n 以数值进行排序;-r 反序排序;-u 去重后排序;-t 指定栏位分隔符
uniq # 对输出结果按行去重。-c 统计出现次数;-u 只显示唯一行;-f 忽略前N个字段(字段间用空白字符分隔)
find /opt/ -size +1G # 查找大小大于1G的文件
sed '/^$/d' example.txt # 删除空行
cat test.txt | while read line;do echo $i;done # 读取文件把每行作为变量,而不是默认的空格
echo -n "test123" | base64 # -n转码时去掉换行符,解码后就不会换行了
echo "kkk" | base64 -d # 解码
CPU相关
总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
lscpu # 显示CPU架构相关信息。从sysfs和/proc/cpuinfo收集cpu体系结构信息
cat /proc/cpuinfo| grep "processor"| wc -l # 查看逻辑cpu个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看物理cpu个数
cat /proc/cpuinfo | grep "cpu cores" # 查看cpu核数
查看cpu前10:
ps aux | head -n 1;ps aux | sort -k3nr | head
内存相关
free -h # 查看总内存、已使用内存、空闲内存、共享内存、buff/cache、可用内存
cat /proc/meminfo # 几个常用值 => MemTotal 总内存、MemFree 空闲内存、Swap* Swap相关
查看cpu前10:
ps aux | head -1;ps aux | sort -rn -k +4 | head
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }' # 查看某进程所有连接占用的平均内存
磁盘相关
# 1、查看磁盘和目录大小
df:
-a # 显示所有文件系统
-T # 显示每个分区的文件系统类型
-k、-m # 分别以kb、MB显示
-h # 使用人们习惯的 KB、MB 或 GB 为单位显示文件系统空间
-H # 以1K=1000B,1M=1000K换算单位显示空间
du:
-a # 显示所有目录和子目录的大小
-h # 使用人们习惯的 KB、MB 或 GB 为单位显示目录大小
-s # 显示总目录大小,不显示子目录
--max-depth=1 # 显示深度为1的目录大小
# 2、磁盘分区、挂载与删除
fdisk -l # 查看分区大小、详细信息
lsblk # 查看分区结构和挂载情况。查看是否已经识别到到新磁盘,以及原/opt所挂载的vg名
vgs # 查看vg
lvs # 查看lv
# ============新建分区、格式化并挂载============== #
fdisk /dev/sda # 对sda磁盘进行分区
a toggle a bootable flag # 设置启动分区
d delete a partition # 删除一个分区
l list known partition types # 列出分区类型
m print this menu # 输出帮助信息
n add a new partition # 建立一个新的分区
p print the partition table # 打印分区表
q quit without saving changes # 退出不保存设置
u change display/entry units # 改变显示的单位
v verify the partition table # 检查验证分区表
w write table to disk and exit # 保存分区表
Partition number (1-4): 1 # 定义分区数量 --主分区最多只能有四个
一般使用顺序:n p(主分区) 4(分区数量) +100G(分区大小) w
mkfs.xfs /dev/sdb1 # 格式化分区成xfs文件系统
mkfs.ext4 -n /dev/mapper/LV-Name # 格式化分区成ext4文件系统
resize2fs /dev/mapper/LV-Name # 刷新文件系统
mkdir -p /opt/data # 创建挂载目录
mount /dev/sdb1 /opt/data # 挂载
/dev/sdb1 /opt/data xfs defaults 0 0 # vim /etc/fstab 永久挂载
# ==============磁盘扩容================= #
## 小于2T的磁盘可以用fdisk来做分区,大于2T的磁盘通过划分VG、LV来分区。
lvdisplay #查看opt逻辑卷的绝对路径,即对应的 LV Path的值,/dev/VG_NAME/xxx
pvcreate /dev/xxx # 新增磁盘创建为物理卷
pvcreate /dev/sdb1 # 创建Pv
vgcreate vgdata /dev/sdb1 # 创建vg
vgextend VG_NAME /dev/xxx # VG扩容:物理卷扩容至VG中
vgs # 查看确认,vg是否大小是否新增到目标值
lvextend -L +300G /dev/VG_NAME/xxx # lv扩容:opt逻辑卷扩容。+号表示增加,没有+号表示扩容到。
lvcreate -L 1000G -n LV_Name VG_Name # 新增一个LV
xfs_growfs /dev/VG_NAME/xxx # opt文件系统空间自动扩展
df -Th # 查看文件大小
# ==============解挂、删除分区================= #
umount /dev/sda1 # 解挂了。其实还可以挂载,而且数据还会在的
fdisk /dev/sda # m d 3 w ==> 删除物理磁盘/dev/sda的3个分区
网络相关
ifconfig # Linux查看网卡名、ipv4地址、ipv6地址等
ip addr # 与上一个差不多,表现结构不同。这个命令输出似乎有点乱
ip addr show # 显示更加详细
route # 查看路由信息
traceroute Ip # 跟踪到某主机的路由信息
-n #直接使用IP地址而非主机名称。避免DNS解析耗时
-p #设置UDP传输协议的通信端口
-s #设置本地主机送出数据包的IP地址
-v # 详细显示指令的执行过程
-w # 设置响应等等时间
-m # 跳数设置
iptables -L # 查看filter表的iptables规则,包括所有的链
iptables -F # 清空filter表的iptables规则,包括所有的链
firewall-cmd --zone=public --list-ports # 查看防火墙开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent (permanent永久生效,没有此参数重启后失效) # 添加开放端口
systemctl restart firewalld # 重启服务
# 抓包工具
tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,
并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump # 抓取所有网络包
tcpdump -w result.txt # 抓取网络包,并写入文件
tcpdump -i eth0 # 指定经过网卡的网络包
tcpdump host 192.168.1.100 # 抓取包含地址的包
tcpdump src host 172.31.192.14 # 抓取来自指定源地址的包
tcpdump dst host 192.168.1.100 # 抓取包含 指定目的地址 的包
tcpdump -i eth0 -vnn net 192.168.1.0/24 # 抓取指定网卡上包含192.168.1.0/24网段的数据包
tcpdump -i eth0 -vnn port 22 # 抓取指定网卡上包含指定端口的数据包
tcpdump udp -i eth0 -vnn # 抓取指定网卡指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种
tcpdump -i eth0 -vnn src host 192.168.1.100 # 经过指定网卡的指定源ip的数据包
tcpdump -i eth0 -vnn dst host 192.168.1.100 # 经过指定网卡的指定目的ip的数据包
tcpdump -i eth0 -vnn src port 22 # 经过指定网卡的指定源端口的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22 # # 经过指定网卡的指定源ip和目的端口的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22 # # 经过指定网卡的指定源ip或者包含指定端口的数据
tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )
tcpdump -i eth0 tcp -vnn -r /tmp/result # 从文件/tmp/result记录中读取tcp协议的数据包
tcpdump ip host 192.168.1.100 and ! 192.168.1.101 # 非逻辑使用
tcpdump -i ens3 port 22 and host 192.168.1.100 # 获取包含指定ip和指定端口的接收或发出的 telnet 包
tcpdump -c 3 # 指定抓取的数据包数量
vim相关
命令模式:esc按键进入。不能直接编辑,用于各种参数快捷操作
编辑模式:i或o按键进入。在该模式下可以对文件的内容进行编辑;
末行模式:冒号:进入。可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
命令行模式下:
$ # 光标跳到行尾
^ # 光标跳到行头
dd # 删除一行
D # 删除到行尾
gg # 跳到文件头
G # 跳到文件尾
40% # 跳到文件40%处
yy # 复制一行
P/p/3p # 粘贴至光标前/粘贴至光标后/粘贴3次
JAVA相关
# 查看应用占用的堆内存大小
jmap -head PID | grep -A 3 "Eden Space" | grep used
# 查看某个应用各个方法函数占用的内存大小
jmap -histo PID | head -n 30