Ubuntu 20.04+ 完整命令手册


1. 系统信息与帮助

1.1 系统基本信息

# 查看Ubuntu版本
lsb_release -a
cat /etc/os-release
​
# 查看内核版本
uname -r
uname -a
​
# 查看系统架构
dpkg --print-architecture
uname -m
​
# 查看主机名
hostname
hostnamectl
​
# 修改主机名(立即生效)
sudo hostnamectl set-hostname new-hostname
​
# 查看系统启动时间
uptime
​
# 查看系统负载
cat /proc/loadavg
​
# 查看系统日志
journalctl
journalctl -xe  # 查看详细错误日志

1.2 硬件信息

# 查看CPU信息
lscpu
cat /proc/cpuinfo
​
# 查看内存信息
free -h
cat /proc/meminfo
​
# 查看PCI设备
lspci
lspci -v  # 详细信息
​
# 查看USB设备
lsusb
lsusb -v
​
# 查看磁盘信息
lsblk
fdisk -l
df -h
​
# 查看硬件详细信息
sudo dmidecode
​
# 查看电池信息(笔记本)
upower -i /org/freedesktop/UPower/devices/battery_BAT0

1.3 帮助命令

# 查看命令帮助
man command_name
command_name --help
command_name -h
​
# 查看命令位置
which command_name
whereis command_name
​
# 查看命令类型
type command_name
​
# 查看内置命令帮助
help cd
help echo

2. 文件和目录操作

2.1 目录导航

# 显示当前目录
pwd
​
# 切换目录
cd /path/to/directory    # 绝对路径
cd relative/path         # 相对路径
cd ~                     # 回到用户主目录
cd -                     # 回到上一个目录
cd ..                    # 回到上级目录
cd ../..                 # 回到上上级目录
​
# 列出目录内容
ls                       # 基本列表
ls -l                    # 详细列表
ls -la                   # 显示隐藏文件
ls -lh                   # 人类可读大小
ls -ltr                  # 按时间排序(最近修改在后)
ls -lS                   # 按大小排序
ls --color=auto          # 彩色显示

2.2 文件和目录创建

# 创建目录
mkdir dirname
mkdir -p path/to/nested/dir    # 递归创建
mkdir -m 755 dirname           # 指定权限创建
​
# 创建空文件
touch filename
touch file1 file2 file3        # 创建多个文件
​
# 创建带内容的文件
echo "content" > file.txt
cat > file.txt << EOF
line 1
line 2
EOF

2.3 复制、移动、删除

# 复制文件
cp source.txt dest.txt
cp -r sourcedir/ destdir/           # 递归复制目录
cp -i source.txt dest.txt           # 覆盖前提示
cp -v source.txt dest.txt           # 显示详细过程
cp -p source.txt dest.txt           # 保留文件属性
​
# 移动/重命名
mv oldname.txt newname.txt
mv file.txt /path/to/destination/
mv -i source.txt dest.txt           # 覆盖前提示
​
# 删除文件
rm filename
rm -i filename                      # 删除前提示
rm -f filename                      # 强制删除
rm -r directory/                    # 递归删除目录
rm -rf directory/                   # 强制递归删除(慎用!)
​
# 安全删除(先移动到回收站)
# 需要安装 trash-cli: sudo apt install trash-cli
trash-put filename
trash-list                          # 查看回收站
trash-restore                       # 恢复文件

2.4 链接文件

# 创建硬链接(指向相同inode)
ln original.txt hardlink.txt
​
# 创建符号链接(软链接)
ln -s original.txt symlink.txt
ln -s /full/path/to/file linkname   # 建议使用绝对路径
​
# 查看链接
ls -l
readlink symlink.txt                # 查看链接指向

3. 文件查看与编辑

3.1 查看文件内容

# 查看整个文件
cat filename.txt
cat -n filename.txt                 # 显示行号
​
# 分页查看
less filename.txt
# less中操作: q退出, 空格下一页, b上一页, /搜索, n下一个匹配, N上一个匹配
​
more filename.txt
​
# 查看文件开头/结尾
head filename.txt                   # 默认前10行
head -n 20 filename.txt             # 前20行
tail filename.txt                   # 默认后10行
tail -n 20 filename.txt             # 后20行
tail -f /var/log/syslog             # 实时跟踪文件变化
​
# 查看二进制文件
hexdump -C filename
xxd filename
od -c filename

