云镜之端

Linux&MacOS常用命令

Linux / macOS 常用命令手册 适用对象:日常开发、服务器运维、Docker 容器编排 系统覆盖:Ubuntu/Debian、CentOS/RHEL、macOS 最后更新:9/8/2026 目录 一、系统与用户管理 二、文件与目录操作

  • 作者
  • 1 分钟阅读
评论
Linux&MacOS常用命令

Linux / macOS 常用命令手册

适用对象:日常开发、服务器运维、Docker 容器编排
系统覆盖:Ubuntu/Debian、CentOS/RHEL、macOS
最后更新:9/8/2026


目录


一、系统与用户管理

SSH 服务配置

# 编辑 SSH 配置文件
nano /etc/ssh/sshd_config

# 修改完配置后重启 SSH 服务
systemctl restart sshd        # Linux (systemd)

用户与密码

# 修改 root 用户密码
passwd root

# 修改当前用户密码
passwd

# 切换用户
su - username
sudo -i                       # 切换到 root

# 添加用户
useradd username              # Linux
adduser username              # Linux (交互式)
dscl . -create /Users/username # macOS (不常用)

# 删除用户
userdel -r username           # -r 同时删除家目录

# 查看当前登录用户
whoami
who                           # 所有登录用户
id                            # 当前用户 UID/GID

主机名

# 查看主机名
hostname
hostnamectl                   # Linux (systemd)

# 临时修改主机名
hostname new-name

# 永久修改主机名 (Linux)
hostnamectl set-hostname new-hostname

# macOS 修改主机名
sudo scutil --set HostName new-hostname
sudo scutil --set ComputerName new-hostname

关机与重启

# 立刻关机
shutdown -h now
poweroff
halt

# 定时关机 (10 分钟后)
shutdown -h 10

# 取消定时关机
shutdown -c

# 重启
shutdown -r now
reboot

# macOS 关机
sudo shutdown -h now

网络配置

# IPv4 DHCP 配置(Debian/Ubuntu /etc/network/interfaces)
auto ens3
iface ens3 inet dhcp

# IPv6 DHCP
iface ens3 inet6 dhcp

# 静态 IP 示例
iface ens3 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1

# 重启网络服务
systemctl restart networking   # Debian/Ubuntu
systemctl restart NetworkManager  # CentOS/桌面版

# macOS 查看 IP
ifconfig | grep "inet "
ipconfig getifaddr en0         # macOS 获取 en0 IP

二、文件与目录操作

基础操作

# 查看当前路径
pwd

# 列出文件
ls
ls -l                         # 详细信息
ls -la                        # 包含隐藏文件
ls -lh                        # 人类可读大小
ls -lt                        # 按修改时间排序
ls -ltr                       # 按时间倒序

# 切换目录
cd /path/to/dir
cd ~                          # 进入家目录
cd -                          # 返回上一次所在目录
cd ..                         # 上一级

# 创建目录
mkdir dirname
mkdir -p path/to/dir          # 递归创建

# 创建文件
touch filename
touch file1 file2 file3

# 复制
cp src dst
cp -r src/ dst/               # 递归复制目录
cp -i src dst                 # 覆盖前询问
cp -p src dst                 # 保留权限、时间戳

# 移动 / 重命名
mv src dst
mv file1 file2 /target/dir/    # 批量移动

# 删除
rm filename
rm -r dirname/                 # 递归删除
rm -rf dirname/                # 强制递归删除(谨慎!)
rm -i file                     # 删除前确认

查找文件

# find:功能强大
find /path -name "filename"
find /path -name "*.log"
find /path -type f -size +100M      # 大于 100MB 的文件
find /path -type f -mtime -7        # 7 天内修改过的文件
find /path -type f -user username   # 按属主查找
find /path -type f -perm 0644       # 按权限查找

# 执行动作
find /path -name "*.log" -exec rm {} \;

# locate:基于数据库(速度快)
locate filename
sudo updatedb                  # 更新数据库

