01_Basic
常用工具:Linux 命令搜索 | 菜鸟教程 - Linux | Linux 工具快查
一、Linux 目录结构 ⭐⭐⭐
Linux 的文件系统是一棵从根 / 开始的倒挂树,没有 Windows 那种"盘符"概念——所有的设备、外接存储、进程信息统统挂在这棵树的某个节点下。理解顶层目录各自"装什么"是搞清一切文件路径的前提。
| 目录 | 全称 / 语义 | 装什么 |
|---|---|---|
/bin |
binary | 系统级可执行命令(ls、cp、mv 等) |
/sbin |
super binary | 超级用户(root)才能用的命令 |
/etc |
et cetera | 系统配置文件(网络、用户、服务) |
/home |
普通用户的家目录,每人一个子文件夹 | |
/root |
root 用户的家目录(不是 /) |
|
/var |
variable | 可变数据:日志、数据库文件、缓存 |
/tmp |
temporary | 临时文件,可随时清理 |
/dev |
device | 设备文件(键盘、磁盘、打印机) |
/boot |
启动系统需要的内核和引导文件 | |
/opt |
optional | 第三方软件(MySQL、Tomcat 等) |
/usr |
user | 系统级共享资源(软件、文档、库) |
/lib |
library | 启动和运行所需的库文件 |
/mnt |
mount | 手动挂载外部设备(U 盘、光盘)的位置 |
怎么记
分成三组就好理解:给命令住的(bin、sbin、usr、lib)、给数据住的(home、root、var、tmp、opt)、给系统住的(etc、boot、dev、mnt)。
二、Vim 编辑器 ⭐⭐⭐
2.1 三种模式
Vim 是 Linux 上事实上的默认编辑器,一切都围绕三种模式运转:
- 一般模式(Normal):
vim 文件名打开后默认所处的模式,光标移动、复制、删除都在这里 - 编辑模式(Insert):真正能敲字符插入内容的模式,通过
i / a / o进入,Esc返回 - 命令模式(Command-line):以
:或/开头,用于保存、退出、查找、替换
为什么这么设计
Vim 的核心哲学是"光标停留的时间远长于打字的时间"——所以把最常用的移动、复制、删除操作直接绑定成一般模式下的单键快捷键,而不是 Ctrl 组合键。刚开始别扭,一旦顺手效率极高。
2.2 一般模式:光标、删除、复制
2.3 进入编辑模式的 6 种方式
| 按键 | 功能 |
|---|---|
i |
在当前光标前插入 |
a |
在当前光标后插入 |
o |
在当前行的下一行插入新行 |
I |
在当前行的行首插入 |
A |
在当前行的行尾插入 |
O |
在当前行的上一行插入新行 |
2.4 命令模式:退出、查找、替换
三、Linux 核心命令
3.1 关机与重启
生产环境别乱用 shutdown
远程 SSH 到服务器时一旦 shutdown 就断连了。重要机器执行前先看好机器编号、和团队打招呼——没有回头路。
3.2 服务管理 systemctl ⭐⭐⭐
systemctl 是 systemd 提供的服务管理入口。理解一点:"临时操作"和"永久操作"是两个正交维度——start 只是这一次启起来,enable 才是让它开机自启。
3.3 文件与目录 ⭐⭐⭐
1. pwd / ls / cd
pwd(print working directory)打印当前所在目录:
ls(list)列出目录内容,是最高频的命令之一:
ls # 当前目录内容
ls -a # 显示所有文件(含隐藏文件,以 . 开头的)
ls -l # 详细列表(权限、大小、时间)
ls -lh # 大小用人类可读单位(K/M/G)
ls -t # 按修改时间排序
ls -S # 按文件大小排序
ll # 通常是 ls -l 的别名
cd(change directory)切换目录:
cd /path/to/dir # 切换到指定目录
cd ~ # 切换到当前用户家目录(等价于 cd)
cd - # 切换到上一次的目录
cd .. # 上一级目录
cd ../.. # 上两级目录
cd -L # 切到软链接指向的位置
cd -P # 切到软链接的真实位置
2. mkdir / rmdir / touch
mkdir(make directory)建目录:
mkdir dirname # 创建单个目录
mkdir -p a/b/c/d # 递归创建多级目录(重要!)
mkdir -m 755 dirname # 创建目录时指定权限
mkdir -v dirname # 显示执行详情
-p 参数为什么这么好用
默认情况下 mkdir a/b/c 如果中间的 a、b 不存在会直接报错。加 -p 后不管缺哪一层都会自动补齐,且已存在也不会报错——这在写脚本时几乎必加。
rmdir 只能删除空目录,非空目录必须用 rm -r。所以 rmdir 了解即可,实际几乎不用。
touch 有两种用途:文件不存在则创建空文件,已存在则更新时间戳。
创建带内容的文件还有两种常见方式:
vim test.txt # vim 会自动创建,:wq 保存
echo "hello" > test.txt # 覆写创建
echo "hello" >> test.txt # 追加(文件不存在也会创建)
3. cp / mv / rm
cp(copy)复制文件或目录:
cp source.txt target.txt # 复制文件
cp -r sourceDir/ targetDir/ # 递归复制目录(**必加 -r**)
cp -f source target # 强制覆盖不询问
cp -p source target # 保留原文件的权限、时间戳
mv(move)移动或改名:
一句话:cp 复制后文件数会变多,mv 移动后文件数不变。同目录下的 mv 就是改名。
rm(remove)删除,一次可删多个文件,加 -r 递归删目录。
rm -rf 是核弹按钮
rm -rf /* 会瞬间清空整个系统且无法恢复。执行任何 rm -rf 之前一定:
- 确认当前工作目录(
pwd) - 确认要删的是什么(
ls一遍) - 绝不要在 root 下无脑复制粘贴网上抄来的
rm命令
4. 查看文件内容
Linux 提供了一堆看文件的命令,看起来重复,其实每个都有独特场景:
| 命令 | 场景 | 特点 |
|---|---|---|
cat |
内容少的小文件 | 一次性全部输出,滚屏就看不清了 |
more |
内容多的大文件 | 分页显示,只能向下翻 |
less |
内容多的大文件 | 分页 + 可双向翻页 + 支持 /查找 |
head |
看文件开头 | 默认前 10 行 |
tail |
看文件结尾 | 默认后 10 行,-f 可实时追踪 |
cat:
more:
less —— 比 more 强大得多:
less file.txt
# 交互式按键:
# 空格 / PageDown 向下翻页
# b / PageUp 向上翻页
# /keyword 向下查找
# ?keyword 向上查找
# n / N 跳到下一个 / 上一个匹配
# q 退出
head / tail:
head file.txt # 前 10 行
head -n 5 file.txt # 前 5 行
head -c 100 file.txt # 前 100 字节
tail file.txt # 后 10 行
tail -n 5 file.txt # 后 5 行
tail -f app.log # 实时追踪日志新增内容(Ctrl+C 退出)⭐
tail -F app.log # 类似 -f,但文件被 rotate 也能跟上
tail -f 是运维排障神器
看服务实时日志几乎必用。若配合 grep:tail -f app.log | grep ERROR 可实时过滤错误。
echo —— 输出字符串或变量到终端,最常用来结合重定向写文件:
echo "hello" # 输出到终端
echo $HOME # 输出变量值
echo "line1" > file.txt # 覆写文件
echo "line2" >> file.txt # 追加到文件末尾
5. ln 软链接与硬链接
ln(link)建立链接文件——但 Linux 里有两种链接,行为完全不同:
- 软链接(symbolic link):类似 Windows 快捷方式,存的是原文件的路径。原文件被删或移动,软链接就失效
- 硬链接(hard link):存的是原文件的 inode(可以理解成文件在磁盘上的"身份证号")。原文件被删,硬链接依然指向真实数据
# 创建软链接(-s = symbolic)
ln -s /opt/jdk-17/bin/java /usr/local/bin/java
# 创建硬链接(不加 -s)
ln original.txt backup.txt
日常用得最多的是 ln -s,做命令的"别名式"入口很方便。
3.4 用户与权限 ⭐⭐⭐
1. 用户管理
# 新增用户(会自动创建同名家目录 /home/用户名)
useradd zhangsan
useradd -g dev zhangsan # 指定所属组(组必须已存在)
# 删除用户
userdel zhangsan # 保留家目录
userdel -r zhangsan # 连家目录一起删
# 设置密码
passwd zhangsan # root 可为任何人改
passwd # 普通用户改自己的
# 修改用户属性
usermod -g newgroup zhangsan # 修改主组
usermod -aG sudo zhangsan # 追加到 sudo 组(-a 表示 append)
-a 参数别忘
usermod -G group1 zhangsan 会替换用户的附加组,只留下 group1。要追加必须加 -a:usermod -aG group1 zhangsan。这是新手常见踩坑点。
2. 查看用户与组
3. 组管理
4. sudo 授权
给某个用户 sudo 权限的标准做法:
之后 zhangsan 就能用 sudo 命令 以 root 权限执行操作了,NOPASSWD:ALL 表示免密码。
5. 用户切换
6. 权限模型 ⭐⭐⭐
Linux 文件权限用 10 位字符表示:
- 第 1 位:文件类型(
-普通文件、d目录、l软链接) - 第 2-4 位:所有者(owner / user)的权限
- 第 5-7 位:所属组(group)的权限
- 第 8-10 位:其他人(other)的权限
每组三位分别是 rwx(读 read / 写 write / 执行 execute)。
数字表示法——权限也可以用数字:r=4、w=2、x=1,把三个权限的数字相加就是这一组的权限值。
| 权限 | 二进制 | 数字 | 含义 |
|---|---|---|---|
--- |
000 | 0 | 无 |
--x |
001 | 1 | 只能执行 |
-w- |
010 | 2 | 只能写 |
r-- |
100 | 4 | 只能读 |
r-x |
101 | 5 | 读+执行 |
rw- |
110 | 6 | 读+写 |
rwx |
111 | 7 | 全部 |
所以 chmod 755 file 就是所有者 rwx、组 r-x、其他人 r-x——最常见的可执行文件权限。
7. chmod / chown
chmod(change mode)修改权限:
# 数字法
chmod 755 script.sh
chmod -R 644 dir/ # 递归修改目录下所有
# 符号法(u=owner, g=group, o=other, a=all)
chmod u+x script.sh # 给所有者加执行权限
chmod g-w file.txt # 组去掉写权限
chmod a+r file.txt # 所有人加读权限
chmod u=rwx,g=rx,o=r file.txt # 精确设置
chown(change owner)修改所有者/组:
chown zhangsan file.txt # 改所有者
chown zhangsan:dev file.txt # 同时改所有者和组
chown -R zhangsan:dev /var/www/ # 递归修改
3.5 查询:find 与 grep
两个都叫"查",但方向不同:
find:按条件找文件(文件名、大小、类型、修改时间)grep:在文件内容里找文本(配合正则)
find:
find / -name "*.log" # 全盘找 .log 文件
find /var -type f -size +100M # /var 下大于 100M 的文件
find . -mtime -7 # 当前目录下 7 天内修改过的
find / -name "core.*" -delete # 找到并直接删(危险!先不带 -delete 确认)
find / 在高负载服务器上要慎用
从根目录全盘搜索会消耗大量 IO,繁忙的生产机器上会拖慢业务。已知大致路径时尽量缩小搜索起点。
grep:
grep "ERROR" app.log # 在文件里搜含 ERROR 的行
grep -i "error" app.log # 忽略大小写
grep -n "error" app.log # 显示行号
grep -r "TODO" ./ # 递归搜目录
grep -v "DEBUG" app.log # 反选:不含 DEBUG 的行
grep -A 3 "error" app.log # 匹配行 + 后 3 行上下文
grep 常配合管道使用,比如实时过滤日志错误:
3.6 压缩与解压
Linux 下三种主流压缩方案,各有分工:
| 工具 | 后缀 | 场景 | 备注 |
|---|---|---|---|
| gzip | .gz |
单个文件压缩 | 压缩后原文件消失,只能压文件不能压目录 |
| zip | .zip |
跨平台通用 | 可压目录,Windows 原生支持 |
| tar | .tar / .tar.gz |
Linux 归档标准 | 可打包目录,配合 -z 加 gzip 压缩 |
gzip:
zip:
zip archive.zip file.txt # 压缩单文件
zip -r archive.zip dir/ # 递归压缩目录
unzip archive.zip # 解压到当前目录
unzip archive.zip -d /tmp/ # 解压到指定目录
tar —— 最常用,参数记住 czvf / xzvf 就够:
# 打包(不压缩)
tar -cvf archive.tar dir/
# 打包 + gzip 压缩
tar -czvf archive.tar.gz dir/
# 解包
tar -xvf archive.tar
tar -xvf archive.tar -C /target/ # 解到指定目录
# 解压 + 解包
tar -xzvf archive.tar.gz
tar -xzvf archive.tar.gz -C /target/
参数速记:
| 参数 | 含义 |
|---|---|
-c |
create,打包 |
-x |
extract,解包 |
-v |
verbose,显示过程 |
-f |
file,指定操作的文件(必须放最后) |
-z |
通过 gzip 压缩/解压 |
-j |
通过 bzip2 压缩/解压 |
四、软件安装(非 Docker) ⭐⭐⭐
Linux 的软件安装大体两条路:包管理器(推荐)和手动解压二进制/源码编译。而包管理器又因发行版不同分为两大阵营——RPM 系(CentOS / RHEL / Rocky)用 yum / dnf,Debian 系(Debian / Ubuntu)用 apt。
4.1 包管理器基础:yum vs apt
| 场景 | RPM 系(CentOS / Rocky) | Debian 系(Ubuntu / Debian) |
|---|---|---|
| 包格式 | .rpm |
.deb |
| 底层工具 | rpm |
dpkg |
| 前端工具 | yum / dnf(新版推荐 dnf) |
apt / apt-get |
| 搜索软件 | yum search 关键字 |
apt search 关键字 |
| 安装 | yum install xxx |
apt install xxx |
| 卸载 | yum remove xxx |
apt remove xxx |
| 更新缓存 | yum makecache |
apt update |
| 升级软件 | yum update xxx |
apt upgrade xxx |
| 列出已装 | rpm -qa |
dpkg -l |
| 查所属包 | rpm -qf 文件路径 |
dpkg -S 文件路径 |
记忆窍门
apt update 只是更新软件源索引("哪些新版本可以装"),不会真的升级软件;apt upgrade 才是执行升级。这和 yum 的行为不同——yum 每次执行命令都会自动 makecache,感受不到 update 这一步。
直接使用底层工具
有时候拿到的是本地 .rpm 或 .deb 包(比如从官网下载),需要底层工具直接安装:
# 查询
dpkg -l | grep 关键字 # 已装的软件里搜
dpkg -L 软件名 # 查软件装到了哪些位置
dpkg -S /usr/bin/vim # 查某个文件属于哪个包
# 安装本地 deb 包(**推荐 apt install 本地文件**,会自动处理依赖)
sudo apt install ./xxx.deb # 推荐
sudo dpkg -i xxx.deb # 底层安装,若缺依赖会报错
sudo apt install -f # 若 dpkg 缺依赖,用这条自动补齐
# 卸载
sudo apt remove 软件名 # 卸载但保留配置文件
sudo apt purge 软件名 # 卸载并删除配置文件
4.2 切换软件源(换镜像加速)
国内访问官方源慢是常态,换成阿里、清华、中科大的镜像能快很多。
CentOS 7 已停止维护
CentOS 7 官方源自 2024 年 7 月起下线,必须切换到镜像源才能继续使用 yum。
Ubuntu 22.04+ 的源配置在 /etc/apt/sources.list.d/ubuntu.sources(新格式):
# 备份
sudo cp /etc/apt/sources.list.d/ubuntu.sources \
/etc/apt/sources.list.d/ubuntu.sources.bak
# sed 一键替换为清华源
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' \
/etc/apt/sources.list.d/ubuntu.sources
# 更新缓存
sudo apt update
Ubuntu 20.04 及更早版本源在 /etc/apt/sources.list,命令类似。
4.3 安装 JDK + Tomcat
JDK 和 Tomcat 都是"下载 tar 包 → 解压 → 配环境变量"的模式,两个发行版流程完全一样。
步骤 1:下载 tar 包
从 Oracle 或 OpenJDK 下载 .tar.gz,上传到服务器 /opt 下。
步骤 2:解压
步骤 3:配置环境变量
推荐不改 /etc/profile,而是在 /etc/profile.d/ 下新建一个 .sh——这样系统更新时不会被覆盖,且可插拔:
写入:
步骤 4:让环境变量生效
Tomcat 类似:官网下 apache-tomcat-10.x.tar.gz,解压到 /opt 即可,bin/startup.sh 启动。
端口没开访问不了
- 云服务器要在控制台安全组放行端口
- 本机防火墙也要放行:
firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload(CentOS)或ufw allow 8080(Ubuntu)
4.4 安装 MySQL
CentOS 系:RPM Bundle
1)下载:去 MySQL 官网 选 Linux - Generic - RPM Bundle,得到一个 .tar 包(不是 .tar.gz,里面装了所有需要的 rpm)。
先看系统版本决定下哪个:
2)解包 + 按顺序安装 rpm:
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
# 按依赖顺序安装
rpm -ivh mysql-community-common-*.rpm
rpm -ivh mysql-community-client-plugins-*.rpm
rpm -ivh mysql-community-libs-*.rpm
rpm -ivh mysql-community-icu-data-files-*.rpm
rpm -ivh mysql-community-client-*.rpm
rpm -ivh mysql-community-server-*.rpm
3)验证:
Ubuntu 系:apt 直接装
Ubuntu 上简单太多:
sudo apt update
sudo apt install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
# 交互式初始化(设 root 密码、移除匿名用户等)
sudo mysql_secure_installation
通用:服务管理与密码初始化
# 初始化数据目录(CentOS 需要,Ubuntu apt 装完已自动完成)
mysqld --initialize --user=root
# 启动服务
systemctl start mysqld # CentOS
systemctl start mysql # Ubuntu
# 找初始密码(首次启动后 log 里会打印)
grep "temporary password" /var/log/mysqld.log
遇到权限错误
启动时若报 Permission denied 之类错误,一般是数据目录权限问题:
重置密码与开放远程访问
-- 登录后执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
-- 允许 root 从任意主机连接(开发环境用,生产禁止!)
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES; -- 修改底层表必须刷新才生效
生产环境别开 %
host='%' 意味着任意 IP 都能来连接你的 MySQL。生产库应严格限制到 App 服务器的 IP,且用非 root 账号。
4.5 安装 Nginx
1)安装
2)启动与自启
访问 http://服务器IP,看到欢迎页就成功了。
3)核心目录
| 路径 | 用途 |
|---|---|
/etc/nginx/ |
配置文件根目录 |
/etc/nginx/nginx.conf |
主配置文件(全局配置) |
/etc/nginx/conf.d/ |
子配置目录,主配置会 include 这里所有 .conf |
/var/log/nginx/access.log |
访问日志 |
/var/log/nginx/error.log |
错误日志 |
/usr/share/nginx/html/ |
默认静态资源目录 |
4)虚拟主机(server 块)
Nginx 一个进程可以监听多个"虚拟主机",收到请求后根据 server_name 和 listen 端口决定给哪个 server 处理。
server {
listen 8080;
server_name 115.190.231.171;
location /hello-nginx {
root /usr/share/nginx/html/;
index index.html;
}
}
改完配置后:
5)反向代理
Nginx 最常见的用途——把外部请求转发给内部应用服务器:
server {
listen 8080;
server_name 115.190.231.171;
location / {
proxy_pass http://www.atguigu.com;
}
}
6)SELinux 与访问被拒
CentOS 默认开启 SELinux(Security-Enhanced Linux),有时候 Nginx 反向代理返回 502,日志里没啥错,八成是 SELinux 拦下了。
SELinux 三种模式
- Enforcing:强制执行策略,拦截并记录违规
- Permissive:只记录,不拦截(排障用)
- Disabled:完全关闭
setenforce 0 只是临时切到 Permissive,重启后恢复。永久禁用需要改 /etc/selinux/config——但生产环境不建议禁用,最好写正确的 SELinux 策略。Ubuntu 默认不启用 SELinux(用 AppArmor 替代),所以这个问题主要出在 CentOS。
4.6 安装 MinIO
MinIO 是兼容 S3 协议的对象存储。安装方式官方推荐直接下载二进制或 rpm。
1)下载并安装
# 下载 rpm
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241029160148.0.0-1.x86_64.rpm -O minio.rpm
# CentOS
sudo dnf install minio.rpm
# 或
sudo rpm -ivh minio.rpm
# Ubuntu(用 apt install 本地文件,能自动处理依赖)
sudo apt install ./minio.rpm # 若报错,可先转成 deb 或直接下二进制
Ubuntu 更推荐直接下二进制:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
2)前台启动测试
默认账号密码 minioadmin / minioadmin。浏览器访问 http://IP:9001 即可。
3)配置为 systemd 服务(后台运行)
写入:
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
EnvironmentFile=-/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
4)配置环境变量文件
写入:
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=你的强密码
MINIO_VOLUMES=/root/minio/data
MINIO_OPTS="--console-address :9001"
mkdir -p /root/minio/data
chmod -R 755 /root/minio/data
sudo systemctl daemon-reload
sudo systemctl start minio
sudo systemctl enable minio
| 配置项 | 说明 |
|---|---|
EnvironmentFile |
环境变量文件路径 |
ExecStart |
服务启动命令 |
MINIO_OPTS |
启动选项(如控制台端口) |
MINIO_VOLUMES |
必填,数据存储目录 |
Restart=always |
崩溃后自动重启 |
5)设置桶的公读策略
有时候希望某个桶里的对象可以匿名读取(如公开图床),在 MinIO 控制台或 API 里设置策略:
{
"Statement": [{
"Action": "s3:GetObject",
"Effect": "Allow",
"Principal": "*",
"Resource": "arn:aws:s3:::test/*"
}],
"Version": "2012-10-17"
}
公读策略要谨慎
Principal: "*" 意味着互联网上任何人都能匿名 GET 这个桶里的对象。只在明确要做公开静态资源时才开,且路径下不要放敏感文件。
五、其他常用命令
5.1 端口与进程
# 查看端口是否被占用
ss -tuln | grep :8080 # 现代推荐
netstat -anp | grep :8080 # 老命令,可能要额外装 net-tools
# 查看端口上跑的具体是哪个进程
lsof -i:8080
# 按进程名找 PID
pgrep -f nginx
ps aux | grep nginx
# 杀进程
kill PID # 优雅退出(发 SIGTERM)
kill -9 PID # 强制杀死(SIGKILL,最后手段)
5.2 系统资源
df -h # 磁盘使用情况(人类可读)
du -sh /var/log # 某目录占多少空间
free -h # 内存使用情况
top # 实时资源监控(q 退出)
htop # 更好用的 top(需 apt/yum 装)
uptime # 系统运行时长和负载
5.3 网络诊断
ping baidu.com # 网络连通性
curl -I https://baidu.com # 只看响应头
wget https://xxx.tar.gz # 下载文件
ip addr # 查看网卡和 IP(现代命令)
ifconfig # 老命令(Ubuntu 需装 net-tools)
附录
常用命令速查(一页纸)
# 目录导航
pwd, cd, ls, ll, tree
# 文件操作
touch, mkdir -p, cp -r, mv, rm -rf
# 查看文件
cat, less, head, tail -f, echo >
# 查找
find / -name, grep -rn "keyword"
# 权限
chmod 755, chown user:group, sudo
# 用户
useradd, passwd, usermod -aG, su -
# 服务
systemctl start|stop|restart|status|enable
# 压缩
tar -czvf, tar -xzvf, unzip, zip -r
# 网络与端口
ss -tuln, lsof -i:port, ping, curl -I
# 资源
df -h, du -sh, free -h, top, htop