3.2 文本处理

# 统计
wc filename.txt                     # 行数、单词数、字节数
wc -l filename.txt                  # 只统计行数
wc -w filename.txt                  # 只统计单词数
​
# 排序
sort filename.txt                   # 按字母排序
sort -r filename.txt                # 反向排序
sort -n numbers.txt                 # 按数字排序
sort -k 2 filename.txt              # 按第2列排序
sort -u filename.txt                # 去重排序
​
# 去重
uniq filename.txt                   # 相邻重复行去重
uniq -c filename.txt                # 统计重复次数
uniq -d filename.txt                # 只显示重复行
​
# 比较文件
diff file1.txt file2.txt
diff -u file1.txt file2.txt         # 统一格式输出
cmp file1.bin file2.bin             # 二进制比较
​
# 文本替换
tr 'a-z' 'A-Z' < file.txt           # 小写转大写
tr -d '0-9' < file.txt              # 删除数字

3.3 文本编辑器

Nano(简单易用)

nano filename.txt
# 快捷键: Ctrl+O保存, Ctrl+X退出, Ctrl+K剪切, Ctrl+U粘贴

Vim(功能强大)

vim filename.txt
​
# 模式:
# 普通模式: 按Esc进入
# 插入模式: 按i进入, 可编辑文本
# 命令模式: 按:进入
​
# 常用命令:
# :w          保存
# :q          退出
# :wq 或 :x   保存并退出
# :q!         强制退出不保存
# :set nu     显示行号
# /text       搜索text
# n           下一个匹配
# dd          删除当前行
# yy          复制当前行
# p           粘贴
# u           撤销

其他编辑器

# 安装其他编辑器
sudo apt install emacs neovim
​
# 设置默认编辑器
sudo update-alternatives --config editor

4. 用户和权限管理

4.1 用户管理

# 查看当前用户
whoami
id
​
# 查看所有用户
cat /etc/passwd
getent passwd
​
# 添加用户
sudo adduser username               # 交互式,推荐
sudo useradd -m -s /bin/bash username
​
# 删除用户
sudo deluser username               # 保留家目录
sudo deluser --remove-home username # 删除家目录
sudo userdel -r username            # 删除用户及家目录
​
# 修改用户
sudo usermod -l newname oldname     # 改名
sudo usermod -aG sudo username      # 添加到sudo组
sudo passwd username                # 修改密码
​
# 切换用户
su - username                       # 完全切换环境
sudo -i                             # 切换到root
sudo -u username command            # 以其他用户执行命令

4.2 用户组管理

# 查看用户组
groups
groups username
getent group
​
# 创建组
sudo groupadd groupname
​
# 删除组
sudo groupdel groupname
​
# 修改组
sudo usermod -aG groupname username # 添加用户到组
sudo gpasswd -d username groupname  # 从组移除用户

4.3 文件权限

权限表示

rwx rwx rwx
|   |   |
|   |   其他用户权限
|   所属组权限
文件所有者权限
​
r = 4 (读)
w = 2 (写)
x = 1 (执行)

权限命令

# 查看权限
ls -l filename
stat filename
​
# 修改权限(数字模式)
chmod 755 file.txt          # rwxr-xr-x
chmod 644 file.txt          # rw-r--r--
chmod 777 file.txt          # rwxrwxrwx(不推荐)
​
# 修改权限(符号模式)
chmod u+x file.txt          # 所有者添加执行权限
chmod g-w file.txt          # 组移除写权限
chmod o=r file.txt          # 其他用户只有读权限
chmod a+x file.txt          # 所有用户添加执行权限
​
# 递归修改
chmod -R 755 directory/
​
# 修改所有者
sudo chown user:group file.txt
sudo chown -R user:group directory/
​
# 只修改所属组
sudo chgrp groupname file.txt
​
# 特殊权限
chmod u+s file.txt          # SUID
chmod g+s directory/        # SGID
chmod +t directory/         # Sticky Bit

默认权限(umask)

# 查看umask
umask
​
# 设置umask(临时)
umask 022
​
# 永久设置(添加到~/.bashrc)
echo "umask 022" >> ~/.bashrc