# which / whereis:查找可执行文件
which python
whereis nginx

链接

# 创建软链接(类似 Windows 快捷方式)
ln -s /target/path linkname

# 创建硬链接
ln /target/file hardlink

三、文本处理与查看

查看文件内容

cat filename                  # 全部输出
less filename                 # 分页查看(上下箭头/q 退出)
more filename                 # 分页查看(空格翻页)
head -n 20 filename           # 前 20 行
tail -n 20 filename           # 后 20 行
tail -f filename              # 实时跟踪日志(Ctrl+C 退出)
tail -F filename              # 跟踪并自动重试打开(文件被重建也能继续)

文本处理三剑客

# grep:搜索文本
grep "pattern" file
grep -i "pattern" file        # 忽略大小写
grep -r "pattern" /path       # 递归搜索目录
grep -n "pattern" file        # 显示行号
grep -v "pattern" file        # 反向匹配
grep -E "pat1|pat2" file      # 多个模式
grep -c "pattern" file        # 统计匹配行数
grep -l "pattern" *.txt       # 只显示文件名

# sed:流编辑器
sed -i 's/old/new/g' file     # 原地替换
sed -n '10,20p' file          # 打印 10-20 行
sed '/pattern/d' file         # 删除匹配行
sed -i '$a\new line' file     # 文件末尾追加一行

# awk:文本分析
awk '{print $1}' file                 # 打印第一列
awk -F: '{print $1, $3}' /etc/passwd  # 指定分隔符
awk '$3 > 100' file                   # 条件过滤
awk '{sum += $1} END {print sum}' file # 求和

其他实用工具

# sort / uniq
sort file                     # 排序
sort -n file                  # 按数字排序
sort -r file                  # 倒序
sort -k2 file                 # 按第二列排序
sort file | uniq              # 去重(需先排序)
sort file | uniq -c           # 统计每行重复次数

# wc:统计
wc -l file                    # 行数
wc -c file                    # 字节数
wc -w file                    # 单词数

# cut / paste / tr
cut -d: -f1 /etc/passwd       # 按 : 分割取第一列
cut -c1-10 file               # 取每行 1-10 字符
tr 'a-z' 'A-Z' < file         # 大小写转换
tr -d '\r' < file             # 删除回车符

# diff / patch
diff file1 file2
diff -u file1 file2 > patch.diff
patch < patch.diff

四、网络相关

网络工具

# 查询所有占用的端口
apt install net-tools && netstat -tunlp        # Debian/Ubuntu
yum install net-tools && netstat -tunlp        # CentOS
ss -tunlp                                     # 现代替代

# 常用 netstat 选项
netstat -tunlp                                # TCP/UDP + 数字地址 + 监听 + 进程
netstat -an                                   # 所有连接
netstat -s                                    # 统计信息

# ip 命令(替代 ifconfig)
ip addr                                       # 查看所有 IP
ip addr show eth0
ip route                                      # 查看路由表
ip link                                       # 查看网卡
ip -s link                                    # 网卡统计

# ping / traceroute
ping host
ping -c 4 host                                 # 发送 4 个包
traceroute host
tracepath host

# DNS 查询
nslookup domain
dig domain
dig +trace domain
host domain

# 下载
wget URL
wget -O filename URL                           # 指定文件名
curl -O URL                                    # curl 下载
curl -o filename URL
curl -I URL                                    # 只看响应头
curl -X POST -d "data" URL                     # POST 请求
curl -L URL                                    # 跟随重定向

防火墙

# ufw(Ubuntu)
ufw status
ufw allow 22/tcp
ufw allow 80/tcp
ufw enable
ufw disable

# firewalld(CentOS)
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

# iptables(通用)
iptables -L
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

macOS 网络相关

# 查看网络接口
ifconfig
networksetup -listallhardwareports

# Wi-Fi
networksetup -setairportnetwork en0 SSID PASSWORD

