Linux 基础入门笔记
面向初学者,示例使用 Bash。适用于 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux 等常见发行版。
1. Linux 与发行版
Linux 通常指由内核、Shell、系统工具和软件包共同组成的操作系统。常见发行版:
| 系列 | 发行版 | 包管理器 |
|---|---|---|
| Debian 系 | Ubuntu、Debian | apt |
| Red Hat 系 | RHEL、Rocky Linux、AlmaLinux | dnf / yum |
| 其他 | Arch、Alpine | pacman、apk |
查看当前系统:
bash
cat /etc/os-release
uname -a2. 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
history4. 文件系统与路径
Linux 从根目录 / 开始,不使用 Windows 的盘符结构。
| 目录 | 用途 |
|---|---|
/ | 根目录 |
/home | 普通用户家目录 |
/root | root 用户家目录 |
/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.conf7.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 # 修改所有者和组| 数值 | 权限 |
|---|---|
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
目录的 x 权限表示可进入和访问该目录。
9. 软件包管理
Ubuntu / Debian
bash
sudo apt update
sudo apt upgrade
sudo apt install nginx
sudo apt remove nginx
apt search nginx
apt show nginxCentOS / 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 PIDkill 默认发送正常结束信号;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磁盘满时的排查顺序:
- 用
df -h确认已满的分区。 - 用
du -sh /目标目录/*找出大目录。 - 检查
/var/log、Docker 镜像和容器、应用上传文件、缓存。 - 清理前确认文件用途,不要直接删除数据库或正在写入的日志。
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-all13. 压缩与传输文件
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 配置 |
~/.zshrc | Zsh 配置 |
/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 nginx16. 安全原则
- 不理解的命令先用
--help或man查看。 - 不直接执行来源不明的
curl | bash、rm -rf等命令。 - 修改配置前先备份,例如:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。 - 线上服务器使用普通用户加
sudo,避免长期直接使用 root。 - 定期安装安全更新,优先使用 SSH 密钥登录,关闭不必要端口。
- 文件路径包含空格时始终使用引号。
学习 Linux 的重点不是背下全部命令,而是理解文件、权限、进程、网络、服务和日志如何协作。遇到问题时,先记录现象,再用状态命令和日志逐层定位。
