Linux / macOS 命令速查与运维笔记
Linux / macOS 命令速查与运维笔记 #
Linux服务器运维笔记、常用命令速查、实战经验总结
📋 目录 #
- Shell 与环境变量
- 常用命令速查
- macOS 常用命令
- Java / JVM 运维
- Docker
- 开发工具
- 日志分析实战
- Debian 安装 OpenMediaVault 教程
- Dell 服务器 Raid 扩容经验
- 经验总结
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
经验总结 #
- 提前备份数据!任何Raid操作都有风险,先备份
- 规划先行:买服务器时一次性插满硬盘,规划好Raid,尽量避免后期扩容
- 新增Raid比扩容更安全:对于个人NAS,新建Raid组挂载是最简单方案
- Raid 0 性能最好:但是坏一块盘全挂,适合不重要数据/有备份场景
经验总结 #
通用原则 #
- Linux命令执行时需要有相应的权限,一般用
sudo - 找命令优先搜阿里云文档,比百度准确率高,或者问AI
- 服务启动后检查端口,可能需要开放防火墙,配置用户权限
- Debian 安装选择镜像源:华为源速度 > 清华源
🔗 相关笔记 #
最后更新: 2026-05-27