# DNS
networksetup -setdnsservers Wi-Fi 8.8.8.8 1.1.1.1

# 抓包
sudo tcpdump -i en0 port 80

五、进程与服务管理

systemd(现代 Linux)

# 服务管理
systemctl start service-name
systemctl stop service-name
systemctl restart service-name
systemctl reload service-name
systemctl status service-name
systemctl enable service-name    # 开机自启
systemctl disable service-name

# 查看所有服务
systemctl list-units --type=service
systemctl list-unit-files        # 所有已安装的服务

# 系统控制
systemctl reboot
systemctl poweroff
systemctl suspend

进程查看与管理

# 进程列表
ps aux
ps -ef
ps aux | grep nginx

# 实时进程监控
top
htop                            # 更友好的交互界面(需安装)

# 杀进程
kill PID
kill -9 PID                      # 强制
killall process-name
pkill -f "pattern"

# 后台运行
nohup command &                  # 不挂起运行
command &                        # 后台运行
jobs                             # 查看当前 shell 的后台任务
fg %1                             # 把后台任务调到前台
bg %1                             # 让暂停的任务在后台继续

信号

kill -l                          # 查看所有信号
kill -HUP PID                    # 1 - 重新加载配置(nginx 等)
kill -USR1 PID                   # 10 - 用户自定义信号 1
kill -USR2 PID                   # 12 - 用户自定义信号 2

六、SSH 与远程登录

基本连接

ssh user@host
ssh -p 2222 user@host            # 指定端口
ssh -i ~/.ssh/id_rsa user@host   # 指定私钥
ssh -L 8080:localhost:80 user@host  # 本地端口转发
ssh -R 8080:localhost:80 user@host  # 远程端口转发
ssh -D 1080 user@host            # 动态转发(SOCKS 代理)

密钥管理

# 生成密钥对
ssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519                       # 更现代的算法
ssh-keygen -t rsa -C "comment" -f filename  # 自定义注释和文件名

# 复制公钥到远程(需要密码登录时)
ssh-copy-id user@host
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

# 手动复制
cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

SCP / SFTP 文件传输

# scp:基于 SSH 的拷贝
scp file user@host:/path/
scp -r dir/ user@host:/path/
scp user@host:/path/file ./local/
scp -P 2222 file user@host:/path/      # 大写 P 指定端口

# sftp:交互式文件传输
sftp user@host
> put localfile
> get remotefile
> ls
> cd
> exit

配置与排查

# 客户端配置 ~/.ssh/config
Host myserver
    HostName 192.168.1.10
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_rsa

# 然后就能简写
ssh myserver

# 调试连接
ssh -vvv user@host

七、压缩与解压

tar

# 打包
tar -cvf archive.tar file1 dir1
tar -czvf archive.tar.gz file1 dir1     # gzip 压缩
tar -cjvf archive.tar.bz2 file1 dir1   # bzip2 压缩
tar -cJvf archive.tar.xz file1 dir1    # 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 -tzvf archive.tar.gz

# 指定解压目录
tar -xzvf archive.tar.gz -C /target/dir

zip / unzip

# 压缩
zip archive.zip file1 file2
zip -r archive.zip dir/                 # 递归压缩目录

# 解压
unzip archive.zip
unzip archive.zip -d /target/dir         # 指定目录
unzip -l archive.zip                    # 查看内容

其他格式

gzip file                  # 压缩(源文件会被替换为 file.gz)
gunzip file.gz
bzip2 file
bunzip2 file.bz2
xz file
unxz file.xz

# 7z(需安装)
7z a archive.7z files...
7z x archive.7z

八、权限管理

基础权限

# 查看权限
ls -l
stat file

# 数字方式(r=4, w=2, x=1)
chmod 755 file             # rwxr-xr-x
chmod 644 file             # rw-r--r--
chmod -R 755 dir/          # 递归

# 符号方式
chmod u+x file             # 属主增加执行权限
chmod g-w file             # 属组去掉写权限
chmod o=r file             # 其他人只读
chmod a+x file             # 所有人加执行权限

