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

5.4 KiB
Executable File
Raw Blame History

title, tags, created
title tags created
Linux 系统管理指南
Linux
Shell
Bash
系统管理
Ubuntu
2026-04-21

Linux 系统管理指南

基础命令

文件与目录

# 目录操作
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

用户与权限

# 用户管理
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-------

进程管理

# 查看进程
ps aux | grep nginx
top                  # 实时监控(退出按 q
htop                 # 更友好的 top需安装

# 管理进程
kill PID             # 温柔终止
kill -9 PID          # 强制终止
killall nginx        # 按名字终止

# 后台运行
nohup command &      # 忽略挂断信号后台运行
command &            # 后台运行
jobs                 # 查看后台任务
fg %1                # 调到前台

软件安装

APTDebian/Ubuntu

# 更新源
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

sudo dnf install nginx
sudo dnf update
sudo dnf remove nginx

系统服务systemd

# 管理服务
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

网络命令

# 查看网络
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

磁盘管理

# 查看磁盘使用
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 脚本

#!/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
}

日志查看

# 系统日志
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

# 生成密钥
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 定时任务

# 编辑 crontab
crontab -e

# 格式: 分 时 日 月 周 命令
# 示例:
# 0 9 * * 1-5    # 每周一到周五9点
# */15 * * * *  # 每15分钟
# 0 2 * * *      # 每天凌晨2点
# @reboot        # 开机运行

DockerLinux

# 安装 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 :8080ss -tulpn | grep 8080
磁盘满 df -h + du -sh /*
内存满 free -h + top
CPU 高 tophtop
服务起不来 systemctl status xxx + journalctl -u xxx
网络不通 ping 8.8.8.8 + curl -I url