Linux / macOS 命令速查与运维笔记 #

Linux服务器运维笔记、常用命令速查、实战经验总结


📋 目录 #


Shell 与环境变量 #

# 查看正在使用的Shell
echo $SHELL

Shell 配置文件 #

Shell Mac 配置文件 Linux 配置文件
bash ~/.bash_profile ~/.bashrc
zsh ~/.zshrc ~/.zshrc
# 编辑配置文件
nano ~/.bashrc
nano ~/.bash_profile
nano ~/.zshrc

# 示例:设置 JAVA_HOME 环境变量
export JAVA_HOME=$(/usr/local/opt/openjdk@21/bin/java_home)
export PATH=$JAVA_HOME/bin:$PATH

# 使配置生效
source ~/.bash_profile
source ~/.zshrc
source ~/.bashrc

常用命令速查 #

文件管理 #

命令 作用 示例
ls -al 列出所有文件包括隐藏 ls -al
cd ~ 回到用户目录 cd /var/log
pwd 显示当前路径 pwd
mkdir -p 创建目录,父目录不存在自动创建 mkdir -p ~/projects/app
rm -rf 递归删除(危险操作) rm -rf node_modules
cp -r 递归复制 cp -r src dst
mv 移动/重命名 mv old.md new.md
touch 创建空白文件 touch config.ini
find 查找文件 find . -name "*.log"
grep -r 递归搜索内容 grep -r "error" /var/log
tar -zcvf 压缩为 .tar.gz tar -zcvf archive.tar.gz dir/
tar -zxvf 解压 .tar.gz tar -zxvf archive.tar.gz
chmod +x 添加可执行权限 chmod +x script.sh
chown -R user:group 递归修改所有者 chown -R nginx:nginx /var/www
du -sh 查看目录大小 du -sh /var/lib/docker
df -h 查看磁盘使用 df -h

查找文件与内容 #

# 按名称查找文件
find /Users/morris/IdeaProjects -name "sqlmap_config.xml"

# 递归搜索文件内容(指定文件类型)
grep -r '--include=*.java' "displayThirdOrder" /Users/morris/IdeaProjects

# 多条件过滤日志并输出到文件
grep 'psbc delivery' qm-open/logs/prod-server-01_qm-open-*..log | grep 'SP_2512300065' > result.log

# 批量查找并删除日志文件
find IdeaProjects -name "*.log"
find IdeaProjects -name "*.log" -delete

# 按大小排序当前目录下所有文件/文件夹
du -sh * | sort -hr

系统信息 #

命令 作用
uname -a 查看内核版本
cat /etc/os-release 查看系统版本
free -h 查看内存使用
top / htop 实时进程监控
uptime 查看运行时间和负载
who 查看登录用户
last 查看登录历史
dmesg 查看系统日志(启动信息)
df -h 查看磁盘空间

网络 #

命令 作用
ifconfig / ip a 查看网卡IP
netstat -tulpn 查看监听端口
ss -tulpn 新版netstat
ping 测试连通性 - ping google.com
traceroute 路由追踪
curl 发送HTTP请求 - curl https://example.com
wget 下载文件 - wget https://example.com/file.zip
ssh user@host SSH登录
scp file user@host:/path 复制文件到远程
netplan apply Debian/Ubuntu 应用网络配置

网络诊断 #

# 查看端口占用
lsof -i :8090
netstat -tunlp | grep 8080

# 查看服务器公网出口IP
curl ifconfig.me

# 查看服务器公网入口IP(DNS解析)
ping 域名地址

进程 #

命令 作用
ps aux 查看所有进程
ps aux | grep nginx 查找特定进程
kill PID 终止进程(优雅终止)
kill -9 PID 强制杀死
killall name 按名称杀进程
systemctl status 查看服务状态 - systemctl status nginx
systemctl start/stop/restart 启动/停止/重启
systemctl enable/disable 开启/关闭开机自启
journalctl -u service 查看服务日志 - journalctl -u nginx -f
bg / fg 后台/前台进程

终止进程实战流程 #

# 1. 查找目标进程
ps -ef | grep java