# 属主 / 属组
chown user:group file
chown -R user:group dir/
chown user file
chgrp group file

特殊权限

chmod u+s file             # SUID - 以属主身份执行
chmod g+s file             # SGID - 以属组身份执行
chmod +t dir               # Sticky - 仅文件主可删除

# 文件属性(扩展属性)
chattr +i file             # 不可修改(root 也无法删除)
chattr +a file             # 仅可追加
lsattr file

ACL(访问控制列表)

getfacl file
setfacl -m u:user:rwx file
setfacl -m g:group:rx file
setfacl -x u:user file
setfacl -b file             # 清除所有 ACL

九、环境变量

Linux(bash)

# 临时设置(当前会话)
export PATH=$PATH:/opt/myapp/bin
export MY_VAR="hello"

# 永久设置:写入 ~/.bashrc(交互式 shell)
echo 'export PATH=$PATH:/mnt/xxx' >> ~/.bashrc
source ~/.bashrc

# 系统级:写入 /etc/profile.d/myapp.sh(推荐)
echo 'export PATH=$PATH:/opt/myapp/bin' | sudo tee /etc/profile.d/myapp.sh
sudo chmod +x /etc/profile.d/myapp.sh

# 查看环境变量
env
echo $PATH
echo $HOME
printenv PATH

macOS(zsh)

# 临时设置
export PATH=$PATH:/Users/l3126596029/Code/xxx
export MY_VAR="hello"

# 永久设置:写入 ~/.zshrc
echo 'export PATH=$PATH:/Users/l3126596029/Code/xxx' >> ~/.zshrc
source ~/.zshrc

# PATH 路径顺序(登录顺序)
# /etc/zshenv → ~/.zshenv → /etc/zprofile → ~/.zprofile
# → /etc/zshrc → ~/.zshrc → /etc/zlogin → ~/.zlogin

# 仅 GUI 应用可见的环境变量(macOS)
launchctl setenv MY_VAR "hello"     # 临时
# 永久:写入 ~/.MacOSX/environment.plist 或 ~/Library/LaunchAgents/*.plist

通用操作

# 取消设置
unset MY_VAR

# 设置代理
export http_proxy=http://proxy:8080
export https_proxy=http://proxy:8080
export no_proxy="localhost,127.0.0.1"

# 查看生效的 PATH 顺序
echo $PATH | tr ':' '\n'

十、包管理

Debian / Ubuntu(apt)

# 更新索引
sudo apt update

# 升级所有包
sudo apt upgrade
sudo apt full-upgrade        # 处理依赖变化

# 安装 / 卸载
sudo apt install package
sudo apt remove package
sudo apt purge package       # 同时删除配置
sudo apt autoremove          # 删除无用的依赖

# 搜索
apt search keyword
apt show package             # 查看包信息

# 已安装列表
apt list --installed
dpkg -l | grep package

macOS(Homebrew)

# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 搜索 / 安装 / 卸载
brew search package
brew install package
brew uninstall package

# 更新
brew update
brew upgrade                 # 升级所有包
brew upgrade package         # 升级指定包

# 维护
brew cleanup
brew doctor
brew list                    # 已安装列表
brew info package            # 包信息
brew deps package            # 查看依赖

# Cask(GUI 应用)
brew install --cask app-name
brew uninstall --cask app-name

通用工具

# snap(Ubuntu)
sudo snap install package
sudo snap list

# flatpak
flatpak install package
flatpak list

# nix
nix-env -iA nixpkgs.package
nix-env --list-generations

十一、Docker 常用命令

镜像管理

# 搜索 / 拉取
docker search keyword
docker pull image:tag                # 默认 tag 为 latest
docker pull nginx:1.25-alpine

# 查看本地镜像
docker images
docker image ls
docker images -a                     # 包含中间层