4.4 ACL(访问控制列表)

# 安装ACL工具
sudo apt install acl
​
# 查看ACL
getfacl filename
​
# 设置ACL
sudo setfacl -m u:username:rwx filename      # 给用户添加权限
sudo setfacl -m g:groupname:rx filename      # 给组添加权限
sudo setfacl -x u:username filename          # 移除用户ACL
sudo setfacl -b filename                     # 清除所有ACL
sudo setfacl -R -m u:username:rx directory/  # 递归设置

5. 软件包管理

5.1 APT包管理(推荐)

基本操作

# 更新包列表
sudo apt update
​
# 升级已安装包
sudo apt upgrade
sudo apt full-upgrade           # 完整升级(处理依赖关系变化)
​
# 安装软件包
sudo apt install packagename
sudo apt install pkg1 pkg2 pkg3 # 安装多个包
sudo apt install -y packagename # 自动确认
​
# 删除软件包
sudo apt remove packagename     # 保留配置文件
sudo apt purge packagename      # 完全删除
​
# 自动清理
sudo apt autoremove             # 删除不再需要的依赖
sudo apt autoclean              # 清理下载的包缓存
​
# 搜索包
apt search keyword
apt-cache search keyword
​
# 查看包信息
apt show packagename
apt-cache policy packagename    # 查看版本信息
​
# 查看已安装包
apt list --installed
dpkg -l | grep packagename
​
# 查看文件属于哪个包
dpkg -S /path/to/file
​
# 查看包安装的文件
dpkg -L packagename

高级APT操作

# 添加PPA源
sudo add-apt-repository ppa:username/ppaname
sudo add-apt-repository --remove ppa:username/ppaname

# 添加第三方源
sudo add-apt-repository "deb [arch=amd64] https://example.com/ubuntu focal main"

# 修复损坏的依赖
sudo apt --fix-broken install
sudo dpkg --configure -a

# 下载源码
sudo apt source packagename

# 构建依赖
sudo apt build-dep packagename

# 锁定包版本
sudo apt-mark hold packagename      # 阻止升级
sudo apt-mark unhold packagename    # 解除锁定

5.2 Snap包管理

# 搜索snap包
snap find keyword
​
# 安装snap包
sudo snap install packagename
sudo snap install packagename --classic   # 经典模式(更多权限)
​
# 查看已安装
snap list
​
# 更新snap包
sudo snap refresh packagename
sudo snap refresh                 # 更新所有
​
# 删除snap包
sudo snap remove packagename
​
# 查看snap信息
snap info packagename
​
# 查看snap服务
snap services
​
# 启用/禁用snap
sudo snap enable packagename
sudo snap disable packagename

5.3 从源码编译安装

# 安装编译工具
sudo apt install build-essential
​
# 通用编译步骤
tar -xvf software.tar.gz
cd software/
./configure --prefix=/usr/local
make
sudo make install
​
# 卸载(如果有make uninstall)
sudo make uninstall
​
# 使用checkinstall创建包(推荐)
sudo apt install checkinstall
sudo checkinstall make install

6. 进程管理

6.1 查看进程

# 查看当前终端进程
ps

# 查看所有进程
ps aux
ps -ef

# 查看特定用户进程
ps -u username

# 查看进程树
pstree
pstree -p                       # 显示PID

# 实时进程监控
top
htop                            # 需要安装: sudo apt install htop

# 更详细的系统监控
vmstat 1 10                     # 每秒刷新,共10次
iostat -x 1                     # IO统计

6.2 进程控制

# 前台运行转后台
Ctrl + Z                        # 暂停进程
bg                              # 后台继续运行
fg                              # 前台继续运行

# 直接后台运行
command &

# nohup运行(退出终端不停止)
nohup command &
nohup python script.py > output.log 2>&1 &

# 使用screen/tmux
sudo apt install screen tmux

# screen基本用法
screen -S sessionname           # 创建会话
screen -ls                      # 列出会话
screen -r sessionname           # 恢复会话
Ctrl+a, d                       # 分离会话
screen -X -S sessionname quit   # 关闭会话

# tmux基本用法
tmux new -s sessionname         # 创建会话
tmux ls                         # 列出会话
tmux attach -t sessionname      # 恢复会话
Ctrl+b, d                       # 分离会话
tmux kill-session -t sessionname # 关闭会话

