第 207 章:Linux 基础与常用命令
学习目标
- 掌握 Linux 文件系统
- 学会常用命令
- 理解文件权限
- 熟悉用户与进程管理
一、Linux 简介
Linux 是开源的类 Unix 操作系统,服务器领域主流。
二、文件系统结构
| 目录 | 作用 |
|---|---|
/bin | 基本命令 |
/sbin | 系统命令 |
/etc | 配置文件 |
/home | 普通用户家目录 |
/root | 超级用户家目录 |
/usr | 应用软件 |
/var | 运行时数据(log、cache) |
/tmp | 临时文件 |
/opt | 第三方软件 |
/proc | 进程信息 |
/dev | 设备 |
三、基础命令
3.1 文件与目录
bash
# 切换目录
cd /home # 绝对路径
cd .. # 上级
cd ~ # 家目录
cd - # 上次目录
# 列目录
ls # 简单
ls -l # 详细
ls -la # 含隐藏
ls -lh # 人类可读大小
ls -lt # 按时间排序
# 增删改
mkdir test # 创建目录
mkdir -p a/b/c # 递归
touch file.txt # 创建空文件 / 更新 mtime
cp src.txt dst.txt # 复制
cp -r dir1 dir2 # 递归
mv old new # 移动/重命名
rm file.txt # 删除
rm -rf dir # 强制递归
rmdir empty # 删空目录
# 查看
cat file # 全输出
less file # 分页(空格翻页,q 退出)
head -n 10 file # 前 10 行
tail -n 10 file # 后 10 行
tail -f log # 实时跟踪
# 查找
find / -name "*.log" # 按名
find . -type f -size +1M # 按大小
find . -mtime -7 # 7 天内修改
which java # 查命令位置
whereis java # 查二进制、源码、文档3.2 文本三剑客
grep(过滤)
bash
grep "error" log.txt
grep -i "error" log.txt # 忽略大小写
grep -n "error" log.txt # 显示行号
grep -v "error" log.txt # 反选
grep -r "TODO" src/ # 递归
grep -E "error|warning" log.txt # 多模式(扩展正则)sed(替换)
bash
sed 's/old/new/' file.txt # 替换(只输出,不写文件)
sed -i 's/old/new/g' file.txt # 原地替换
sed '/^$/d' file.txt # 删空行
sed -n '10,20p' file.txt # 打印 10-20 行awk(列处理)
bash
awk '{print $1}' file.txt # 打印第 1 列
awk -F: '{print $1, $7}' /etc/passwd # 指定分隔符
awk '$3 > 100 {print $1}' file.txt # 条件
awk '{sum += $1} END {print sum}' file # 求和3.3 链接
bash
ln -s /opt/java/bin/java /usr/bin/java # 软链
ln file1 file2 # 硬链四、权限管理
4.1 权限位
-rwxr-xr--
↑ ↑↑↑ ↑↑↑ ↑↑↑
│ │││ │││ │└─ 其他用户
│ │││ │││ └── 其他用户执行
│ │││ │└──── 其他用户写
│ │││ └───── 其他用户读
│ │││
│ ││└─────── 组用户执行
│ │└──────── 组用户写
│ └───────── 组用户读
│
└────────── 文件类型
- 普通文件
d 目录
l 软链权限数值:
- r = 4
- w = 2
- x = 1
4.2 修改权限
bash
chmod 755 file # rwxr-xr-x
chmod u+x file # 用户加执行
chmod g+w file # 组加写
chmod o-r file # 其他去读
chown user:group file # 改属主 + 属组
chown -R user dir # 递归五、用户管理
bash
# 添加
useradd -m -s /bin/bash tom
passwd tom
# 删除
userdel -r tom
# 组
groupadd dev
usermod -aG dev tom
# 切换
su - tom
sudo command
# 查看
whoami
who
id tom六、进程管理
6.1 查看
bash
ps aux # 全部进程
ps -ef # 完整格式
top # 实时
htop # 增强版
# 按 CPU / 内存排序
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head6.2 进程操作
bash
kill PID # 正常结束
kill -9 PID # 强制
killall process_name # 按名字
pkill -f pattern # 按模式
# 后台
nohup java -jar app.jar &
nohup java -jar app.jar > log.out 2>&1 &
disown
# 查 PID
pgrep -f java
pidof java6.3 服务
bash
# systemd(主流)
systemctl start nginx
systemctl stop nginx
systemctl status nginx
systemctl enable nginx # 开机自启
journalctl -u nginx -f # 日志七、网络命令
bash
ip addr # IP
ip route # 路由
ping host
curl http://x.com
wget url
# 端口
netstat -tlnp # 监听端口
ss -tlnp # 现代替代
# SSH
ssh user@host
ssh -i key.pem user@host
scp file user@host:/path
scp user@host:/file local/
# DNS
nslookup x.com
dig x.com八、磁盘管理
bash
df -h # 磁盘使用
du -sh dir # 目录大小
du -sh * | sort -h
# 分区 / 挂载
fdisk -l
mount /dev/sdb1 /mnt
umount /mnt
# swap
free -h
swapon /dev/sdb2九、软件包
bash
# Debian/Ubuntu
apt update
apt install nginx
apt remove nginx
# CentOS
yum install nginx
dnf install nginx
# 通用
./configure && make && make install十、系统信息
bash
uname -a # 系统
cat /etc/os-release # 发行版
uptime # 运行时长
date
cal
# CPU
lscpu
nproc
# 内存
free -h
# 硬件
lshw十一、SSH 免密登录
bash
# 本地生成密钥
ssh-keygen -t ed25519
# 上传公钥
ssh-copy-id user@host
# 或手动
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"十二、实用技巧
12.1 快捷键
| 快捷键 | 作用 |
|---|---|
| Ctrl + C | 终止 |
| Ctrl + D | 退出 / EOF |
| Ctrl + L | 清屏 |
| Ctrl + A / E | 行首 / 行尾 |
| Ctrl + U / K | 删到行首 / 行尾 |
| Ctrl + R | 搜索历史 |
| Ctrl + Z | 挂起 + bg 恢复 |
12.2 别名
bash
# ~/.bashrc
alias ll='ls -la'
alias gs='git status'
alias k='kubectl'
alias ports='netstat -tlnp | grep LISTEN'
alias myip='curl ifconfig.me'
source ~/.bashrc12.3 历史
bash
history
!100 # 执行第 100 条
!! # 上一条
!ssh # 最近以 ssh 开头的
Ctrl + R # 模糊搜十三、本章小结
| 类别 | 命令 |
|---|---|
| 文件 | ls / cd / cp / mv / rm |
| 文本 | grep / sed / awk |
| 权限 | chmod / chown |
| 进程 | ps / top / kill |
| 网络 | ip / curl / ssh |
| 磁盘 | df / du |
| 服务 | systemctl |
动手练习
- 创建用户 tom,加入 dev 组
- 写一个 shell 脚本批量重命名文件
- 配置 SSH 免密登录
- 用 grep / awk 分析 nginx 访问日志
推荐阅读
下一章:第 208 章:Shell 脚本编程 →