# 删除镜像
docker rmi image-id
docker rmi image:tag
docker image rm image-id
docker image prune                   # 删除 dangling 镜像
docker image prune -a                # 删除所有未被使用的镜像

# 镜像标签
docker tag source:tag target:tag
docker tag myapp:1.0 username/myapp:1.0

# 推送 / 拉取(Registry)
docker login
docker login registry.example.com
docker push username/myapp:1.0
docker pull username/myapp:1.0

# 构建镜像
docker build -t myapp:1.0 .
docker build -t myapp:1.0 -f Dockerfile.dev .
docker build --no-cache -t myapp:1.0 .
docker build --build-arg KEY=value -t myapp:1.0 .

# 镜像历史 / 信息
docker history image:tag
docker inspect image:tag

# 导出 / 导入
docker save -o myapp.tar image:tag
docker load -i myapp.tar

# 从容器提交镜像
docker commit -m "msg" container-id new-image:tag

容器管理

# 运行容器
docker run -d --name myapp -p 8080:80 image:tag       # 后台运行
docker run -it --name box image:tag /bin/bash         # 交互式
docker run --rm -it image:tag sh                      # 退出后自动删除
docker run -d --name myapp -p 80:80 -v /host:/container image:tag
docker run -d --restart=always --name myapp image:tag # 开机自启
docker run -d -e KEY=value --env-file .env image:tag  # 环境变量
docker run -d --network host image:tag                # 主机网络
docker run -d --name myapp --hostname myhost image:tag

# 常用参数
# -d                后台运行
# -i, -t            交互式 / 分配 TTY
# --name            指定容器名
# -p host:container 端口映射
# -P                随机端口映射
# -v host:container 挂载卷
# --rm              退出后自动删除
# -e KEY=value      环境变量
# --restart         重启策略(no/always/on-failure/unless-stopped)
# --network         网络模式(bridge/host/none/custom)
# --privileged      特权模式
# --user            运行用户
# --memory          内存限制
# --cpus            CPU 限制

# 查看容器
docker ps                       # 运行中的
docker ps -a                    # 所有
docker ps -q                    # 只显示 ID
docker ps -s                    # 显示大小

# 启动 / 停止 / 重启
docker start container
docker stop container
docker restart container
docker pause container
docker unpause container

# 删除容器
docker rm container
docker rm -f container          # 强制(运行中的也能删)
docker container prune          # 删除所有已停止的

# 进入容器
docker exec -it container /bin/bash
docker exec -it container sh
docker attach container          # 附着到主进程(Ctrl+P+Q 退出)

# 查看日志
docker logs container
docker logs -f container        # 实时跟踪
docker logs --tail 100 container
docker logs --since 10m container # 最近 10 分钟

# 容器信息
docker inspect container
docker stats                    # 资源使用(实时)
docker stats container
docker top container            # 容器内进程
docker port container           # 端口映射

# 文件拷贝
docker cp file container:/path/
docker cp container:/path/file ./

# 容器内执行命令
docker exec container ls /

# 导出 / 导入容器(保存为镜像)
docker export container > myapp.tar
docker import myapp.tar myapp:1.0

# 重命名
docker rename old-name new-name

网络管理

# 查看网络
docker network ls
docker network inspect bridge

# 创建网络
docker network create mynet
docker network create --driver bridge mynet
docker network create --subnet 10.0.0.0/24 mynet

# 连接 / 断开
docker network connect mynet container
docker network disconnect mynet container

# 删除网络
docker network rm mynet
docker network prune

数据卷管理

# 查看卷
docker volume ls
docker volume inspect myvol

# 创建卷
docker volume create myvol

# 删除卷
docker volume rm myvol
docker volume prune

# 绑定挂载 vs 命名卷
# -v /host/path:/container/path       绑定挂载
# -v myvol:/container/path            命名卷
# --mount type=bind,source=/host,target=/container
# --mount type=volume,source=myvol,target=/container

系统维护

# 查看 Docker 系统状态
docker info
docker version
docker system df               # 磁盘占用
docker system events           # 实时事件

