Update All From Blog until 20260611

This commit is contained in:
2026-06-11 15:20:38 +08:00
commit 86c9cf9f1a
20 changed files with 3330 additions and 0 deletions
+590
View File
@@ -0,0 +1,590 @@
# 🐧 Debian/Linux 常用命令速查手册
# 📁1. 文件和目录操作
## 1.1 基础操作
| 命令 | 作用 | 示例 |
|------|------|------|
| ls | 列出目录内容 | `ls -la`(显示所有,含隐藏文件) |
| cd | 切换目录 | `cd /home/user` |
| pwd | 显示当前路径 | `pwd` |
| mkdir | 创建目录 | `mkdir -p dir1/dir2`(递归创建) |
| rmdir | 删除空目录 | `rmdir empty_dir` |
| rm | 删除文件或目录 | `rm -rf dir/`(递归强制删除) |
| cp | 复制 | `cp -r source/ dest/`(递归复制) |
| mv | 移动/重命名 | `mv old.txt new.txt` |
| touch | 创建空文件或更新时间戳 | `touch file.txt` |
| file | 查看文件类型 | `file unknown.bin` |
## 1.2 ls 常用参数
```bash
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示所有文件(包括 . 开头的隐藏文件)
ls -h # 人类可读的大小(1K, 234M, 2G
ls -t # 按修改时间排序
ls -r # 反向排序
ls -R # 递归显示子目录
```
ls -lah # 最常用:详细+人类可读+隐藏文件
## 1.3 rm 参数详解
| 参数 | 含义 | 说明 |
|------|------|------|
| -f | force | 强制删除,不提示,忽略不存在的文件 |
| -r 或 -R | recursive | 递归删除(删文件夹必须用) |
| -i | interactive | 删除前逐个确认 |
| -v | verbose | 显示删除过程 |
```bash
rm file.txt # 删除文件(会提示确认)
rm -f file.txt # 强制删除,不提示
rm -rf folder/ # 递归强制删除整个文件夹
rm -i *.log # 删除每个 .log 文件前确认
```
## 1.4 cp 和 mv 常用参数
```bash
cp source dest # 复制文件
cp -r src_dir/ dest_dir/ # 递归复制目录
cp -i file.txt backup/ # 覆盖前提示
cp -u file.txt backup/ # 只复制更新的文件(update
cp -p file.txt backup/ # 保留原文件属性(权限、时间)
```
```bash
mv old.txt new.txt # 重命名
mv file.txt folder/ # 移动文件
mv -i file.txt folder/ # 覆盖前提示
mv -u file.txt folder/ # 只移动更新的文件
```
# 🔐2. 权限管理
## 2.1 Linux 权限基础
每个文件/目录有三组权限:所有者(u)、所属组(g)、其他人(o)
```
-rwxr-xr--
^ ^^^ ^^^ ^^^
| | | └─ 其他人权限
| | └───── 组权限
| └───────── 所有者权限
└──────────── 类型(-文件,d目录,l链接)
r = 读 (4)
w = 写 (2)
x = 执行 (1)
```
## 2.2 常用命令
| 命令 | 作用 | 示例 |
|------|------|------|
| chmod | 修改权限 | `chmod 755 script.sh` |
| chown | 修改所有者 | `chown user:group file.txt` |
| chgrp | 修改所属组 | `chgrp staff file.txt` |
| umask | 设置默认权限掩码 | `umask 022` |
### 2.2.1 chmod 两种写法
#### 2.2.1.1 数字法(推荐):
```bash
chmod 755 file.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 secret.txt # rw-------
chmod 777 temp/ # rwxrwxrwx(危险!)
```
#### 2.2.1.2 符号法:
```bash
chmod u+x file.sh # 所有者加执行权限
chmod g-w file.txt # 组去掉写权限
chmod o=r file.txt # 其他人设为只读
chmod a+x script.sh # 所有人加执行权限(a=all
```
#### 2.2.1.3 权限数字对照表
| 数字 | 权限 | 含义 |
|------|------|------|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r-- | 只读 |
| 3 | -wx | 写+执行 |
| 2 | -w- | 只写 |
| 1 | --x | 只执行 |
| 0 | --- | 无权限 |
#### 2.2.1.4 常用权限组合
```bash
755 # rwxr-xr-x - 目录/脚本(所有者全权,其他人只读执行)
644 # rw-r--r-- - 普通文件(所有者读写,其他人只读)
600 # rw------- - 私密文件(只有所有者可读写)
700 # rwx------ - 私密目录(只有所有者可访问)
777 # rwxrwxrwx - 完全开放(危险,慎用!)
```
#### 2.2.1.5 特殊权限(高级)
```bash
权限 数字 作用
SUID 4xxx 以文件所有者身份执行(如 passwd)
SGID 2xxx 以文件所属组身份执行
Sticky 1xxx 只有所有者能删除(如 /tmp)
```
```bash
chmod 4755 file # 添加 SUID
chmod 1777 /tmp # 添加 Sticky 位
```
# 👤3. 用户和组管理
| 命令 | 作用 | 示例 |
|------|------|------|
| whoami | 显示当前用户 | `whoami` |
| id | 显示用户ID和组信息 | `id username` |
| users | 显示登录用户 | `users` |
| who | 显示谁在登录 | `who -a` |
| su | 切换用户 | `su - root` |
| sudo | 以root身份执行 | `sudo command` |
| useradd | 添加用户 | `useradd -m newuser` |
| usermod | 修改用户 | `usermod -aG sudo user` |
| userdel | 删除用户 | `userdel -r user` |
| passwd | 修改密码 | `passwd username` |
| groupadd | 添加组 | `groupadd groupname` |
| groups | 显示用户所属组 | `groups username` |
```bash
#添加新用户并创建家目录
sudo useradd -m -s /bin/bash newuser
#将用户加入 sudo 组(Debian/Ubuntu
sudo usermod -aG sudo newuser
#删除用户及家目录
sudo userdel -r olduser
#切换到 root(需要root密码)
su -
#以 root 执行单条命令
sudo apt update
```
# 🔍4. 文件查找和搜索
| 命令 | 作用 | 示例 |
|------|------|------|
| find | 按条件查找文件 | `find / -name "*.txt"` |
| locate | 快速查找(需数据库) | `locate filename` |
| which | 查找命令路径 | `which python` |
| whereis | 查找命令/源码/手册 | `whereis ls` |
| grep | 搜索文件内容 | `grep "text" file.txt` |
| awk | 文本处理 | `awk '{print $1}' file` |
| sed | 流编辑器 | `sed 's/old/new/g' file` |
## 4.1 find常用用法
```bash
#按名称查找
find /home -name "*.jpg" # 区分大小写
find /home -iname "*.jpg" # 不区分大小写
#按类型查找
find . -type f # 只找文件
find . -type d # 只找目录
find . -type l # 只找链接
#按大小查找
find / -size +100M # 大于100MB
find / -size -1k # 小于1KB
#按时间查找
find . -mtime -7 # 7天内修改过
find . -mtime +30 # 30天前修改
find . -amin -60 # 60分钟内访问过
#组合条件
find . -name "*.log" -mtime -7 # 最近7天的log文件
find . -type f -size +1G -delete # 删除大于1GB的文件
#执行操作
find . -name "*.tmp" -exec rm {} \; # 删除找到的文件
find . -name "*.txt" -exec cp {} /backup/ \; # 复制到备份目录
```
## 4.2 grep常用用法
### 4.2.1 基础搜索
```bash
grep "error" log.txt # 搜索字符串
grep -i "error" log.txt # 忽略大小写
grep -r "TODO" ./src/ # 递归搜索目录
grep -n "error" log.txt # 显示行号
grep -v "debug" log.txt # 反向匹配(不含debug的行)
```
### 4.2.2 正则表达式
```bash
grep "^start" file.txt # 以start开头的行
grep "end$" file.txt # 以end结尾的行
grep -E "error|warning" log.txt # 扩展正则(或)
```
### 4.2.3 实用组合
```bash
ps aux | grep nginx # 查找nginx进程
grep -l "ERROR" *.log # 只显示包含ERROR的文件名
grep -c "error" log.txt # 统计匹配行数
```
# 📦5. Debian 包管理(APT
| 命令 | 作用 | 示例 |
|------|------|------|
| apt update | 更新软件包列表 | `sudo apt update` |
| apt upgrade | 升级所有可升级包 | `sudo apt upgrade` |
| apt install | 安装软件包 | `sudo apt install nginx` |
| apt remove | 删除软件包(保留配置) | `sudo apt remove nginx` |
| apt purge | 完全删除(含配置) | `sudo apt purge nginx` |
| apt autoremove | 删除无用依赖 | `sudo apt autoremove` |
| apt search | 搜索软件包 | `apt search python` |
| apt show | 显示包详细信息 | `apt show nginx` |
| apt list | 列出包(--installed | `apt list --installed` |
| dpkg | 直接操作.deb文件 | `dpkg -i package.deb` |
## 5.1 常用组合
```bash
#系统更新完整流程
sudo apt update && sudo apt upgrade -y
#查找并安装软件
apt search "image editor"
sudo apt install gimp
#清理无用包
sudo apt autoremove --purge
#查看已安装包的版本
apt list --installed | grep nginx
#修复依赖问题
sudo apt --fix-broken install
```
# 🖥️6. 进程和系统监控
| 命令 | 作用 | 示例 |
|------|------|------|
| ps | 查看进程 | `ps aux` |
| top | 动态进程监控 | `top` |
| htop | 更友好的top(需安装) | `htop` |
| kill | 终止进程 | `kill -9 PID` |
| pkill | 按名称终止 | `pkill nginx` |
| jobs | 查看后台任务 | `jobs` |
|
bg | 将任务放到后台 | `bg %1` |
| fg | 将任务调到前台 | `fg %1` |
| & | 后台运行程序 | `./script.sh &` |
| nohup | 忽略挂断信号运行 | `nohup ./script.sh &` |
## 6.1 进程管理详解
```bash
#查看进程
ps aux # 所有进程(详细)
ps -ef # 所有进程(标准格式)
ps aux | grep python # 查找特定进程
#进程树
pstree -p # 显示PID
#终止进程
kill PID # 正常终止(SIGTERM
kill -9 PID # 强制终止(SIGKILL
kill -15 PID # 同 kill PID
pkill -f "python script" # 按命令行匹配终止
#优先级
nice -n 10 ./script.sh # 降低优先级(-20最高,19最低)
renice 5 -p PID # 修改运行中进程的优先级
系统资源查看
bash
#内存
free -h # 人类可读的内存使用
cat /proc/meminfo # 详细信息
#磁盘
df -h # 磁盘分区使用情况
du -sh /home/ # 目录总大小
du -h --max-depth=1 /home/ # 各子目录大小
#CPU
lscpu # CPU信息
cat /proc/cpuinfo # 详细信息
nproc # CPU核心数
#系统负载
uptime # 系统运行时间和负载
cat /proc/loadavg # 平均负载
#网络
ss -tlnp # 查看监听端口
netstat -tlnp # 同上(需安装net-tools
```
# 📀7. 磁盘和挂载
| 命令 | 作用 | 示例 |
|------|------|------|
| lsblk | 列出块设备 | `lsblk -f`(含文件系统) |
| fdisk | 分区工具 | `sudo fdisk -l` |
| mount | 挂载设备 | `mount /dev/sda1 /mnt` |
| umount | 卸载设备 | `umount /mnt` |
| df | 磁盘使用情况 | `df -h` |
| du | 目录占用空间 | `du -sh /home` |
| blkid | 查看UUID | `sudo blkid` |
| parted | GPT分区工具 | `sudo parted -l` |
## 7.1 常用操作
```bash
#查看所有磁盘和分区
lsblk -f
#挂载NTFS硬盘
sudo mount -t ntfs-3g /dev/sdb1 /mnt/data
#卸载
sudo umount /mnt/data
#查看UUID(用于fstab自动挂载)
sudo blkid
#查看磁盘使用情况
df -Th # 显示类型和人类可读大小
#查看目录大小
du -sh /* # 根目录下各文件夹大小
fstab 自动挂载示例
#编辑 /etc/fstab 添加
UUID=1234-5678 /mnt/data ntfs-3g defaults,uid=1000,gid=1000,umask=022 0 0
```
# 🌐8. 网络相关
| 命令 | 作用 | 示例 |
|------|------|------|
| ip | 网络配置(推荐) | `ip addr show` |
| ifconfig | 网络配置(旧) | `ifconfig` |
| ping | 测试连通性 | `ping google.com` |
| curl | HTTP请求 | `curl -O http://file.zip` |
| wget | 下载文件 | `wget https://example.com/file` |
| ssh | 远程连接 | `ssh user@host` |
| scp | 安全复制 | `scp file user@host:/path/` |
| rsync | 增量同步 | `rsync -avz src/ dest/` |
| netstat | 网络统计 | `netstat -tlnp` |
| ss | socket统计(推荐) | `ss -tlnp` |
## 8.1 常用操作
```bash
#查看IP地址
ip addr show
ip -4 addr show # 只显示IPv4
#测试网络
ping -c 4 8.8.8.8
#下载文件
wget -c http://bigfile.zip # 断点续传
curl -O http://file.zip # 保存为原文件名
#查看端口监听
ss -tlnp # TCP监听端口
ss -ulnp # UDP监听端口
#测试端口连通性
nc -zv google.com 80 # 需要安装 netcat
#SSH 密钥登录
ssh-keygen -t rsa -b 4096
ssh-copy-id user@host
```
# 📜9. 文本编辑和查看
| 命令 | 作用 | 示例 |
|------|------|------|
| cat | 显示文件内容 | `cat file.txt` |
| less | 分页查看(推荐) | `less large.log` |
| head | 查看文件开头 | `head -20 file.txt` |
| tail | 查看文件结尾 | `tail -f log.txt`(实时跟踪) |
| nano | 简单编辑器 | `nano config.conf` |
| vim | 高级编辑器 | `vim script.py` |
| echo | 输出文本 | `echo "Hello" > file.txt` |
| \|(管道) | 传递输出 | `cat file \| grep word` |
| > | 重定向(覆盖) | `echo text > file` |
| >> | 重定向(追加) | `echo text >> file` |
## 9.1 常用操作
```bash
#查看文件
cat file.txt # 全部显示(适合小文件)
less file.txt # 分页(空格翻页,q退出)
head -20 file.txt # 前20行
tail -f app.log # 实时跟踪日志(Ctrl+C退出)
#重定向示例
ls -la > list.txt # 覆盖写入
echo "new line" >> list.txt # 追加
command 2> error.log # 只重定向错误输出
command &> output.log # 重定向所有输出
#管道组合
dmesg | grep error # 查找内核错误
ps aux | sort -rnk3 | head -10 # CPU占用前10进程
```
# 🗜️10. 压缩和解压
## 10.1 tar(最常用)
```bash
#创建压缩包
tar -czf archive.tar.gz folder/ # gzip压缩
tar -cjf archive.tar.bz2 folder/ # bzip2压缩
tar -cvf archive.tar folder/ # 不压缩,只打包
#解压
tar -xzf archive.tar.gz # 解压到当前目录
tar -xjf archive.tar.bz2 -C /target/ # 解压到指定目录
tar -xf archive.tar # 自动识别格式
#查看压缩包内容
tar -tzf archive.tar.gz
# 数说明
#-c 创建 -x 解压 -z gzip -j bzip2 -v 显示过程 -f 文件 -C 指定目录
```
## 10.2 其他格式
```bash
#zip
zip -r archive.zip folder/
unzip archive.zip -d /target/
#7z(需安装 p7zip
7z a archive.7z folder/
7z x archive.7z -o/target/
#gz
gunzip file.gz
gzip file.txt
```
## 10.3 查看压缩文件内容(不解压)
```
zcat file.gz | head
zless file.gz
```
# 🔧11. 系统管理和维护
| 命令 | 作用 | 示例 |
|------|------|------|
| systemctl | 服务管理 | `systemctl status nginx` |
| journalctl | 查看日志 | `journalctl -u nginx -f` |
| reboot | 重启 | `sudo reboot` |
| shutdown | 关机 | `sudo shutdown -h now` |
| uname | 系统信息 | `uname -a` |
| lsb_release | 发行版信息 | `lsb_release -a` |
| uptime | 运行时间 | `uptime` |
| dmesg | 内核日志 | `dmesg \| tail` |
| crontab | 定时任务 | `crontab -e` |
## 11.1 systemctl常用命令
```bash
#服务管理
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl reload nginx # 重载配置(不中断)
systemctl enable nginx # 开机自启
systemctl disable nginx # 取消自启
systemctl status nginx # 查看状态
#查看所有服务
systemctl list-units --type=service --state=running
# 系统操作
systemctl reboot # 重启
systemctl poweroff # 关机
systemctl suspend # 挂起
```
## 11.2 journalctl日志查看
```bash
journalctl -xe # 查看最新日志(含说明)
journalctl -u nginx # 查看nginx服务日志
journalctl -u nginx -f # 实时跟踪
journalctl --since "2024-01-01" # 指定开始时间
journalctl --since today # 今天的日志
journalctl -k # 内核日志
journalctl | grep error # 搜索错误
```
## 11.3 定时任务 Crontab
```bash
crontab -e # 编辑定时任务
crontab -l # 列出当前任务
crontab -r # 删除所有任务
# 格式:分 时 日 月 周 命令
# 示例
0 2 * * * /backup.sh # 每天2点执行
*/5 * * * * /check.sh # 每5分钟执行
0 9 * * 1-5 /report.sh # 周一至周五9点
@reboot /start-service.sh # 开机执行
```
# 🎯12. 实用技巧和快捷键
## 12.1 命令行快捷键
| 快捷键 | 作用 |
|--------|------|
| Ctrl+C | 终止当前命令 |
| Ctrl+Z | 挂起当前命令(fg恢复) |
| Ctrl+D | 退出终端(相当于exit |
| Ctrl+L | 清屏(相当于clear |
| Ctrl+A | 跳到行首 |
| Ctrl+E | 跳到行尾 |
| Ctrl+U | 删除光标前所有内容 |
| Ctrl+K | 删除光标后所有内容 |
| Ctrl+W | 删除前一个单词 |
| Ctrl+R | 历史命令搜索 |
| !! | 执行上一条命令 |
| !$ | 上一条命令的最后一个参数 |
| Tab | 自动补全 |
## 12.2 环境变量
```bash
# 查看变量
echo $PATH
env # 显示所有环境变量
# 设置临时变量
export MY_VAR="value"
# 永久设置(添加到 ~/.bashrc 或 ~/.profile
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # 立即生效
```
## 12.3 重定向总结
| 符号 | 含义 |
|------|------|
| > | 标准输出重定向(覆盖) |
| >> | 标准输出重定向(追加) |
| 2> | 错误输出重定向 |
| 2>&1 | 错误输出合并到标准输出 |
| &> | 所有输出重定向 |
| < | 输入重定向 |
| \| | 管道(前一个输出作为后一个输入) |
```bash
#实用重定向示例
command > output.txt 2>&1 # 标准输出和错误都写入文件
command &> output.txt # 同上(bash简写)
command > /dev/null 2>&1 # 忽略所有输出(静默运行)
cat < file.txt # 从文件读取输入
```
## 12,4 📚快速参考卡
常用命令速查
| 要做的事 | 命令 |
|----------|------|
| 更新系统 | `sudo apt update && sudo apt upgrade` |
| 安装软件 | `sudo apt install 包名` |
| 查看IP | `ip a` |
| 查看端口 | `ss -tlnp` |
| 查看磁盘 | `df -h` |
| 查看目录大小 | `du -sh 目录` |
| 查找文件 | `find / -name 文件名` |
| 搜索内容 | `grep -r "内容" ./` |
| 实时查看日志 | `tail -f log.txt` |
| 后台运行 | `nohup 命令 &` |
| 查看进程 | `ps aux \| grep 进程名` |
| 杀掉进程 | `kill -9 PID` |
| 重启服务 | `systemctl restart 服务名` |
| 查看服务日志 | `journalctl -u 服务名 -f` |
| 压缩文件夹 | `tar -czf archive.tar.gz 文件夹/` |
| 解压 | `tar -xzf archive.tar.gz` |
| 远程拷贝 | `scp file user@host:/path/` |
| 同步文件夹 | `rsync -avz src/ dest/` |
# 13.⚠️危险命令(永远不要运行!)
| 命令 | 说明 |
|------|------|
| `rm -rf /` | 删除整个系统 |
| `rm -rf /*` | 同上 |
| `rm -rf .*` | 会匹配到 ..(上级目录)! |
| `dd if=/dev/zero of=/dev/sda` | 清空硬盘 |
| `mkfs.ext4 /dev/sda` | 格式化硬盘 |
| `:(){ :\|:& };:` | Fork炸弹(死机) |