# 2. 确认PID后,先尝试优雅终止
kill 1234

# 3. 验证是否已终止(无输出则成功)
ps -ef | grep 1234

# 4. 若未终止,强制杀死
kill -9 1234
> 🔒 账号信息已隐藏(仅本地笔记可见)bash
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew install <package>    # 安装
brew uninstall <package>  # 卸载
brew update               # 更新索引
brew upgrade              # 升级所有包
brew list                 # 已安装列表
brew config               # 查看brew配置
brew search <package>     # 搜索
brew info <package>       # 查看包信息

Homebrew 实战示例 #

# 安装/管理 OpenJDK
brew search openjdk@21
brew install openjdk@21
brew info openjdk@21
brew upgrade openjdk@21
brew uninstall openjdk@21

# 安装/管理 GUI 应用(Cask)
brew install --cask intellij-idea-ce
brew info --cask intellij-idea-ce
brew upgrade --cask intellij-idea-ce
brew uninstall --cask intellij-idea-ce

Homebrew 镜像配置与维护 #

# 清理所有旧版本包和缓存
brew cleanup --prune=all

# 查看当前的远程仓库地址
git -C "$(brew --repo)" remote -v

# 清除 Git 缓存,重新更新
rm -rf $(brew --cache)

# 检查环境变量中的 Homebrew 镜像配置
grep -r "HOMEBREW" ~/.zprofile ~/.bash_profile ~/.profile ~/.bashrc
grep -r "aliyun" ~/.zprofile ~/.bash_profile ~/.profile ~/.bashrc

# 恢复官方镜像:删除 ~/.zshrc 中所有 HOMEBREW_* 配置,然后执行
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
unset HOMEBREW_API_DOMAIN HOMEBREW_BOTTLE_DOMAIN HOMEBREW_BREW_GIT_REMOTE HOMEBREW_CORE_GIT_REMOTE

常用 macOS 命令 #

命令 作用
open . 在Finder打开当前目录
pbcopy < file 复制文件内容到剪贴板
pbpaste 粘贴剪贴板内容
brew install --cask 安装GUI应用 - brew install --cask google-chrome
defaults write 修改系统配置

Java / JVM 运维 #

JVM 进程排查 #

# 查找 Java 进程
ps -ef | grep java

# 查看 JVM GC 统计(PID 替换为实际进程号)
jstat -gc <PID> 10000 30

# 查看堆内存概况
jmap -heap <PID>

# 导出堆转储文件
jmap -dump:format=b,file=/path/to/dump/heap.hprof <PID>

# 查看存活对象(前10条,前3行是表头)
jmap -histo:live <PID> | head -n 13

# 查看所有对象(前10条,前3行是表头)
jmap -histo <PID> | head -n 13

系统 OOM 排查 #

# 查看系统 OOM 记录
dmesg -T | grep -i 'out of memory'
dmesg -T | grep -i 'killed process'

JAR 启动参数 #

# 基本启动(设置堆内存 + 环境变量)
java -Xms1024m -Xmx1024m -DDEPLOY_ENV=test -jar app.jar

# 开启 JMX 远程监控
java -Xms1024m -Xmx1024m \
  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=1099 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Djava.rmi.server.hostname=172.20.3.193 \
  -jar app.jar

OQL 查询示例 #

-- MAT (Memory Analyzer) OQL 查询
select sku from com.qm.mall.itm.share.dto.PromotionalSkuDTO sku where sku.promotionalId = 359329;

Docker #

# 查看运行中的容器
docker ps

# 从容器复制文件到本地
docker cp <container_id>:/path/in/container ~/local/path

# 从本地复制文件到容器
docker cp ~/local/path <container_id>:/path/in/container

# 示例
docker cp e0e5c329c058:/root/.claude/settings.json ~/Downloads/settings.json
docker cp ~/Downloads/settings.json e0e5c329c058:/root/.claude/settings.json

开发工具 #

Maven 依赖分析 #

# 查看依赖树并过滤关键字
mvn dependency:tree | grep bouncycastle

# 查看指定依赖的详细引入路径
mvn dependency:tree -Dverbose -Dincludes=org.bouncycastle:bcpkix-jdk15on