6.3 终止进程

# 按PID终止
kill PID
kill -9 PID                     # 强制终止
kill -15 PID                    # 优雅终止(默认)

# 按名称终止
killall processname
pkill processname

# 发送特定信号
kill -HUP PID                   # 重新加载配置
kill -USR1 PID                  # 用户定义信号1

# 查看可用信号
kill -l

6.4 进程优先级

# 查看优先级(NI列)
top

# 以特定优先级启动
nice -n 10 command              # 优先级10(较低)
sudo nice -n -10 command        # 优先级-10(较高,需root)

# 修改运行中进程优先级
renice 10 -p PID
sudo renice -10 -p PID

7. 网络管理

7.1 网络配置(Netplan - Ubuntu 20.04+)

# 查看网络配置
ip addr
ip link

# 传统ifconfig(需安装)
sudo apt install net-tools
ifconfig

# 查看Netplan配置
ls /etc/netplan/
cat /etc/netplan/00-installer-config.yaml

# 编辑Netplan配置示例
sudo nano /etc/netplan/01-netcfg.yaml

Netplan配置示例(静态IP):

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
# 应用Netplan配置
sudo netplan apply
sudo netplan try                  # 测试配置(超时回滚)
sudo netplan generate             # 生成配置

7.2 网络诊断

# 测试连通性
ping google.com
ping -c 4 google.com              # 发送4个包
​
# 查看路由
ip route
route -n
​
# 追踪路由
traceroute google.com
sudo apt install mtr
mtr google.com                    # 实时追踪
​
# 查看DNS
nslookup google.com
dig google.com
host google.com
​
# 查看网络连接
ss -tuln                          # 查看监听端口
netstat -tuln                     # 传统方式
lsof -i :80                       # 查看占用端口的进程
​
# 抓包
sudo apt install tcpdump
sudo tcpdump -i eth0
sudo tcpdump -i eth0 port 80

7.3 网络工具

# 下载工具
wget http://example.com/file.zip
wget -c http://example.com/file.zip     # 断点续传
curl -O http://example.com/file.zip
curl -I http://example.com              # 查看HTTP头
​
# 文件传输
scp file.txt user@remote:/path/         # 上传
scp user@remote:/path/file.txt ./       # 下载
scp -r directory/ user@remote:/path/    # 递归复制
​
# rsync同步(推荐)
rsync -avz source/ dest/                # 本地同步
rsync -avz -e ssh source/ user@remote:/path/  # 远程同步
rsync -avz --delete source/ dest/       # 删除目标多余文件
​
# FTP客户端
sudo apt install lftp
lftp -u username,password ftp.example.com

8. 磁盘和存储管理

8.1 磁盘查看

# 查看磁盘空间
df -h
df -hT                          # 显示文件系统类型
​
# 查看目录大小
du -sh /path/to/directory
du -h --max-depth=1 /path/      # 查看一级子目录大小
​
# 查看磁盘分区
sudo fdisk -l
sudo parted -l
​
# 查看块设备
lsblk
lsblk -f                        # 显示文件系统
​
# 查看UUID
sudo blkid

8.2 磁盘分区

# 使用fdisk(MBR)
sudo fdisk /dev/sdb
# 常用命令: n新建, p打印, d删除, w写入, q退出
​
# 使用gdisk(GPT)
sudo apt install gdisk
sudo gdisk /dev/sdb
​
# 使用parted
sudo parted /dev/sdb
# (parted) mklabel gpt
# (parted) mkpart primary ext4 0% 100%
# (parted) quit
​
# 通知内核分区表变化
sudo partprobe /dev/sdb

8.3 文件系统管理

# 创建文件系统
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
sudo mkfs.ntfs /dev/sdb1        # 需要ntfs-3g
​
# 检查文件系统
sudo fsck /dev/sdb1
sudo e2fsck -f /dev/sdb1        # ext系列专用
​
# 调整ext大小
sudo resize2fs /dev/sdb1
​
# 查看文件系统详情
sudo tune2fs -l /dev/sda1
sudo dumpe2fs /dev/sda1 | less

8.4 挂载管理

# 临时挂载
sudo mount /dev/sdb1 /mnt
sudo mount -t ntfs-3g /dev/sdb1 /mnt
sudo mount -o remount,rw /      # 重新挂载为读写

