1. Linux系统基础认知
第一次接触Linux时,我被那个漆黑的终端界面吓到了——没有熟悉的开始菜单,没有可视化的操作按钮,只有一行行等待输入的命令。但当我真正开始使用后才发现,这个看似复杂的系统其实比Windows更加高效稳定。作为服务器领域的绝对霸主,Linux在全球超算中心占有90%以上的市场份额,连安卓系统也是基于Linux内核开发的。
对于开发者而言,Linux就像瑞士军刀般不可或缺。我日常工作中90%的服务器维护、代码编译、数据处理都在Linux环境下完成。与图形界面操作相比,命令行虽然学习曲线陡峭,但熟练后效率能提升数倍。比如批量重命名100个文件,在Windows资源管理器里可能需要重复操作上百次,而Linux一行rename命令就能搞定。
建议新手从Ubuntu或CentOS开始入门,这两个发行版文档丰富且社区活跃。不要被网上各种炫酷的桌面特效迷惑,服务器环境建议选择最稳定的LTS版本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件系统操作精要
2.1 目录导航与查看
刚接触Linux时最常卡在文件目录操作上。与Windows不同,Linux没有盘符概念,所有设备都挂载在统一的根目录(/)下。记住这几个黄金命令:
bash复制pwd # 显示当前路径(经常忘记自己在哪时就靠它)
ls -lh # 人性化显示文件大小(MB/GB单位)
tree -L 2 # 用树形结构展示目录(需安装tree包)
有次我在生产环境误操作,把ls -l输成了sl,结果跳出来个小火车动画——原来这是开发者埋的彩蛋。但切记不要在正式场合玩这个,显得很不专业。
2.2 文件操作四件套
bash复制cp -av 源文件 目标路径 # -a保留所有属性,-v显示进度
mv *.txt /backup # 使用通配符批量移动
rm -rf 目录名 # 这个命令要慎用!-r递归删除 -f强制
血的教训:曾经有同事在根目录执行
rm -rf *,结果整个系统瘫痪。建议在~/.bashrc里添加alias rm='rm -i'让删除前二次确认。
3. 文本处理三剑客
3.1 grep搜索神器
排查日志时grep能节省大量时间:
bash复制grep -n "ERROR" app.log # 显示行号
grep -A3 -B2 "exception" log # 显示匹配行前后内容
zgrep "timeout" *.gz # 直接搜索压缩包
3.2 sed流编辑器
批量修改配置文件时特别有用:
bash复制sed -i 's/old/new/g' file.conf # 全局替换
sed -n '10,20p' access.log # 只打印10-20行
3.3 awk数据分析
统计Nginx访问日志的TOP IP:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
4. 权限管理核心知识
4.1 用户与组
创建运维账号的标准流程:
bash复制useradd -m -s /bin/bash opsuser
passwd opsuser # 设置密码
usermod -aG sudo opsuser # 加入sudo组
4.2 文件权限
理解权限数字表示法很重要:
- 755 → owner:rwx group:r-x other:r-x
- 600 → 仅所有者可读写
修改权限的两种方式:
bash复制chmod -R 755 /webroot # 递归修改
chown -R nginx:nginx /var/www # 修改属主和属组
5. 网络配置与排错
5.1 基础网络命令
bash复制ifconfig eth0 | grep "inet " # 查看IP(新版用ip addr)
netstat -tulnp | grep 80 # 检查端口占用
traceroute www.baidu.com # 路由追踪
5.2 SSH安全配置
修改/etc/ssh/sshd_config提高安全性:
code复制PermitRootLogin no
PasswordAuthentication no # 强制密钥登录
AllowUsers opsuser
6. 系统监控与性能分析
6.1 实时监控
bash复制top -c -u mysql # 监控特定用户进程
iotop -o # 查看磁盘IO大户
iftop -i eth0 # 实时网络流量
6.2 日志分析
查看最近登录记录:
bash复制last -n 10
grep "Failed password" /var/log/auth.log
7. 软件包管理对比
7.1 apt vs yum
| 功能 | Debian系(apt) | RedHat系(yum) |
|---|---|---|
| 安装软件 | apt install nginx | yum install httpd |
| 更新源 | apt update | yum makecache |
| 搜索包 | apt search python3 | yum list python* |
7.2 编译安装要点
以Nginx为例的标准编译流程:
bash复制./configure --prefix=/usr/local/nginx \
--with-http_ssl_module
make -j$(nproc) # 并行编译
make install
8. 计划任务管理
8.1 crontab语法
bash复制* * * * * command
│ │ │ │ │
│ │ │ │ └── 星期几 (0 - 6)
│ │ │ └──── 月份 (1 - 12)
│ │ └────── 日 (1 - 31)
│ └──────── 小时 (0 - 23)
└────────── 分钟 (0 - 59)
8.2 实用案例
每天凌晨备份数据库:
bash复制0 3 * * * /usr/bin/mysqldump -uroot -p dbname > /backup/db_$(date +\%F).sql
9. Shell脚本编程要点
9.1 安全规范
- 开头必须加
#!/bin/bash - 使用
set -euo pipefail启用严格模式 - 变量引用加双引号:
"$var"
9.2 实用代码片段
检查服务状态的函数:
bash复制check_service() {
if systemctl is-active --quiet $1; then
echo "$1 is running"
return 0
else
echo "$1 is NOT running" >&2
return 1
fi
}
10. 磁盘管理进阶
10.1 LVM操作流程
创建逻辑卷的标准步骤:
bash复制pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
lvcreate -L 100G -n lv_mysql vg_data
mkfs.xfs /dev/vg_data/lv_mysql
10.2 磁盘故障排查
当出现"Read-only file system"错误时:
bash复制dmesg | grep -i error # 查看内核日志
smartctl -a /dev/sda # 检查硬盘SMART状态
fsck -y /dev/sda1 # 修复文件系统(需卸载)
11. 环境变量配置技巧
11.1 永久生效配置
在~/.bashrc中添加:
bash复制export PATH="$PATH:/usr/local/go/bin"
export EDITOR=vim # 设置默认编辑器
11.2 临时变量使用
调试时常用:
bash复制DEBUG=1 ./start.sh # 传递环境变量
env | grep -i proxy # 查看当前环境变量
12. 终端效率工具
12.1 tmux多会话管理
基本操作组合:
bash复制tmux new -s session_name # 新建会话
Ctrl+b d # 分离会话
tmux attach -t session_name # 重新接入
12.2 命令行快捷键
- Ctrl + r 反向搜索历史命令
- Ctrl + a/e 跳转到行首/行尾
- Alt + . 插入上一个命令的最后一个参数
13. 安全加固措施
13.1 防火墙配置
UFW简易设置:
bash复制ufw allow 22/tcp
ufw allow from 192.168.1.0/24
ufw enable
13.2 入侵检测
安装配置fail2ban:
bash复制apt install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 修改jail.local配置
systemctl restart fail2ban
14. 容器化操作入门
14.1 Docker基础命令
bash复制docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
docker exec -it nginx bash # 进入容器
docker logs -f --tail=100 app # 实时查看日志
14.2 常用镜像操作
bash复制docker pull alpine:latest
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
15. 性能调优实战
15.1 内存优化
查看内存使用情况:
bash复制free -h
cat /proc/meminfo | grep -i cache
15.2 系统参数调整
临时修改打开文件数限制:
bash复制ulimit -n 65535
# 永久生效需修改/etc/security/limits.conf
16. 备份与恢复方案
16.1 全量备份脚本
bash复制tar -czpf /backup/full_$(date +%Y%m%d).tar.gz \
--exclude=/proc --exclude=/sys \
--exclude=/dev --exclude=/backup /
16.2 rsync增量备份
bash复制rsync -avz --delete /data/ user@backup:/backups/
# 添加到crontab实现定时同步
17. 内核参数调优
17.1 查看当前配置
bash复制sysctl -a | grep tcp
cat /proc/sys/net/ipv4/tcp_tw_reuse
17.2 修改内核参数
临时生效:
bash复制sysctl -w net.ipv4.tcp_tw_reuse=1
永久生效:
bash复制echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
sysctl -p
18. 系统救援模式
18.1 单用户模式进入
- 重启系统
- 在GRUB菜单按e编辑
- 在linux行末尾添加
single - Ctrl+x启动
18.2 修复root密码
bash复制mount -o remount,rw /
passwd root
sync
reboot
19. 日志轮转配置
19.1 logrotate示例
/etc/logrotate.d/nginx配置:
code复制/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
sharedscripts
postrotate
/usr/bin/systemctl reload nginx >/dev/null 2>&1 || true
endscript
}
20. 实用脚本合集
20.1 批量重命名
bash复制for file in *.jpg; do
mv "$file" "vacation_${file}"
done
20.2 端口扫描
bash复制for port in {1..1024}; do
timeout 1 bash -c "echo >/dev/tcp/192.168.1.1/$port" && echo "$port open"
done