# 清理
docker system prune            # 清理停止的容器、未使用的网络、dangling 镜像
docker system prune -a         # 清理所有未使用的镜像
docker system prune --volumes  # 同时清理卷

# cgroup / 资源限制
docker run -m 512m --cpus=1.0 image:tag

十二、Docker Compose 常用命令

以下命令在有 docker-compose.yml 的目录下执行。
Docker Compose V2(Docker 20.10+)使用 docker compose(无连字符)。
V1(独立工具)使用 docker-compose(有连字符)。本文以 V2 为例。

基本控制

# 启动服务(前台看日志,Ctrl+C 停止)
docker compose up

# 后台启动
docker compose up -d
docker compose up -d --build   # 先构建再启动

# 停止 / 启动 / 重启
docker compose stop
docker compose start
docker compose restart

# 停止并删除容器、网络
docker compose down
docker compose down -v          # 同时删除卷
docker compose down --rmi all   # 同时删除镜像

# 查看状态
docker compose ps
docker compose ls -a            # 所有项目
docker compose top              # 进程信息

构建与拉取

# 构建 / 重新构建
docker compose build
docker compose build --no-cache
docker compose build service-name

# 拉取镜像
docker compose pull

# 强制重建
docker compose up -d --force-recreate
docker compose up -d --build --force-recreate

查看日志与进程

# 日志
docker compose logs
docker compose logs -f          # 实时跟踪
docker compose logs --tail 100
docker compose logs service-name
docker compose logs -f --since 10m

# 进程
docker compose top
docker compose ps

执行命令

# 在服务容器内执行命令
docker compose exec web ls /
docker compose exec web bash
docker compose exec -u root web bash

# 类似 run 但启动一次性容器
docker compose run --rm web python manage.py migrate
docker compose run --rm web bash

扩缩容

# 启动 N 个实例
docker compose up -d --scale web=3

# 限制范围(注意:仅适用于未指定 replicas 的服务)
docker compose up -d --scale worker=5

配置与验证

# 验证配置
docker compose config
docker compose config -q        # 静默模式,只输出错误

# 查看生效的环境变量
docker compose config | grep -A 5 environment

项目与环境

# 指定项目名(默认是目录名)
docker compose -p myproject up -d

# 指定文件
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.yml -f docker-compose.override.yml up -d

# 指定环境变量文件
docker compose --env-file .env.production up -d

常用 compose 文件片段

# docker-compose.yml 示例
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    depends_on:
      - api
    restart: unless-stopped
    networks:
      - frontend

  api:
    build: ./api
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
    depends_on:
      - db

  db:
    image: postgres:15
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: secret
    networks:
      - backend

volumes:
  db-data:

networks:
  frontend:
  backend:

十三、系统信息与监控

系统信息

# 系统概况
uname -a
cat /etc/os-release            # Linux 发行版
lsb_release -a                 # Ubuntu/Debian
cat /etc/redhat-release        # CentOS

# 主机信息
hostname
hostnamectl
uptime                         # 运行时间与负载

# 硬件信息
lscpu                          # CPU
free -h                        # 内存
free -m                        # 内存(MB)
lsblk                          # 块设备
df -h                          # 磁盘
lsusb                          # USB
lspci                          # PCI

性能监控

# CPU / 内存 / 进程
top
htop
glances                        # 综合监控
vmstat 1                       # 系统整体
mpstat 1                       # CPU

# 磁盘 I/O
iostat -x 1
iotop

# 网络
iftop                          # 实时流量
nethogs                        # 按进程统计
sar -n DEV 1                   # 系统自带

# 内存详情
cat /proc/meminfo

macOS 系统信息

system_profiler SPHardwareDataType        # 硬件
system_profiler SPSoftwareDataType        # 系统
sw_vers                                    # 系统版本
top
activity monitor                          # GUI 工具

十四、磁盘管理

磁盘与分区