# 卸载
sudo umount /mnt
sudo umount /dev/sdb1
sudo umount -l /mnt             # 强制卸载(懒卸载)

# 查看挂载
mount
cat /proc/mounts
findmnt

# 永久挂载(/etc/fstab)
sudo blkid /dev/sdb1            # 获取UUID
sudo nano /etc/fstab

/etc/fstab示例:

# <file system>                           <mount point>  <type>  <options>       <dump>  <pass>
UUID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx        /mnt/data      ext4    defaults        0       2
/dev/sdb1                                 /mnt/backup    ext4    defaults,noatime 0      2
//server/share                            /mnt/share     cifs    credentials=/home/user/.smbcred,iocharset=utf8,sec=ntlmssp 0 0

8.5 LVM逻辑卷管理

# 安装LVM
sudo apt install lvm2
​
# 创建物理卷
sudo pvcreate /dev/sdb1 /dev/sdc1
pvdisplay
​
# 创建卷组
sudo vgcreate vg0 /dev/sdb1 /dev/sdc1
vgdisplay
​
# 创建逻辑卷
sudo lvcreate -L 10G -n lv_data vg0
sudo lvcreate -l 100%FREE -n lv_backup vg0  # 使用全部空间
​
# 格式化逻辑卷
sudo mkfs.ext4 /dev/vg0/lv_data
​
# 扩展逻辑卷
sudo lvextend -L +5G /dev/vg0/lv_data
sudo resize2fs /dev/vg0/lv_data
​
# 缩减逻辑卷(ext4)
sudo umount /mnt/data
sudo e2fsck -f /dev/vg0/lv_data
sudo resize2fs /dev/vg0/lv_data 10G
sudo lvreduce -L 10G /dev/vg0/lv_data
sudo mount /dev/vg0/lv_data /mnt/data
​
# 删除逻辑卷
sudo umount /mnt/data
sudo lvremove /dev/vg0/lv_data

8.6 RAID配置

# 安装mdadm
sudo apt install mdadm
​
# 创建RAID 1(镜像)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
​
# 创建RAID 5
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
​
# 查看RAID状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0
​
# 保存配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
​
# 停止RAID
sudo mdadm --stop /dev/md0
​
# 添加热备盘
sudo mdadm --add /dev/md0 /dev/sde1

9. 系统服务管理

9.1 systemd基础

# 查看系统状态
systemctl status

# 服务管理
sudo systemctl start servicename
sudo systemctl stop servicename
sudo systemctl restart servicename
sudo systemctl reload servicename     # 重新加载配置(不重启)
sudo systemctl status servicename

# 开机自启
sudo systemctl enable servicename
sudo systemctl disable servicename
sudo systemctl is-enabled servicename

# 查看所有服务
systemctl list-units --type=service
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

# 查看失败的服务
systemctl --failed

9.2 日志管理(journald)

# 查看所有日志
journalctl
​
# 查看特定服务日志
journalctl -u servicename
journalctl -u servicename -f       # 实时跟踪
​
# 查看时间范围
journalctl --since "2024-01-01 10:00:00"
journalctl --since "1 hour ago"
journalctl --since today --until "2 hours ago"
​
# 查看启动日志
journalctl -b                      # 当前启动
journalctl -b -1                   # 上一次启动
​
# 限制输出
journalctl -n 50                   # 最后50行
journalctl --disk-usage            # 查看日志占用空间
​
# 清理日志
sudo journalctl --vacuum-time=7d   # 保留7天
sudo journalctl --vacuum-size=100M # 限制100MB

9.3 定时任务(cron)

# 编辑当前用户crontab
crontab -e
​
# 查看crontab
crontab -l
​
# 删除crontab
crontab -r
​
# 编辑系统crontab
sudo nano /etc/crontab
​
# 查看cron日志
grep CRON /var/log/syslog

crontab格式:

# 分钟 小时 日期 月份 星期 命令
# 每天凌晨2点执行备份
0 2 * * * /home/user/backup.sh
​
# 每5分钟执行一次
*/5 * * * * /path/to/script.sh
​
# 每周一早上8点
0 8 * * 1 /path/to/script.sh
​
# 每月1号凌晨3点
0 3 1 * * /path/to/script.sh

