avatar👋
fighting27fighting27的博客 | 壹人小站

今人不见古时月,今月曾经照古人

总是畏惧海洋的人,是无法离开岸边的

Linux 基础入门学习笔记

Linux 基础入门笔记 ​

面向初学者,示例使用 Bash。适用于 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux 等常见发行版。

1. Linux 与发行版 ​

Linux 通常指由内核、Shell、系统工具和软件包共同组成的操作系统。常见发行版:

系列发行版包管理器
Debian 系Ubuntu、Debianapt
Red Hat 系RHEL、Rocky Linux、AlmaLinuxdnf / yum
其他Arch、Alpinepacman、apk

查看当前系统:

bash
cat /etc/os-release
uname -a

2. SSH 登录与帮助 ​

连接远程服务器:

bash
ssh 用户名@服务器IP
ssh -p 2222 用户名@服务器IP
ssh -i ~/.ssh/id_ed25519 用户名@服务器IP
exit

获取命令帮助:

bash
命令 --help
man 命令
which 命令
type 命令

3. Shell 基础 ​

命令的通用形式:

text
命令 [选项] [参数]

例如:

bash
ls -lah /var/log

常用快捷键:

快捷键作用
Tab补全命令、文件名
Ctrl + C终止当前前台命令
Ctrl + D退出 Shell 或结束输入
Ctrl + L清屏
Ctrl + A / Ctrl + E跳至命令行开头 / 末尾
Ctrl + R搜索命令历史
↑ / ↓浏览历史命令
bash
history

4. 文件系统与路径 ​

Linux 从根目录 / 开始,不使用 Windows 的盘符结构。

目录用途
/根目录
/home普通用户家目录
/rootroot 用户家目录
/etc系统和服务配置
/var日志、缓存、运行数据
/usr程序、库、共享资源
/tmp临时文件
/dev设备文件
/proc内核和进程信息
/mnt、/media挂载其他磁盘的常用位置
  • 绝对路径从 / 开始,例如 /etc/nginx/nginx.conf。
  • 相对路径相对于当前目录,例如 ./src/main.py。
  • . 是当前目录,.. 是上级目录,~ 是当前用户家目录。
bash
pwd
cd /var/log
cd ..
cd ~
cd -

5. 文件与目录操作 ​

bash
ls -lah                 # 详细列出文件,包含隐藏文件
mkdir docs              # 创建目录
mkdir -p project/src    # 递归创建目录
touch notes.md          # 创建空文件
cp a.txt b.txt          # 复制文件
cp -r dir-a dir-b       # 复制目录
mv old.txt new.txt      # 重命名或移动
rm file.txt             # 删除文件
rm -r old-dir           # 递归删除目录
file filename           # 判断文件类型
stat filename           # 查看详细元数据

以 . 开头的是隐藏文件,例如 .bashrc。

注意:rm 通常不会进入回收站。执行 rm -rf 前,务必先通过 pwd 和 ls 确认路径。

6. 阅读与编辑文本 ​

bash
cat file.txt                 # 输出小文件全部内容
less file.txt                # 分页查看,按 q 退出
head -n 20 file.txt          # 前 20 行
tail -n 20 file.txt          # 后 20 行
tail -f /var/log/syslog      # 持续追踪日志
nano file.txt                # 新手友好编辑器
vim file.txt                 # 常用专业编辑器

Vim 基础:按 i 编辑,按 Esc 回到普通模式,输入 :wq 保存退出,输入 :q! 放弃修改退出。

7. 搜索、管道与重定向 ​

7.1 搜索文件和文本 ​

bash
find . -name '*.log'
find /var/log -type f -mtime -7
find . -type f -size +100M

grep 'error' app.log
grep -in 'error' app.log
grep -r 'TODO' ./src
grep -v '^#' config.conf

7.2 管道和重定向 ​

bash
ps aux | grep nginx
journalctl -u nginx | grep -i error

命令 > output.txt       # 覆盖写入标准输出
命令 >> output.txt      # 追加标准输出
命令 2> error.txt       # 错误输出写入文件
命令 > all.txt 2>&1     # 标准输出和错误输出都写入文件

8. 用户、权限与 sudo ​

bash
whoami
id
groups
passwd
sudo systemctl restart nginx

查看权限:

text
-rw-r--r-- 1 alice developers 1024 Jul 13 10:00 example.txt

前三组权限依次属于:所有者、所属组、其他用户。权限中 r 表示读、w 表示写、x 表示执行。

