当前位置:首页>Linux>运维知识库-Linux 系统安装与基本命令

运维知识库-Linux 系统安装与基本命令

  • 2026-10-11 13:01:32
运维知识库-Linux 系统安装与基本命令

1. Linux 系统安装

1.1 发行版选择

对于初学者,推荐以下主流发行版:

  • CentOS Stream / RHEL:企业级服务器常用,稳定性高,文档丰富。
  • Ubuntu Server LTS:社区活跃,软件包新,适合学习和云环境。
  • Debian:极其稳定,经典选择。
  • openSUSE:企业级特性,YaST 管理工具友好。

根据目标环境选择:生产环境建议 RHEL/CentOS 或 Ubuntu LTS;个人学习可选用虚拟机安装任意发行版。

1.2 安装方式

  • 物理机:制作启动U盘(如使用 Rufus、Etcher),从 BIOS 引导安装。
  • 虚拟机:使用 VMware、VirtualBox 或 KVM,分配 CPU、内存、磁盘,加载 ISO 镜像安装。
  • 云服务器:在云平台(AWS、阿里云等)直接选择操作系统镜像,一键创建实例。

1.3 安装关键步骤

  1. 选择语言和键盘布局:通常选择 English (US)。
  2. 磁盘分区:
    • 自动分区:适合新手。
    • 手动分区:至少需要 /(根分区)和 swap(交换分区),建议单独划分 /boot(引导分区)和 /home(用户数据分区)。
    • 分区格式:ext4 或 xfs(RHEL 8+ 默认 xfs)。
  3. 网络配置:
    • DHCP 自动获取 IP(默认)。
    • 静态 IP 配置:需要指定 IP、子网掩码、网关、DNS。
  4. 设置 root 密码和创建普通用户:生产环境禁止直接使用 root,需创建普通用户并赋予 sudo 权限。
  5. 选择软件包:最小化安装(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
 → /home/user
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
;cp -r dir1 dir2 递归复制目录
mv
移动或重命名文件/目录
mv oldname newname
;mv file /path/
rm
删除文件或目录
rm file
;rm -rf dir 强制递归删除(慎用)
cat
查看文件内容(全部)
cat /etc/passwd
less
/more
分页查看文件
less large.log
(按 q 退出)
head
/tail
查看文件开头/结尾
tail -f /var/log/messages
 实时跟踪日志
find
查找文件
find / -name "*.conf"
 全局查找 .conf 文件
locate
快速查找(依赖数据库)
locate nginx.conf
(需先 updatedb)
which
查找命令的绝对路径
which python
file
查看文件类型
file /bin/ls
stat
显示文件详细信息(inode、权限、时间)
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 结合)
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。
  • 组信息存储在 /etc/group。
  • 用户至少属于一个 主组,可附加多个 附加组。

2.2.2 用户管理命令

命令
说明
示例
useradd
创建用户
useradd -m -G wheel alice
 创建用户并加入 wheel 组
usermod
修改用户属性
usermod -aG docker alice
 附加组(-a 必须与 -G 同用)
userdel
删除用户
userdel -r alice
 同时删除家目录
passwd
设置/修改密码
passwd alice
(root 可修改他人密码)
id
查看用户UID、GID、所属组
id alice
whoami
显示当前用户名
whoami
who
 / w
查看当前登录用户
who -u
 显示更多信息
su
切换用户
su - alice
 切换到 alice 并加载环境变量
sudo
以其他用户(通常 root)执行命令
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
 显示所有进程详细信息;ps -ef 标准格式
pstree
树状显示进程
pstree -p
 显示 PID
top
动态查看进程(类似 Windows 任务管理器)
按 q 退出;按 P 按CPU排序;按 M 按内存排序
htop
top 增强版(需安装)
交互式,支持滚动、鼠标
pgrep
按名称查找进程 PID
pgrep nginx

2.3.3 进程控制

命令
说明
示例
kill
发送信号给进程
kill -9 1234
 强制终止 PID 1234
killall
按名称杀死进程
killall nginx
pkill
按名称或其他属性杀进程
pkill -u alice
 杀死 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 以人类可读显示)。
  • df:查看磁盘使用情况(df -h)。
  • du:查看目录大小(du -sh /home)。
  • iostat:查看磁盘 I/O 统计。
  • 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 高效技巧

  • 使用 Tab 键自动补全命令和路径。
  • 使用 Ctrl+R 反向搜索历史命令。
  • 使用 alias 定义常用命令别名,如 alias ll='ls -alF'。
  • 学会使用 man 命令查看手册,如 man ls。
  • 使用 history 查看命令历史,!123 重复执行历史第123条命令。
  • 定期备份重要配置文件(如 /etc 目录)。

3.3 安全建议

  • 禁止 root 远程登录,修改 /etc/ssh/sshd_config 中 PermitRootLogin no。
  • 使用密钥认证代替密码登录 SSH。
  • 最小权限原则:普通用户只拥有必要权限,重要命令需 sudo。
  • 定期更新系统补丁。

4. 学习资源

  • 书籍:《鸟哥的Linux私房菜——基础学习篇》
  • 在线文档:Linux man pages(https://man7.org/linux/man-pages/)
  • 练习平台:Linux 命令在线模拟器、虚拟机环境搭建。

掌握 Linux 系统安装与基本命令是运维工程师的第一步,多加练习,熟悉这些命令的使用场景和参数,后续进阶将更加顺畅。

最新文章

随机文章