动态查看服务器日志 #

# 实时查看日志文件末尾
tail -n 300 -f /path/to/server.log

日志分析实战 #

# 统计日志中特定模式出现次数(按频率排序)
grep 'matchBrand.*null' app.log | sed 's/.*matchBrand //; s/ (.*), null//' | sort | uniq -c | sort -nr

# 多条件过滤并输出到文件
grep 'psbc delivery' server-*.log | grep 'SP_2512300065' > result.log

VSCode 正则替换(简化日志) #

# 匹配并移除日志中的线程、类路径等干扰信息
\[qtp\d+-\d+\] .+ \[.+\] \[.+:\d+\] \[.+\]-

Debian 安装 OpenMediaVault 教程 #

OMV: OpenMediaVault,基于Debian的NAS系统

环境 #

  • Debian 12 (Bookworm)
  • 已经安装好 Debian 基础系统
  • 镜像源已经换成国内源(华为源/清华源)

安装步骤 #

添加源:

cat <<EOF >> /etc/apt/sources.list.d/openmediavault.list
deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public sandworm main
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://downloads.sourceforge.net/project/openmediavault/packages sandworm main
## Uncomment the following line to add software from the proposed repository.
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public sandworm-proposed main
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://downloads.sourceforge.net/project/openmediavault/packages sandworm-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public sandworm partner
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://downloads.sourceforge.net/project/openmediavault/packages sandworm partner
EOF

安装 OMV:

export LANG=C.UTF-8
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none

apt-get install --yes gnupg
wget --quiet --output-document=- https://packages.openmediavault.org/public/archive.key \
  | gpg --dearmor --yes --output "/usr/share/keyrings/openmediavault-archive-keyring.gpg"

apt-get update
apt-get --yes --auto-remove --show-upgraded \
  --allow-downgrades --allow-change-held-packages --no-install-recommends \
  --option DPkg::Options::="--force-confdef" \
  --option DPkg::Options::="--force-confold" \
  install openmediavault-keyring openmediavault

# 填充数据库
omv-confdbadm populate

# 显示登录信息
omv-salt deploy run hosts
cat /etc/issue
> 🔒 账号信息已隐藏(仅本地笔记可见)
原有: 2 × 3T → Raid 0 → /dev/sda (系统+数据)
新增: 2 × 3T → Raid 0 → /dev/sdb (新数据分区)

优点:

  • ✅ 不影响原有数据
  • ✅ 操作简单安全
  • ✅ 读写性能保持一致(两个Raid0,每个都是2块盘)
  • ✅ 一块Raid损坏不会影响另一块

如果原有Raid0是 N 块盘,新增也保持 N 块盘,保证性能一致。

4. 系统中挂载新磁盘 #

# 查看磁盘
lsblk
fdisk -l

# 分区(假设新磁盘是 /dev/sdb)
fdisk /dev/sdb
# 按照提示创建分区

# 格式化
mkfs.ext4 /dev/sdb1

# 挂载到 /home 或者数据目录
mount /dev/sdb1 /home

# 添加到 /etc/fstab 开机自动挂载
UUID=$(blkid -s UUID -o value /dev/sdb1)
echo "UUID=$UUID /home ext4 defaults 0 0" >> /etc/fstab

经验总结 #

  1. 提前备份数据!任何Raid操作都有风险,先备份
  2. 规划先行:买服务器时一次性插满硬盘,规划好Raid,尽量避免后期扩容
  3. 新增Raid比扩容更安全:对于个人NAS,新建Raid组挂载是最简单方案
  4. Raid 0 性能最好:但是坏一块盘全挂,适合不重要数据/有备份场景

经验总结 #

通用原则 #

  1. Linux命令执行时需要有相应的权限,一般用 sudo
  2. 找命令优先搜阿里云文档,比百度准确率高,或者问AI
  3. 服务启动后检查端口,可能需要开放防火墙,配置用户权限
  4. Debian 安装选择镜像源:华为源速度 > 清华源

🔗 相关笔记 #


最后更新: 2026-05-27