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_BAT01.3 帮助命令
# 查看命令帮助
man command_name
command_name --help
command_name -h
# 查看命令位置
which command_name
whereis command_name
# 查看命令类型
type command_name
# 查看内置命令帮助
help cd
help echo2. 文件和目录操作
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
EOF2.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 filename3.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 editor4. 用户和权限管理
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" >> ~/.bashrc4.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 packagename5.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 install6. 进程管理
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 -l6.4 进程优先级
# 查看优先级(NI列)
top
# 以特定优先级启动
nice -n 10 command # 优先级10(较低)
sudo nice -n -10 command # 优先级-10(较高,需root)
# 修改运行中进程优先级
renice 10 -p PID
sudo renice -10 -p PID7. 网络管理
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.yamlNetplan配置示例(静态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 807.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.com8. 磁盘和存储管理
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 blkid8.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/sdb8.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 | less8.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 08.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_data8.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/sde19. 系统服务管理
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 --failed9.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 # 限制100MB9.3 定时任务(cron)
# 编辑当前用户crontab
crontab -e
# 查看crontab
crontab -l
# 删除crontab
crontab -r
# 编辑系统crontab
sudo nano /etc/crontab
# 查看cron日志
grep CRON /var/log/syslogcrontab格式:
# 分钟 小时 日期 月份 星期 命令
# 每天凌晨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.sh9.4 系统定时任务目录
/etc/cron.d/ # 自定义定时任务文件
/etc/cron.hourly/ # 每小时执行
/etc/cron.daily/ # 每天执行
/etc/cron.weekly/ # 每周执行
/etc/cron.monthly/ # 每月执行
# 使用anacron(适合非24小时运行的机器)
sudo apt install anacron
/etc/anacrontab10. 压缩与归档
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 +1M11.2 locate/mlocate
# 安装
sudo apt install mlocate
# 更新数据库
sudo updatedb
# 快速查找
locate filename
locate -i filename # 忽略大小写
locate "*.conf" # 支持通配符
locate -n 10 pattern # 限制结果数
# 查看统计
locate -S11.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 | fzf12. 系统监控与性能
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
glances12.2 性能分析
# 查看系统调用
strace -p PID
strace -c command # 统计系统调用
# 查看库调用
ltrace command
# 性能分析
sudo perf top
sudo perf record -g command
sudo perf report
# 查看共享库依赖
ldd /path/to/executable12.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 myserver13.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 ssh13.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, exit14. 防火墙配置
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 reset14.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 DROP15. 容器与虚拟化
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 prune15.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附录:常用快捷键
终端快捷键
Vim快捷键
附录:重要文件路径
这份手册涵盖了Ubuntu 20.04及以上版本最常用的命令和操作。建议根据实际需求收藏常用部分,并通过man命令查看各命令的详细用法。
Ubuntu 20.04+ 完整命令手册
https://fxln.top/archives/1772546419466