Files
chill_notes/Lunix/Linux系统管理指南.md
2026-04-21 11:27:00 +08:00

299 lines
5.4 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Linux 系统管理指南
tags:
- Linux
- Shell
- Bash
- 系统管理
- Ubuntu
created: 2026-04-21
---
# Linux 系统管理指南
## 基础命令
### 文件与目录
```bash
# 目录操作
ls -la # 列出所有文件(含隐藏)
cd /path # 切换目录
pwd # 显示当前目录
mkdir -p a/b/c # 递归创建目录
rm -rf directory # 强制删除目录
# 文件操作
cp file1 file2 # 复制
mv file1 file2 # 移动/重命名
rm file # 删除
touch file # 创建空文件
# 查看文件
cat file # 全文显示
head -n 20 file # 前20行
tail -n 50 file # 后50行
tail -f log # 实时跟踪日志
less file # 分页查看
# 搜索
grep "pattern" file
find / -name "*.log"
locate filename
```
### 用户与权限
```bash
# 用户管理
sudo useradd -m -s /bin/bash username
sudo passwd username
sudo usermod -aG sudo username
sudo deluser username
# 权限
chmod 755 file # 数字形式
chmod +x script.sh # 添加执行权限
chown user:group file # 修改所有者
# 权限数字
# 4 = r, 2 = w, 1 = x
# 755 = rwxr-xr-x (所有者全部, 其他读+执行)
# 644 = rw-r--r--
# 600 = rw-------
```
### 进程管理
```bash
# 查看进程
ps aux | grep nginx
top # 实时监控(退出按 q
htop # 更友好的 top需安装
# 管理进程
kill PID # 温柔终止
kill -9 PID # 强制终止
killall nginx # 按名字终止
# 后台运行
nohup command & # 忽略挂断信号后台运行
command & # 后台运行
jobs # 查看后台任务
fg %1 # 调到前台
```
## 软件安装
### APTDebian/Ubuntu
```bash
# 更新源
sudo apt update
sudo apt upgrade
# 安装软件
sudo apt install nginx
sudo apt install docker.io
# 搜索
apt search nginx
# 卸载
sudo apt remove nginx
sudo apt autoremove
```
### YUM/DNFCentOS/RHEL
```bash
sudo dnf install nginx
sudo dnf update
sudo dnf remove nginx
```
### 系统服务systemd
```bash
# 管理服务
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx
sudo systemctl enable nginx # 开机自启
sudo systemctl disable nginx # 禁用开机自启
# 查看服务
systemctl list-units --type=service --state=running
```
## 网络命令
```bash
# 查看网络
ip addr show
ip link set eth0 up/down
ss -tuln # 查看监听端口
netstat -tuln
# 网络测试
ping -c 4 google.com
curl -I https://example.com
wget https://example.com/file
# 端口转发
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
# 防火墙
sudo ufw allow 22 # 开放SSH
sudo ufw allow 80/tcp # 开放HTTP
sudo ufw allow 443/tcp # 开放HTTPS
sudo ufw enable
sudo ufw status
```
## 磁盘管理
```bash
# 查看磁盘使用
df -h
du -sh /var/log/*
# 挂载
sudo mount /dev/sdb1 /mnt/usb
sudo umount /mnt/usb
# 分区
sudo fdisk /dev/sdb
# 或使用 parted
# 创建文件系统
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
```
## Shell 脚本
```bash
#!/bin/bash
# 变量
NAME="World"
echo "Hello, $NAME!"
echo "当前目录: $(pwd)"
# 条件
if [ -f "file.txt" ]; then
echo "文件存在"
elif [ $age -ge 18 ]; then
echo "成年"
else
echo "未成年"
fi
# 循环
for file in *.txt; do
echo "处理: $file"
done
# 函数
function greet() {
echo "Hello, $1!"
}
greet "张三"
# 常用判断
# -f file 文件存在
# -d dir 目录存在
# -z string 字符串为空
# -n string 字符串非空
# -eq, -ne 数字相等/不等
# -lt, -gt 数字小于/大于
# 读取输入
read -p "请输入名称: " name
echo "你输入了: $name"
# 函数返回状态
function check() {
if [ $1 -gt 10 ]; then
return 0 # 成功
else
return 1 # 失败
fi
}
```
## 日志查看
```bash
# 系统日志
journalctl -u nginx # 查看nginx服务日志
journalctl -f # 实时跟踪
journalctl --since "1 hour ago"
# 应用日志
tail -f /var/log/nginx/access.log
tail -f /var/log/syslog
# 历史命令
history | grep apt
```
## 常用配置
### SSH
```bash
# 生成密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
# 复制公钥到服务器
ssh-copy-id user@hostname
# SSH 配置 (~/.ssh/config)
Host myserver
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
```
### Crontab 定时任务
```bash
# 编辑 crontab
crontab -e
# 格式: 分 时 日 月 周 命令
# 示例:
# 0 9 * * 1-5 # 每周一到周五9点
# */15 * * * * # 每15分钟
# 0 2 * * * # 每天凌晨2点
# @reboot # 开机运行
```
## DockerLinux
```bash
# 安装 Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
## 故障排查
| 问题 | 命令 |
|------|------|
| 端口占用 | `lsof -i :8080``ss -tulpn \| grep 8080` |
| 磁盘满 | `df -h` + `du -sh /*` |
| 内存满 | `free -h` + `top` |
| CPU 高 | `top``htop` |
| 服务起不来 | `systemctl status xxx` + `journalctl -u xxx` |
| 网络不通 | `ping 8.8.8.8` + `curl -I url` |