# 查看磁盘
df -h                          # 整体使用
df -i                          # inode 使用
du -sh dir/                    # 目录大小
du -h --max-depth=1 dir/       # 子目录大小
ls -lh                         # 文件大小

# 分区与格式化
lsblk                          # 块设备列表
fdisk -l                       # 分区表
parted /dev/sdb print

# 挂载
mount /dev/sdb1 /mnt
umount /mnt
mount | grep sdb               # 已挂载列表

# 开机自动挂载(/etc/fstab)
# /dev/sdb1  /mnt/data  ext4  defaults  0  2

LVM(逻辑卷管理)

pvs                            # 物理卷
vgs                            # 卷组
lvs                            # 逻辑卷

pvcreate /dev/sdb
vgcreate myvg /dev/sdb
lvcreate -L 10G -n mylv myvg

mkfs.ext4 /dev/myvg/mylv
mount /dev/myvg/mylv /mnt

Swap

# 查看
free -h
swapon --show

# 创建 swap 文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

十五、实用快捷键

Bash / Zsh 通用

Ctrl + C         # 中断当前命令
Ctrl + D         # 退出当前 shell / EOF
Ctrl + Z         # 挂起当前进程(fg/bg 恢复)
Ctrl + L         # 清屏(等效 clear)
Ctrl + A         # 光标移到行首
Ctrl + E         # 光标移到行尾
Ctrl + U         # 删除光标到行首
Ctrl + K         # 删除光标到行尾
Ctrl + W         # 删除光标前一个单词
Ctrl + Y         # 粘贴最近一次删除的内容
Ctrl + R         # 反向搜索历史命令
Ctrl + G         # 退出历史搜索
Ctrl + P / N     # 上一条 / 下一条历史
Ctrl + →/←       # 按单词移动光标
Tab              # 自动补全(按两下显示所有)
!!               # 上一条命令
!$               # 上一条命令的最后一个参数
!*               # 上一条命令的所有参数

Tmux 常用

tmux                            # 新建会话
tmux new -s name                # 命名会话
tmux ls                         # 列出
tmux attach -t name             # 接入
Ctrl+B D                        # 分离会话
Ctrl+B %                        # 垂直分屏
Ctrl+B "                        # 水平分屏
Ctrl+B 方向键                    # 切换面板
Ctrl+B [                        # 进入复制模式(q 退出)

附录 A:常用端口速查

端口用途
20/21FTP
22SSH
23Telnet
25SMTP
53DNS
80HTTP
110POP3
143IMAP
443HTTPS
3306MySQL
5432PostgreSQL
6379Redis
8080HTTP 代理 / Tomcat
9200Elasticsearch
27017MongoDB

附录 B:常用目录约定

路径用途
/etc系统级配置文件
/etc/profile.d/系统级登录脚本(推荐)
/var/log/日志目录
/tmp临时文件
/opt可选 / 第三方应用
/srv服务数据
~当前用户家目录
~/.config/用户配置(XDG 标准)
~/.local/bin/用户本地可执行(XDG 标准)

附录 C:Vim / Nano 速查

Nano

nano filename
# Ctrl+O    保存
# Ctrl+X    退出
# Ctrl+W    搜索
# Ctrl+K    剪切整行
# Ctrl+U    粘贴
# Ctrl+G    帮助

Vim

vim filename
# i/a/o     进入插入模式
# Esc       回到普通模式
# :w        保存
# :q        退出
# :wq       保存并退出
# :q!       强制退出
# /keyword  向下搜索
# ?keyword  向上搜索
# n / N     下一个 / 上一个匹配
# dd        删除一行
# yy        复制一行
# p         粘贴
# u         撤销
# Ctrl+r    重做
# :set nu   显示行号
# :%s/old/new/g  全文替换

提示:命令繁多但无需死记。常用命令 + --help 是最佳学习路径。
例如 docker run --help、systemctl --help、tar --help。

评论

推荐阅读

订阅邮件

订阅更新,及时收到最新文章。

作者