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、Alpinepacmanapk

查看当前系统:

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 前,务必先通过 pwdls 确认路径。

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

长期运行的程序推荐用 systemdtmuxscreen 或专业进程管理器管理。

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

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

Git 基础学习笔记