单元四 上云 · 第 16 课

Linux 生存指南

服务器上没有桌面和鼠标,只有终端。好消息是,日常只需要二十来个命令,而且很多你在第 4 课已经用过了。

本课目标

  • 认识 Linux 的目录结构和提示符。
  • 掌握服务器上最常用的命令。
  • 看懂文件权限,会用 chmod 保护敏感文件。
  • 会查看服务状态和日志。

先懂概念:Linux 的目录

Linux 没有 C 盘、D 盘,所有东西都在一棵从 /(根目录)开始的树上:

目录放什么
/根目录,一切的起点
/home/ubuntu你的家目录,也就是 ~
/etc系统和软件的配置文件
/var/log日志文件
/tmp临时文件,重启后可能被清空

提示符末尾的 $ 表示你是普通用户;如果是 #,说明你是 root 超级管理员,要格外小心。

跟着做:常用命令

先登录服务器:ssh ai-server。下面的命令都在服务器上运行。

看和走

pwd
ls -la
cd /etc
cd ~

ls -la 比 ls 多显示隐藏文件(名字以 . 开头的)和详细信息。

文件和文件夹

mkdir -p ~/apps/weekly-report
cd ~/apps
echo "hello" > test.txt
cat test.txt
cp test.txt test-copy.txt
mv test-copy.txt test2.txt
ls
rm test.txt test2.txt
  • mkdir -p:建文件夹,-p 表示上层不存在时一起建好。这里建的 ~/apps/weekly-report,后面部署时会用到。
  • >:把输出写进文件(覆盖原内容);>>:追加到文件末尾。
  • cp 复制,mv 移动或改名,rm 删除。

Linux 的 rm 没有回收站,删了就找不回来。 删除前先用 ls 确认文件名;rm -r(删除整个文件夹)更要三思。

看长文件和日志

less /etc/os-release

用方向键或空格翻页,按 q 退出。

sudo tail -n 20 /var/log/syslog

看系统日志的最后 20 行。把 -n 20 换成 -f,可以实时跟踪新增的内容,按 Ctrl + C 停止。

看系统状态

df -h
free -h
top
  • df -h:磁盘还剩多少空间。
  • free -h:内存用了多少。
  • top:实时显示哪些程序占用资源最多,按 q 退出。

安装软件

sudo apt update
sudo apt install -y tree
tree ~/apps

apt 是 Ubuntu 的软件商店。sudo 表示以管理员身份运行,安装软件、修改系统配置时需要它。

服务和日志

系统里一直在后台运行的程序叫服务,比如 SSH 服务:

systemctl status ssh

看到绿色的 active (running) 就是运行中,按 q 退出。

看看最近有谁尝试登录你的服务器:

sudo journalctl -u ssh -n 30

你很可能会看到一些陌生 IP 在尝试登录,这就是上一课关闭密码登录的原因。

看看哪些程序在监听哪些端口:

sudo ss -tlnp

现在应该只能看到 22 端口(SSH)等少数几项。

文件权限

ls -l ~/.ssh/authorized_keys

输出的开头类似 -rw-------,后面跟着所有者 ubuntu。这串字符分成三组,分别表示所有者、同组用户、其他人能做什么:r 读、w 写、x 执行、- 不能。

- rw- --- ---
   │   │   └ 其他人:什么都不能
   │   └──── 同组用户:什么都不能
   └──────── 所有者:可读可写

存放密钥、密码的文件,应该设成只有自己能读写:

chmod 600 文件名

后面放 Key 的 .env 文件就要这样设置。

管道:把命令接起来

| 把前一个命令的输出交给后一个命令处理:

ls -la /etc | grep ssh

grep 只显示包含指定文字的行,常用来从一大堆输出里找东西。

千万不要做

  • 不要运行来路不明的命令,尤其是 curl ... | sudo sh 这种“下载后直接以管理员身份运行”的写法,除非来源是官方文档。
  • 不要 rm -rf 你不确定的路径,尤其是 / 开头的。
  • 不要用 chmod 777 解决权限问题,它让所有人都能改这个文件。
  • 不要把 Key、密码直接写在命令行里,它们会留在命令历史中。

看不懂输出怎么办

把命令和输出复制下来(删掉其中的密码、Key),交给你电脑上的 Codex:

这是我在 Ubuntu 服务器上运行的命令和输出,请解释它是什么意思,有没有需要处理的问题:
(粘贴在这里)

常用命令速查

命令作用
pwd / ls -la / cd在哪、有什么、去哪
mkdir -p / cp / mv / rm建、复制、移动改名、删除
cat / less / tail -f看文件、翻页看、实时跟踪
df -h / free -h / top磁盘、内存、进程
sudo apt install安装软件
systemctl status / journalctl -u服务状态、服务日志
ss -tlnp监听的端口
chmod 600只有自己能读写
grep / |过滤、接起两个命令
exit退出 SSH

自检

  • 我知道 /etc、/var/log、~ 分别放什么。
  • 我会用 ls -la、cat、less、tail 查看文件和日志。
  • 我能看懂 -rw-------,知道敏感文件要 chmod 600。
  • 我用 systemctl status 和 journalctl 看过 SSH 服务。
  • ~/apps/weekly-report 文件夹已经建好。