9.4 系统定时任务目录

/etc/cron.d/          # 自定义定时任务文件
/etc/cron.hourly/     # 每小时执行
/etc/cron.daily/      # 每天执行
/etc/cron.weekly/     # 每周执行
/etc/cron.monthly/    # 每月执行
​
# 使用anacron(适合非24小时运行的机器)
sudo apt install anacron
/etc/anacrontab

10. 压缩与归档

10.1 tar归档

# 创建tar包
tar -cvf archive.tar file1 file2
tar -cvf archive.tar directory/
​
# 创建压缩tar包
tar -czvf archive.tar.gz directory/     # gzip压缩
tar -cjvf archive.tar.bz2 directory/    # bzip2压缩
tar -cJvf archive.tar.xz directory/     # xz压缩
​
# 解压
tar -xvf archive.tar
tar -xzvf archive.tar.gz
tar -xjvf archive.tar.bz2
tar -xJvf archive.tar.xz
​
# 查看内容
tar -tvf archive.tar
​
# 提取特定文件
tar -xvf archive.tar path/to/file
​
# 排除文件
tar -czvf backup.tar.gz --exclude='*.log' --exclude='tmp/' /home/user/

10.2 其他压缩工具

# gzip/gunzip
gzip file.txt                   # 压缩为file.txt.gz
gunzip file.txt.gz              # 解压
gzip -k file.txt                # 保留原文件
gzip -r directory/              # 递归压缩

# bzip2/bunzip2
bzip2 file.txt
bunzip2 file.txt.bz2

# xz/unxz
xz file.txt
unxz file.txt.xz

# zip/unzip
sudo apt install zip unzip
zip -r archive.zip directory/
unzip archive.zip
unzip archive.zip -d /path/to/extract/
unzip -l archive.zip            # 查看内容

# 7z
sudo apt install p7zip-full
7z a archive.7z file1 file2
7z x archive.7z                 # 解压
7z l archive.7z                 # 列出内容

11. 搜索与查找

11.1 find命令

# 按名称查找
find /path -name "filename"
find /path -iname "filename"    # 忽略大小写
find /path -name "*.txt"
​
# 按类型查找
find /path -type f              # 文件
find /path -type d              # 目录
find /path -type l              # 符号链接
​
# 按大小查找
find /path -size +100M          # 大于100MB
find /path -size -1k            # 小于1KB
find /path -size 10M            # 等于10MB
​
# 按时间查找
find /path -mtime -7            # 7天内修改
find /path -mtime +30           # 30天前修改
find /path -atime +90           # 90天前访问
find /path -ctime -1            # 1天内状态改变
​
# 按权限查找
find /path -perm 644
find /path -perm /u=s           # 查找SUID文件
​
# 执行操作
find /path -name "*.log" -delete                    # 删除
find /path -name "*.old" -exec rm {} \;             # 执行命令
find /path -name "*.txt" -exec cp {} /backup/ \;
find /path -type f -exec grep -l "pattern" {} \;    # 查找包含内容的文件
​
# 限制目录深度
find /path -maxdepth 2 -name "*.txt"
​
# 组合条件
find /path \( -name "*.txt" -o -name "*.log" \) -size +1M

11.2 locate/mlocate

# 安装
sudo apt install mlocate
​
# 更新数据库
sudo updatedb
​
# 快速查找
locate filename
locate -i filename              # 忽略大小写
locate "*.conf"                 # 支持通配符
locate -n 10 pattern            # 限制结果数
​
# 查看统计
locate -S

11.3 grep文本搜索

# 基本搜索
grep "pattern" file.txt
grep -i "pattern" file.txt      # 忽略大小写
grep -v "pattern" file.txt      # 反向匹配
grep -n "pattern" file.txt      # 显示行号
grep -c "pattern" file.txt      # 统计匹配数

# 递归搜索
grep -r "pattern" /path/
grep -ri "pattern" /path/

# 正则表达式
grep -E "pattern1|pattern2" file.txt    # 扩展正则
grep -P "\d{3}-\d{4}" file.txt          # Perl正则

# 显示上下文
grep -C 3 "pattern" file.txt    # 前后3行
grep -B 2 "pattern" file.txt    # 前2行
grep -A 2 "pattern" file.txt    # 后2行

