1. Linux 系统安装
1.1 发行版选择
对于初学者,推荐以下主流发行版:
- CentOS Stream / RHEL:企业级服务器常用,稳定性高,文档丰富。
- Ubuntu Server LTS:社区活跃,软件包新,适合学习和云环境。
- openSUSE:企业级特性,YaST 管理工具友好。
根据目标环境选择:生产环境建议 RHEL/CentOS 或 Ubuntu LTS;个人学习可选用虚拟机安装任意发行版。
1.2 安装方式
- 物理机:制作启动U盘(如使用 Rufus、Etcher),从 BIOS 引导安装。
- 虚拟机:使用 VMware、VirtualBox 或 KVM,分配 CPU、内存、磁盘,加载 ISO 镜像安装。
- 云服务器:在云平台(AWS、阿里云等)直接选择操作系统镜像,一键创建实例。
1.3 安装关键步骤
- 选择语言和键盘布局:通常选择 English (US)。
- 手动分区:至少需要
/(根分区)和 swap(交换分区),建议单独划分 /boot(引导分区)和 /home(用户数据分区)。 - 分区格式:ext4 或 xfs(RHEL 8+ 默认 xfs)。
- 静态 IP 配置:需要指定 IP、子网掩码、网关、DNS。
- 设置 root 密码和创建普通用户:生产环境禁止直接使用 root,需创建普通用户并赋予 sudo 权限。
- 选择软件包:最小化安装(Minimal)可减少攻击面,后续按需安装软件。
1.4 安装后基本配置
# 更新系统
sudo yum update # RHEL/CentOS 7
sudo dnf update # RHEL/CentOS 8+/Fedora
sudo apt update && sudo apt upgrade # Debian/Ubuntu
# 设置主机名
sudo hostnamectl set-hostname myserver
# 配置网络(以 CentOS/RHEL 8+ 为例)
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
sudo nmcli connection modify eth0 ipv4.dns 8.8.8.8
sudo nmcli connection modify eth0 ipv4.method manual
sudo nmcli connection up eth0
# 关闭防火墙(测试环境)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 或者放行必要端口
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
# 关闭 SELinux(临时)
sudo setenforce 0
# 永久关闭需修改 /etc/selinux/config 文件
2. Linux 基本命令
2.1 文件管理命令
2.1.1 目录操作
| | |
|---|
pwd | | pwd |
ls | | ls -la |
cd | | cd /etc 进入 /etc;cd .. 返回上级;cd ~ 回家目录 |
mkdir | | mkdir -p dir1/dir2 |
rmdir | | rmdir emptydir |
2.1.2 文件操作
| | |
|---|
touch | | touch file.txt |
cp | | cp file1 file2 |
mv | | mv oldname newname |
rm | | rm file |
cat | | cat /etc/passwd |
less | | less large.log |
head | | tail -f /var/log/messages |
find | | find / -name "*.conf" |
locate | | locate nginx.conf |
which | | which python |
file | | file /bin/ls |
stat | | stat file |
2.1.3 文件内容处理
| | |
|---|
grep | | grep "error" /var/log/messages |
awk | | awk '{print $1}' file |
sed | | sed -i 's/old/new/g' file |
sort | | sort -n numbers.txt |
uniq | | sort file | uniq -c |
wc | | wc -l file |
cut | | cut -d: -f1 /etc/passwd |
2.1.4 权限管理
Linux 使用 UGO(用户、组、其他人) 模型管理权限,每个文件有读(r)、写(w)、执行(x)权限。
查看权限:
ls -l file
# 输出示例:-rw-r--r-- 1 root root 1024 Mar 19 10:00 file
# 第一位:文件类型(-普通文件,d目录,l链接)
# 接下来9位:所有者(u)权限、组(g)权限、其他人(o)权限
# rwxr-xr-x 表示所有者rwx,组r-x,其他人r-x
修改权限:
chmod:修改权限(数字法或符号法)chmod 755 script.sh # 所有者rwx,组r-x,其他人r-x
chmod u+x script.sh # 给所有者增加执行权限
chmod g-w file # 移除组的写权限
chmod a=r file # 所有人只读
chown:修改所有者和组chown user:group file # 同时修改所有者和组
chown user file # 只修改所有者
chgrp group file # 只修改组
特殊权限:
- SUID(4xxx):以文件所有者身份执行,如
/usr/bin/passwd。 - SGID(2xxx):以文件所属组身份执行,或目录内新建文件继承组。
- Sticky Bit(1xxx):目录内只有文件所有者能删除,如
/tmp(权限 1777)。
2.1.5 链接文件
- 硬链接:多个文件名指向同一个 inode,只能在同一文件系统内创建。
ln source target
- 符号链接(软链接):类似快捷方式,可跨文件系统。
ln -s source target
2.2 用户权限管理
2.2.1 用户与组概念
- 每个用户有唯一 UID(用户ID),组有 GID。
- 用户信息存储在
/etc/passwd,密码(加密后)存储在 /etc/shadow。
2.2.2 用户管理命令
| | |
|---|
useradd | | useradd -m -G wheel alice |
usermod | | usermod -aG docker alice |
userdel | | userdel -r alice |
passwd | | passwd alice |
id | | id alice |
whoami | | whoami |
who | | who -u |
su | | su - alice |
sudo | | sudo apt update |
2.2.3 sudo 权限配置
通过 /etc/sudoers 文件配置(建议用 visudo 编辑):
# 允许 wheel 组所有用户执行任何命令
%wheel ALL=(ALL) ALL
# 允许 alice 无密码执行特定命令
alice ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx
2.2.4 文件权限与用户关系
- 访问文件时,系统按顺序检查:若进程的 UID 等于文件所有者 UID,应用所有者权限;若属于文件所属组,应用组权限;否则应用其他人权限。
2.3 进程管理
2.3.1 进程概念
- 进程是正在执行的程序实例,每个进程有唯一 PID。
- 进程状态:运行(R)、睡眠(S)、不可中断睡眠(D)、停止(T)、僵尸(Z)。
- 父进程与子进程,所有进程的祖先是
init(PID 1,现多为 systemd)。
2.3.2 查看进程
| | |
|---|
ps | | ps aux |
pstree | | pstree -p |
top | | 按 q 退出;按 P 按CPU排序;按 M 按内存排序 |
htop | | |
pgrep | | pgrep nginx |
2.3.3 进程控制
| | |
|---|
kill | | kill -9 1234 |
killall | | killall nginx |
pkill | | pkill -u alice |
jobs | | jobs -l |
bg | | bg %1 |
fg | | fg %1 |
nohup | | nohup command & |
& | | sleep 100 & |
2.3.4 系统负载与资源监控
uptime:查看系统运行时间、平均负载(1、5、15分钟)。free:查看内存使用情况(free -h 以人类可读显示)。netstat / ss:查看网络连接、端口监听。
2.3.5 服务管理(systemd)
现代 Linux 使用 systemd 管理服务。
# 启动服务
systemctl start nginx
# 停止服务
systemctl stop nginx
# 重启服务
systemctl restart nginx
# 查看状态
systemctl status nginx
# 设置开机自启
systemctl enable nginx
# 禁用开机自启
systemctl disable nginx
# 查看所有服务
systemctl list-units --type=service
3. 实践建议与常见错误
3.1 初学者常见错误
- **误用
rm -rf /***:不要随意使用 rm -rf,尤其是通配符和路径错误可能导致系统崩溃。 - 权限不足:忘记加
sudo 导致操作失败,需理解何时需要 root。 - 混淆软硬链接:修改源文件后软链接失效(目标被删除),硬链接仍有效。
- 后台进程管理:直接关闭终端导致后台进程被终止(应使用
nohup 或 disown)。 - 随意修改系统文件:如
/etc/passwd 直接编辑可能导致系统无法登录,应用 vipw 或 vigr 等专用命令。
3.2 高效技巧
- 使用
alias 定义常用命令别名,如 alias ll='ls -alF'。 - 学会使用
man 命令查看手册,如 man ls。 - 使用
history 查看命令历史,!123 重复执行历史第123条命令。
3.3 安全建议
- 禁止 root 远程登录,修改
/etc/ssh/sshd_config 中 PermitRootLogin no。 - 最小权限原则:普通用户只拥有必要权限,重要命令需
sudo。
4. 学习资源
- 在线文档:Linux man pages(https://man7.org/linux/man-pages/)
- 练习平台:Linux 命令在线模拟器、虚拟机环境搭建。
掌握 Linux 系统安装与基本命令是运维工程师的第一步,多加练习,熟悉这些命令的使用场景和参数,后续进阶将更加顺畅。