📘 IDC 运维 · 第一周课程

从零到能用 Linux 操作文件系统 · 每天 2-3 小时

零基础起步 · 动手为主

学习进度 0/7 天

D1
装系统
D2
文件操作
D3
Vim
D4
用户权限
D5
系统状态
D6
文本处理
D7
综合脚本

点击标题展开/收起每天课程

1
📦 装你的第一个 Linux 系统
目标:能看见 Linux 登录界面

① 下载 VirtualBox

virtualbox.org 下载 macOS 版本,安装一路默认。

② 下载 Ubuntu Server ISO

ubuntu.com/download/server 下载 22.04 LTS24.04 LTS

③ 创建虚拟机

打开 VirtualBox,点击 "新建"

  • 名称:ubuntu-learn
  • 类型:Linux,版本:Ubuntu (64-bit)
  • 内存:2048 MB(2GB 够用)
  • 硬盘:20GB,VDI 格式,动态分配

④ 安装系统

  • 启动虚拟机 → 选择下载的 ISO 文件
  • 语言选 English,键盘选 English (US)
  • 一路回车默认,到用户创建时:
<#! 设置你的用户
用户名: admin
服务器名: server1
密码: 自己设一个(记住它)
勾选: Install OpenSSH server

安装完成 → 提示 Remove installation medium → 回车重启。

⑤ 验证安装成功

你会看到登录提示 server1 login:

  • 输入 admin 回车
  • 输入密码(屏幕上不会显示,正常)
  • 看到类似 admin@server1:~$✅ 搞定
今日检验:能看到命令行提示符,今晚就过关了。
2
📂 第一次在 Linux 里散步(目录操作)
目标:学会在文件系统里走来走去

打开虚拟机,登录,跟着敲:

你在哪里?

pwd
<#! 你应该看到 /home/admin

看看有些什么

ls
ls -la
<#! ls = list,-l = 详细格式,-a = 显示隐藏文件

逛逛不同地方

cd /
pwd
ls -la
<#! '/' 是根目录,Linux 所有东西都从这里开始

cd /home/admin
pwd
<#! 回你自己的家目录

路径游戏

<#! 绝对路径写全
ls /var/log
ls /etc

<#! 相对路径:从当前位置出发
cd /home/admin
ls ../..   <#! 上一级再上一级,应该是 /

创建自己的目录

cd ~
mkdir myfirst
cd myfirst
pwd
<#! 你应该在 /home/admin/myfirst

创建文件 + 查看内容

echo "Hello IDC" > hello.txt
cat hello.txt
<#! 应该看到 Hello IDC

echo "第二行" >> hello.txt
cat hello.txt
<#! 现在有两行
💡 > 是覆盖写入,>> 是追加写入

复制、移动、删除

cp hello.txt hello2.txt
ls

mv hello2.txt /tmp/
ls /tmp/hello2.txt   <#! 它现在在 /tmp 里

rm /tmp/hello2.txt
ls /tmp/hello2.txt   <#! 应该报 No such file

rm -r myfirst   <#! 删除目录用 -r

今日概念总结

符号含义
/根目录
~家目录(/home/admin)
.当前目录
..上级目录
命令作用
ls列出目录内容
cd切换目录
pwd当前位置
mkdir创建目录
cp复制
mv移动/重命名
rm删除
cat查看文件内容
echo输出文本
今日检验:能熟练用这9个命令在文件系统里自由走动。
3
✏️ 学 vim(绕不过去的文本编辑器)
目标:能用 vim 创建编辑保存退出

在机房连服务器,很可能只有 vim 给你用。网上那些"vim 退不出"的梗,你今天就练到能闭着眼睛退出

打开 vim

vim practice.txt

四个核心模式

模式进入方式干什么
普通模式(Normal)默认或按 Esc移动光标、复制、粘贴、删除
插入模式(Insert)i打字
命令模式(Command):保存退出等操作
可视模式(Visual)v选中文本

练习流程(每个步骤练3遍)

<#! 打开 vim
vim test1.txt

<#! 按 i → 进入插入模式
<#! 输入:My first vim file
<#! 按 Esc → 回到普通模式
<#! 按 : → 进入命令行模式
<#! 输入 wq 然后回车 → 保存退出

必会操作速查

按键作用
:wq保存并退出
:q!不保存强制退出(救命用)
i进入插入模式
Esc回到普通模式
dd删除当前行
u撤销(Undo)
yy复制当前行
p粘贴
/xxx搜索 xxx
:noh取消搜索高亮

今日练习

用 vim 创建并编辑下面这个文件,保存退出:

vim today.txt

<#! 按 i 进入插入模式,写入:
我的名字是 xxx
我在学 IDC 运维
第一天用 vim

<#! 按 Esc → :wq → 回车
今日检验:能创建文件、写内容、保存退出,不需要查百度。
4
🔐 用户和权限(运维的命根子)
目标:理解 rwx,会用 chmod

看看你是谁

whoami
id
<#! uid=1000(admin) gid=1000(admin)

创建新用户

sudo useradd -m zhangsan
sudo passwd zhangsan
<#! 输入两次密码

su zhangsan
cd ~
pwd          <#! /home/zhangsan
whoami       <#! zhangsan
exit         <#! 回到 admin

理解权限(这是重点)

cd ~
touch perms.txt
ls -l perms.txt
<#! 你会看到:-rw-r--r--  1 admin  admin  0 Jun 5 10:00 perms.txt

<#! 拆解:
<#! -        文件类型(- 普通文件,d 目录)
<#! rw-      所有者权限:读+写
<#! r--      所属组权限:只读
<#! r--      其他人权限:只读