# 在压缩文件中搜索
zgrep "pattern" file.gz
zcat file.gz | grep "pattern"

# 其他grep工具
egrep = grep -E
fgrep = grep -F(固定字符串)

11.4 其他搜索工具

# ack(更适合代码搜索)
sudo apt install ack
ack "pattern" --type=python

# ripgrep(更快)
sudo apt install ripgrep
rg "pattern" /path/

# fzf(交互式模糊查找)
sudo apt install fzf
find . -type f | fzf

12. 系统监控与性能

12.1 系统资源监控

# CPU和内存
top
htop
free -h
cat /proc/cpuinfo
cat /proc/meminfo
​
# 磁盘IO
iostat -x 1 10                # 需要sysstat包
iotop                         # 需要安装
​
# 网络IO
iftop                         # 需要安装
nethogs                       # 按进程显示网络流量
​
# 综合监控
sudo apt install glances
glances

12.2 性能分析

# 查看系统调用
strace -p PID
strace -c command             # 统计系统调用
​
# 查看库调用
ltrace command
​
# 性能分析
sudo perf top
sudo perf record -g command
sudo perf report
​
# 查看共享库依赖
ldd /path/to/executable

12.3 日志分析

# 系统日志
sudo tail -f /var/log/syslog
sudo tail -f /var/log/auth.log    # 认证日志
sudo tail -f /var/log/kern.log    # 内核日志

# dmesg(内核环缓冲)
dmesg
dmesg | grep -i error
sudo dmesg -w                       # 实时跟踪

# 查看启动日志
sudo journalctl -b

# 查看特定时间日志
sudo journalctl --since "1 hour ago" --until "30 minutes ago"

13. SSH与远程管理

13.1 SSH客户端

# 基本连接
ssh user@hostname
ssh -p 2222 user@hostname       # 指定端口
ssh -i ~/.ssh/id_rsa user@host  # 指定密钥
​
# SSH配置(~/.ssh/config)
Host myserver
    HostName 192.168.1.100
    User username
    Port 2222
    IdentityFile ~/.ssh/id_rsa
​
# 之后可直接使用
ssh myserver

13.2 SSH密钥管理

# 生成密钥对
ssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519           # 更安全的算法
​
# 复制公钥到服务器
ssh-copy-id user@hostname
ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
​
# 手动添加公钥
cat ~/.ssh/id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
​
# 管理SSH代理
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
ssh-add -l                      # 列出已添加的密钥
ssh-add -D                      # 删除所有密钥

13.3 SSH服务器配置

# 编辑配置
sudo nano /etc/ssh/sshd_config

# 常用安全配置
Port 2222                       # 修改默认端口
PermitRootLogin no              # 禁止root登录
PasswordAuthentication no       # 禁用密码认证(仅用密钥)
PubkeyAuthentication yes        # 启用密钥认证
MaxAuthTries 3                  # 最大尝试次数
ClientAliveInterval 300         # 心跳检测
ClientAliveCountMax 2

# 重启SSH服务
sudo systemctl restart sshd
sudo systemctl restart ssh

13.4 远程文件传输

# scp
scp file.txt user@host:/path/
scp -r directory/ user@host:/path/
scp -P 2222 file.txt user@host:/path/
scp user@host:/path/file.txt ./
​
# rsync over SSH
rsync -avz -e ssh local/ user@host:/remote/path/
rsync -avz --delete -e ssh local/ user@host:/remote/path/
​
# sftp
sftp user@hostname
# sftp> put localfile /remotepath/
# sftp> get /remotepath/file ./
# sftp> ls, cd, pwd, exit

14. 防火墙配置

14.1 UFW(Uncomplicated Firewall)

# 查看状态
sudo ufw status
sudo ufw status verbose
sudo ufw status numbered
​
# 启用/禁用
sudo ufw enable
sudo ufw disable
​
# 默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
​
# 允许/拒绝连接
sudo ufw allow 22
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080:8090/tcp      # 端口范围
​
sudo ufw deny 3306
sudo ufw delete allow 80
​
# 按服务名
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 'Nginx Full'
​
# 按IP
sudo ufw allow from 192.168.1.100
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw deny from 10.0.0.0/8
​
# 删除规则
sudo ufw delete 3                 # 按编号删除
sudo ufw delete allow 80
​
# 重置
sudo ufw reset

