Update from Sync Service
This commit is contained in:
298
Lunix/Linux系统管理指南.md
Executable file
298
Lunix/Linux系统管理指南.md
Executable file
@@ -0,0 +1,298 @@
|
||||
---
|
||||
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 # 调到前台
|
||||
```
|
||||
|
||||
## 软件安装
|
||||
|
||||
### APT(Debian/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/DNF(CentOS/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 # 开机运行
|
||||
```
|
||||
|
||||
## Docker(Linux)
|
||||
|
||||
```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` |
|
||||
Reference in New Issue
Block a user