数字权限速查

数字权限说明
7rwx读+写+执行
6rw-读+写
5r-x读+执行
4r--只读
0---无权限
💡 口诀:r=4, w=2, x=1,加在一起就是权限数字。比如 chmod 755 = owner(7=rwx) + group(5=r-x) + others(5=r-x)

改权限实战

<#! 给所有者加上可执行
chmod u+x perms.txt
ls -l perms.txt   <#! 变成 -rwxr--r--

<#! 让其他人什么权限都没有
chmod o-r perms.txt
ls -l perms.txt   <#! 变成 -rwxr-----

<#! 数字法(最常用)
chmod 755 perms.txt   <#! rwxr-xr-x
chmod 600 perms.txt   <#! rw-------

改文件所有者

sudo chown zhangsan perms.txt
ls -l perms.txt
<#! 所有者变成 zhangsan 了
今日检验:给一个文件设置权限为 600(只有自己读写),其他人啥也看不了。做到了就过关。
5
📊 看系统状态(当运维的眼睛)
目标:学会看 CPU、内存、磁盘、进程

运维天天看这些命令:

看系统整体情况

<#! 当前时间 + 运行了多久
uptime
<#! 10:30:23 up 2 days, 3:45, 1 user, load average: 0.08, 0.03, 0.01
<#! load average 最好不超过 CPU 核数

<#! 看 CPU
lscpu

<#! 看内存
free -h
<#! -h 是人类可读模式

<#! 看磁盘
df -h
<#! 看看你 20GB 的虚拟硬盘用了多少

看进程

ps aux
<#! a=所有用户 u=详细信息 x=没有终端的进程

top
<#! 实时显示进程,按 q 退出

看硬盘详情

lsblk
<#! 看磁盘分区情况,sda 就是系统盘

看网络

ip addr
<#! 看 IP 地址

ip route
<#! 看路由表

ping -c 4 8.8.8.8
<#! 看能不能上网

解释一下 load average

三个数字分别代表 过去1分钟 / 5分钟 / 15分钟 的平均负载。

  • 如果你有 2 个 CPU 核心,load 在 2.0 以下都算正常
  • 超过 CPU 核心数意味着有人在排队
  • nproc 看自己有多少核心
今日检验:用 free -h 看内存剩多少,用 df -h 看磁盘根分区用了多少,用 ps aux | head -10 看前10个进程。
6
🔍 文本处理三剑客 + 重定向
目标:学会 grep/awk/sed 的日常用法

运维每天都要处理日志,这些命令是必杀技。

创建练习文件

cat > servers.txt << 'EOF'
web01 192.168.1.10 online
web02 192.168.1.11 online
db01 192.168.1.20 offline
db02 192.168.1.21 online
cache01 192.168.1.30 offline
EOF

grep(最常用,没有之一)

<#! 找包含 "online" 的行
grep "online" servers.txt

<#! 找不包含 "offline" 的行
grep -v "offline" servers.txt

<#! 数数有几个 online
grep -c "online" servers.txt

<#! 在系统日志里找错误(不区分大小写)
grep -i "error" /var/log/syslog | head

重定向

<#! > 覆盖写入
grep "online" servers.txt > online_servers.txt

<#! >> 追加写入
echo "追加内容" >> online_servers.txt

<#! | 管道(把前面输出送给后面命令处理)
cat servers.txt | grep "online" | wc -l
<#! 数出 online 的服务器有几台

awk 取列

<#! servers.txt 有三列,列之间空格隔开
awk '{print $1}' servers.txt      <#! 取第一列:服务器名
awk '{print $1, $3}' servers.txt  <#! 取第一列和第三列

<#! 只打印 online 的服务器名
grep "online" servers.txt | awk '{print $1}'

sed 替换

<#! 把所有 online 替换成 active(只是显示,文件不变)
sed 's/online/active/g' servers.txt

<#! 加 -i 才真的改文件
sed -i 's/online/active/g' servers.txt
💡 记不住 awk/sed 没关系,先重点练 grep 和管道,这两个每天都要用。awk 和 sed 遇到实际问题再查也来得及。
今日检验:用一行命令找出 servers.txt 里所有 offline 的服务器名。
答案:grep "offline" servers.txt | awk '{print $1}'
7
🚀 综合实战——第一个脚本
目标:把前6天学的串起来

不用怕,脚本就是把命令按顺序写在一个文件里。

创建脚本文件

vim sysinfo.sh

写入以下内容

#!/bin/bash

echo "========================================"
echo "      服务器基本信息报告"
echo "========================================"
echo ""

echo "1. 系统运行时间"
uptime
echo ""

echo "2. CPU 信息"
echo "   核心数:$(nproc)"
echo "   负载情况:$(uptime | awk -F'load average:' '{print $2}')"
echo ""

echo "3. 内存使用情况"
free -h
echo ""

echo "4. 磁盘使用情况"
df -h | grep -v tmpfs
echo ""

echo "5. 当前在线用户"
who
echo ""

echo "6. 监听中的端口"
ss -tlnp 2>/dev/null | head -10
echo ""

echo "========================================"
echo "      报告生成时间:$(date)"
echo "========================================"

运行它

<#! 给执行权限
chmod +x sysinfo.sh

<#! 运行
./sysinfo.sh

你会看到服务器各种信息整整齐齐打印出来。

📝 发生了什么?
#!/bin/bash 告诉系统用 Bash 解释器运行;
$(...) 是命令替换,执行里面的命令并把结果插到字符串里;
| 管道把前面命令的输出送给后面处理。
今日检验:运行脚本看到整整齐齐的报告。你正式迈出 IDC 运维第一步!