Linux简介与核心概念
系统安装与初始化
文件系统结构解析
终端基础操作
用户与权限管理
软件包管理
进程与服务管理
网络配置与工具
Shell脚本编程
系统监控与日志
安全加固指南
实战项目演练
开源操作系统内核(诞生于1991年,Linus Torvalds开发)
与Windows/macOS的本质区别:
图表
代码
下载
Linux
多用户系统
一切皆文件
权限严格管控
发行版 | 特点 | 适用场景 |
---|---|---|
Ubuntu | 用户友好,社区支持强 | 桌面/新手入门 |
CentOS | 企业级稳定性 | 服务器 |
Arch Linux | 滚动更新,高度定制化 | 高级用户 |
Kali Linux | 渗透测试工具预装 | 安全审计 |
bash
# 制作启动盘(Windows环境) rufus-3.22.exe --device /dev/sdX --iso ubuntu-22.04.3-live-server-amd64.iso
分区建议:
/
根分区:50GB(ext4)
swap
交换分区:内存的1.5倍(≤32GB内存时)
/home
家目录:剩余空间(数据存储)
bash
# 更新软件源 sudo apt update && sudo apt upgrade -y # 安装基础工具包 sudo apt install -y vim git net-tools htop
Linux采用层级式文件结构:
/ ├── bin # 基础命令(ls, cp等) ├── etc # 系统配置文件 ├── home # 用户目录 ├── var # 动态数据(日志、数据库) └── proc # 进程与内核信息(虚拟文件系统)
关键命令:
bash
# 查看磁盘使用情况 df -hT /dev/sda1 # 查找大文件 sudo find / -type f -size +100M -exec ls -lh {} \;
命令 | 功能 | 示例 |
---|---|---|
ls -la |
显示隐藏文件与详细信息 | ls -la ~/Documents |
cp -r |
递归复制目录 | cp -r dir1 dir2 |
mv |
移动/重命名 | mv old.txt new.txt |
rm -i |
交互式删除 | rm -i *.tmp |
bash
# 查看日志最后20行 tail -20 /var/log/syslog # 实时监控日志更新 tail -f /var/log/nginx/access.log # 统计代码行数(排除空行) grep -v '^$' *.py | wc -l
bash
# 创建开发组 sudo groupadd developers # 添加用户并设置密码 sudo useradd -m -G developers alice sudo passwd alice
bash
chmod 750 script.sh # 所有者:rwx,组:r-x,其他:--- chown alice:developers file.txt
权限数字表示法:
r=4, w=2, x=1 rwxr-xr-- = 754
bash
# 搜索软件包 apt search nginx # 查看软件信息 apt show nginx # 彻底卸载(含配置) sudo apt purge nginx
bash
./configure --prefix=/usr/local/nginx make -j$(nproc) sudo make install
bash
# 查看服务状态 systemctl status sshd # 设置开机启动 sudo systemctl enable nginx # 重启服务 sudo systemctl restart apache2
bash
# 按CPU排序进程 top -o %CPU # 杀进程(先尝试SIGTERM) kill -15 PID
bash
# 查看开放端口 ss -tulnp # 测试到Google的连接 mtr -rw google.com
bash
# 允许HTTP流量 sudo ufw allow 80/tcp # 拒绝特定IP sudo ufw deny from 192.168.1.100
bash
#!/bin/bash # 备份脚本 BACKUP_DIR="/backups" TARGET_DIR="$HOME/Documents" [ ! -d "$BACKUP_DIR" ] && mkdir -p "$BACKUP_DIR" tar -czf "$BACKUP_DIR/docs_$(date +%F).tar.gz" "$TARGET_DIR"
bash
# 检查文件是否存在 [ -f "/etc/passwd" ] && echo "File exists" # 循环处理文件 for file in *.log; do gzip "$file" done
bash
# CPU温度(需要lm-sensors) sensors | grep Core # 内存使用率 free -h | awk '/Mem/{printf "%.1f%%", $3/$2*100}'
bash
# 统计HTTP状态码 awk '{print $9}' access.log | sort | uniq -c
SSH安全:
bash
# 禁用root登录 sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
自动更新:
bash
sudo apt install unattended-upgrades
bash
sudo apt install nginx mysql-server php-fpm sudo mysql_secure_installation
bash
(crontab -l 2>/dev/null; echo "0 3 * * * /path/to/backup.sh") | crontab -
在线练习:OverTheWire: Bandit
命令行教程:LinuxCommand.org: Learn The Linux Command Line. Write Shell Scripts.
认证路径:LPIC → RHCE → Linux Foundation Certified Engine