14.2 iptables(底层)

# 查看规则
sudo iptables -L
sudo iptables -L -v -n
sudo iptables -L --line-numbers
​
# 保存/恢复规则
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
​
# 基本规则示例
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -P INPUT DROP

15. 容器与虚拟化

15.1 Docker

# 安装Docker
sudo apt install docker.io
# 或官方源
curl -fsSL https://get.docker.com | sh
​
# 启动服务
sudo systemctl start docker
sudo systemctl enable docker
​
# 免sudo使用(需重新登录)
sudo usermod -aG docker $USER
​
# 镜像管理
docker pull imagename:tag
docker images
docker rmi image_id
docker build -t myimage:tag .
​
# 容器管理
docker run -d --name mycontainer -p 8080:80 imagename
docker ps
docker ps -a
docker start/stop/restart container_id
docker rm container_id
docker exec -it container_id /bin/bash
​
# 查看日志
docker logs container_id
docker logs -f container_id
​
# 数据卷
docker volume create myvolume
docker run -v myvolume:/data imagename
docker run -v /host/path:/container/path imagename
​
# 网络
docker network ls
docker network create mynetwork
docker run --network mynetwork imagename
​
# 清理
docker system prune               # 清理未使用资源
docker volume prune
docker image prune

15.2 Docker Compose

# 安装
sudo apt install docker-compose
# 或新版本
sudo apt install docker-compose-plugin
​
# 基本命令
docker-compose up                 # 启动
docker-compose up -d              # 后台启动
docker-compose down               # 停止并删除
docker-compose ps
docker-compose logs -f
docker-compose exec service_name bash
docker-compose build              # 重建镜像
docker-compose pull               # 拉取最新镜像

15.3 KVM/QEMU虚拟化

# 安装
sudo apt install qemu-kvm libvirt-daemon-system virt-manager
​
# 添加到libvirt组
sudo usermod -aG libvirt $USER
​
# 管理虚拟机
virsh list --all
virsh start vmname
virsh shutdown vmname
virsh destroy vmname              # 强制关闭
virsh edit vmname
virsh undefine vmname             # 删除定义
​
# 使用virt-manager(图形界面)
virt-manager

附录:常用快捷键

终端快捷键

快捷键

功能

Ctrl + C

终止当前进程

Ctrl + Z

暂停当前进程

Ctrl + D

退出终端/EOF

Ctrl + L

清屏

Ctrl + A

光标移到行首

Ctrl + E

光标移到行尾

Ctrl + U

删除光标前所有字符

Ctrl + K

删除光标后所有字符

Ctrl + W

删除前一个单词

Ctrl + R

历史命令搜索

Ctrl + G

取消搜索

Tab

自动补全

Tab ×2

显示所有补全选项

!!

执行上一条命令

!n

执行历史第n条命令

!$

上条命令的最后一个参数

Vim快捷键

快捷键

功能

i

插入模式

Esc

普通模式

:w

保存

:q

退出

:wq

保存并退出

:q!

强制退出

dd

删除行

yy

复制行

p

粘贴

u

撤销

Ctrl + R

重做

/text

搜索

n

下一个匹配

N

上一个匹配

gg

跳到文件开头

G

跳到文件结尾

:%s/old/new/g

全局替换


附录:重要文件路径

路径

说明

/etc/passwd

用户账户信息

/etc/shadow

用户密码(加密)

/etc/group

用户组信息

/etc/hosts

主机名解析

/etc/resolv.conf

DNS配置

/etc/fstab

文件系统挂载表

/etc/crontab

系统定时任务

/etc/apt/sources.list

软件源列表

/var/log/syslog

系统日志

/var/log/auth.log

认证日志

/proc/

进程和系统信息

/sys/

系统设备和内核信息

/dev/

设备文件

/tmp/

临时文件(重启清空)

/var/tmp/

长期临时文件


这份手册涵盖了Ubuntu 20.04及以上版本最常用的命令和操作。建议根据实际需求收藏常用部分,并通过man命令查看各命令的详细用法。


Ubuntu 20.04+ 完整命令手册
https://fxln.top/archives/1772546419466
作者
Administrator
发布于
2026年03月03日
许可协议