bash
chmod 644 file.txt         # 所有者读写,其他人只读
chmod 755 script.sh        # 所有者可读写执行,其他人可读执行
chmod u+x script.sh        # 给所有者增加执行权限
chown alice:dev file.txt   # 修改所有者和组
数值权限
4r--
5r-x
6rw-
7rwx

目录的 x 权限表示可进入和访问该目录。

9. 软件包管理 ​

Ubuntu / Debian ​

bash
sudo apt update
sudo apt upgrade
sudo apt install nginx
sudo apt remove nginx
apt search nginx
apt show nginx

CentOS / Rocky / RHEL ​

bash
sudo dnf check-update
sudo dnf upgrade
sudo dnf install nginx
sudo dnf remove nginx
dnf search nginx

旧版 Red Hat 系统可能使用 yum,多数命令可以将 dnf 替换为 yum。

10. 进程、任务与服务 ​

10.1 进程 ​

bash
ps aux
ps aux | grep python
top
htop
pgrep -a nginx
kill PID
kill -9 PID

kill 默认发送正常结束信号;kill -9 会强制终止进程,仅在普通结束无效时使用。

后台任务:

bash
long-command &
jobs
fg %1

长期运行的程序推荐用 systemd、tmux、screen 或专业进程管理器管理。

10.2 systemd ​

bash
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl enable nginx
sudo systemctl disable nginx

journalctl -u nginx
journalctl -u nginx -f
journalctl -u nginx --since '1 hour ago'

11. 磁盘、内存与日志 ​

bash
df -h
du -sh *
du -sh /var/log/*
free -h
uptime

磁盘满时的排查顺序:

  1. 用 df -h 确认已满的分区。
  2. 用 du -sh /目标目录/* 找出大目录。
  3. 检查 /var/log、Docker 镜像和容器、应用上传文件、缓存。
  4. 清理前确认文件用途,不要直接删除数据库或正在写入的日志。

12. 网络基础 ​

bash
ip addr
ip route
ping -c 4 8.8.8.8
ping -c 4 example.com
curl -I https://example.com
curl -v https://example.com
ss -lntp
ss -lntp | grep ':80'
getent hosts example.com
cat /etc/resolv.conf

常见防火墙工具:

bash
sudo ufw status
sudo firewall-cmd --list-all

13. 压缩与传输文件 ​

bash
tar -czf backup.tar.gz dir/
tar -xzf backup.tar.gz
tar -tf backup.tar.gz
zip -r backup.zip dir/
unzip backup.zip

scp ./app.tar.gz 用户名@服务器IP:/tmp/
scp -P 2222 ./app.tar.gz 用户名@服务器IP:/tmp/
scp 用户名@服务器IP:/var/log/app.log ./

14. 环境变量与配置文件 ​

bash
echo $HOME
echo $PATH
export APP_ENV=production
source ~/.bashrc
文件用途
~/.bashrc交互式 Bash 配置
~/.profile登录 Shell 配置
~/.zshrcZsh 配置
/etc/profile全局登录 Shell 配置

引号规则:

bash
name='Linux'
echo \"$name 入门\"   # 双引号会展开变量
echo '$name 入门'   # 单引号不会展开变量
cp \"my file.txt\" \"/tmp/my file.txt\"

15. 常见排错示例 ​

查看 8080 端口被哪个进程占用:

bash
sudo ss -lntp | grep ':8080'

追踪应用服务日志:

bash
sudo journalctl -u myapp -f

搜索近 50 条错误日志:

bash
grep -in 'error\\|exception\\|fatal' /var/log/app/app.log | tail -n 50

修改 Nginx 配置后的正确操作:

bash
sudo nginx -t
sudo systemctl reload nginx

16. 安全原则 ​

  1. 不理解的命令先用 --help 或 man 查看。
  2. 不直接执行来源不明的 curl | bash、rm -rf 等命令。
  3. 修改配置前先备份,例如:sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。
  4. 线上服务器使用普通用户加 sudo,避免长期直接使用 root。
  5. 定期安装安全更新,优先使用 SSH 密钥登录,关闭不必要端口。
  6. 文件路径包含空格时始终使用引号。

学习 Linux 的重点不是背下全部命令,而是理解文件、权限、进程、网络、服务和日志如何协作。遇到问题时,先记录现象,再用状态命令和日志逐层定位。

Git 基础学习笔记