当前位置: 首页 > java >正文

Linux指令入门:DevOps与SRE视角

文章目录

  • Linux指令入门:DevOps与SRE视角
    • 一、Linux基础命令概述
    • 二、文件系统操作命令
      • 1. 文件与目录基本操作
      • 2. 文件查看与编辑
      • 3. 文件压缩与归档
    • 三、进程管理命令
      • 1. 进程查看与控制
      • 2. 服务管理(Systemd)
    • 四、网络管理命令
      • 1. 网络连接与诊断
      • 2. 网络性能监控
    • 五、权限与安全命令
      • 1. 文件权限管理
      • 2. 用户与组管理
    • 六、日志查看与分析
      • 1. 系统日志
      • 2. 应用日志
    • 七、系统监控与诊断
      • 1. 系统资源监控
      • 2. 进程诊断
    • 八、脚本与自动化
      • 1. Shell脚本基础
      • 2. 自动化工具集成
    • 九、安全加固与审计
      • 1. 安全检查命令
      • 2. 日志审计
    • 十、DevOps与SRE工作流中的Linux命令应用
      • 1. 部署流程示例
      • 2. 故障排查流程
    • 总结

Linux指令入门:DevOps与SRE视角

一、Linux基础命令概述

作为DevOps和SRE工程师,熟练掌握Linux命令是日常工作的基础。Linux命令主要分为以下几类:

  1. 文件系统操作
  2. 进程管理
  3. 网络管理
  4. 权限管理
  5. 日志查看
  6. 监控与诊断

二、文件系统操作命令

1. 文件与目录基本操作

# 查看当前目录内容
ls -lah  # -l详细列表,-a显示隐藏文件,-h人类可读大小# 创建目录
mkdir -p /path/to/directory  # -p递归创建父目录# 创建文件
touch file.txt  # 创建空文件
> file.txt      # 清空或创建文件# 复制文件/目录
cp -r source_dir dest_dir  # -r递归复制目录# 移动/重命名
mv old_name new_name
mv /path/file /new/path/# 删除
rm -rf /path/to/remove  # -r递归删除,-f强制删除(慎用)

SRE最佳实践

  • 使用ls -lah查看文件权限和大小
  • 删除前先用ls确认路径
  • 重要操作前先备份

2. 文件查看与编辑

# 查看文件内容
cat file.txt          # 直接输出全部内容
less file.txt         # 分页查看,支持搜索
head -n 10 file.txt   # 查看前10行
tail -n 10 file.txt   # 查看后10行
tail -f log_file.log  # 实时跟踪日志文件# 文本搜索
grep "pattern" file.txt
grep -r "pattern" /path/  # 递归搜索目录# 文件编辑(基础命令)
nano file.txt      # 简单编辑器
vim file.txt       # 强大编辑器(需学习基本命令)

DevOps实用技巧

  • grep -i忽略大小写
  • grep -v反向匹配
  • grep -A 3显示匹配行及后3行
  • grep -B 3显示匹配行及前3行

3. 文件压缩与归档

# 压缩/解压
tar -czvf archive.tar.gz dir/  # 创建gzip压缩包
tar -xzvf archive.tar.gz       # 解压gzip包
tar -cjvf archive.tar.bz2 dir/ # bzip2压缩
tar -xjvf archive.tar.bz2      # 解压bzip2包# zip/unzip
zip -r archive.zip dir/
unzip archive.zip# 查看压缩包内容
tar -tzvf archive.tar.gz

SRE场景应用

  • 备份配置文件:tar -czvf configs_$(date +%F).tar.gz /etc/myapp/
  • 日志归档:tar -czvf logs_$(date +%F).tar.gz /var/log/myapp/

三、进程管理命令

1. 进程查看与控制

# 查看进程
ps aux | grep process_name  # 查看特定进程
top                         # 动态查看进程资源使用
htop                        # 更友好的进程查看工具(需安装)# 终止进程
kill PID                    # 发送SIGTERM(15)
kill -9 PID                 # 强制终止(SIGKILL)
pkill process_name          # 按名称终止进程
killall process_name        # 同上# 后台运行
command &                   # 后台运行
nohup command &             # 忽略挂断信号
jobs -l                     # 查看后台任务
fg %job_id                  # 将后台任务调回前台
bg %job_id                  # 让暂停的任务继续执行

DevOps实用技巧

  • 监控资源占用高的进程:ps aux --sort=-%mem | head -n 10
  • 查找僵尸进程:ps aux | grep 'Z'
  • 批量终止进程:pkill -f "pattern"

2. 服务管理(Systemd)

# 查看服务状态
systemctl status service_name# 启动/停止/重启服务
systemctl start service_name
systemctl stop service_name
systemctl restart service_name# 设置开机启动
systemctl enable service_name
systemctl disable service_name# 查看服务日志
journalctl -u service_name

SRE关键操作

  • 服务健康检查:systemctl is-active service_name
  • 查看最近服务日志:journalctl -u service_name -n 50 --no-pager
  • 服务重启后验证:systemctl show -p ActiveState service_name

四、网络管理命令

1. 网络连接与诊断

# 查看网络接口
ip addr show
ifconfig  # 较旧系统# 测试网络连通性
ping host
ping -c 4 host  # 发送4个包后停止# 端口测试
telnet host port
nc -zv host port  # netcat更现代的替代方案# 路由信息
ip route show
route -n# DNS查询
nslookup domain
dig domain

DevOps实用技巧

  • 检查本地端口占用:netstat -tulnp | grep :80
  • 查看连接状态统计:ss -s
  • 跟踪路由路径:traceroute host

2. 网络性能监控

# 实时网络流量
iftop -i eth0  # 需安装
nload          # 另一种流量监控工具# 带宽测试
iperf -s       # 服务端
iperf -c server_ip  # 客户端测试# 抓包分析
tcpdump -i eth0 port 80 -w capture.pcap
wireshark capture.pcap  # 图形化分析(需安装)

SRE关键操作

  • 监控异常流量:iftop -P -n -B -i eth0
  • 分析HTTP流量:tcpdump -i any -A 'port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
  • 测试SSL证书:openssl s_client -connect host:443

五、权限与安全命令

1. 文件权限管理

# 查看权限
ls -l file.txt# 修改权限
chmod 755 file.txt  # rwxr-xr-x
chmod u+x script.sh # 给所有者添加执行权限
chmod g-w file.txt  # 移除组写权限# 修改所有者
chown user:group file.txt

SRE安全实践

  • 关键文件权限设置:chmod 600 /etc/shadow
  • 敏感目录权限:chmod 750 /etc/myapp/config
  • 定期检查权限:find /path -type f ! -perm 644

2. 用户与组管理

# 用户管理
useradd -m username       # 创建用户并创建家目录
passwd username           # 修改密码
usermod -aG group user    # 添加用户到组
userdel -r username       # 删除用户及家目录# 组管理
groupadd groupname
groupdel groupname

DevOps实用技巧

  • 创建专用服务账户:useradd -r -s /sbin/nologin service_user
  • 限制sudo权限:visudo添加特定命令权限
  • 审计用户历史:last, lastlog, who

六、日志查看与分析

1. 系统日志

# 查看系统日志
journalctl -xe
journalctl -u service_name# 查看传统日志
tail -f /var/log/syslog      # Debian/Ubuntu
tail -f /var/log/messages    # RHEL/CentOS# 按时间筛选日志
journalctl --since "2023-01-01" --until "2023-01-02"

SRE日志分析技巧

  • 实时监控错误日志:journalctl -u service_name | grep -i error
  • 统计错误频率:journalctl -u service_name | grep -i error | wc -l
  • 日志轮转配置:检查/etc/logrotate.d/

2. 应用日志

# 查看应用日志
tail -f /var/log/myapp/app.log# 按级别过滤
grep -E "ERROR|WARN" app.log# 日志分析示例
awk '/ERROR/ {count++; print $0} END {print "Total errors:", count}' app.log

DevOps实用命令

  • 日志分割:split -l 1000 large.log chunk_
  • 日志压缩归档:gzip app.log.1
  • 日志清理:find /var/log -name "*.log" -mtime +7 -exec rm {} \;

七、系统监控与诊断

1. 系统资源监控

# CPU信息
top
htop
mpstat -P ALL 1  # 多核CPU统计# 内存信息
free -h
vmstat 1# 磁盘使用
df -h
du -sh /path/*

SRE监控命令

  • 监控磁盘IO:iostat -x 1
  • 监控网络IO:sar -n DEV 1
  • 综合监控:dstat

2. 进程诊断

# 查看进程资源使用
ps aux --sort=-%mem | head
ps aux --sort=-%cpu | head# 查看进程打开的文件
lsof -p PID# 查看进程加载的库
ldd /path/to/binary

DevOps实用技巧

  • 查找内存泄漏进程:ps -eo pid,rss,comm --sort=-rss | head
  • 检查僵尸进程:ps aux | awk '$8=="Z" {print $0}'
  • 查看进程启动时间:ps -eo pid,lstart,cmd | grep process_name

八、脚本与自动化

1. Shell脚本基础

#!/bin/bash# 变量
name="World"
echo "Hello, $name!"# 条件判断
if [ "$1" == "start" ]; thenecho "Starting service..."
elif [ "$1" == "stop" ]; thenecho "Stopping service..."
elseecho "Usage: $0 {start|stop}"
fi# 循环
for i in {1..5}; doecho "Iteration $i"
done# 函数
function backup() {tar -czvf "$1_$(date +%F).tar.gz" "$1"
}

SRE脚本实践

  • 配置备份脚本:backup_config.sh
  • 日志轮转脚本:rotate_logs.sh
  • 服务健康检查:check_service.sh

2. 自动化工具集成

# 使用cron定时任务
crontab -e
# 示例:每天凌晨2点执行备份
0 2 * * * /path/to/backup.sh# 使用Ansible批量管理
ansible all -m ping
ansible webservers -a "service nginx restart"# 使用Fabric远程执行
fab -H user@host run_command

DevOps自动化建议

  • 将常用命令封装为脚本
  • 使用版本控制管理脚本
  • 添加日志记录和错误处理

九、安全加固与审计

1. 安全检查命令

# 检查开放端口
netstat -tulnp
ss -tulnp# 检查SUID程序(潜在风险)
find / -perm -4000 2>/dev/null# 检查系统账户
awk -F: '($3 < 1000) {print $1, $3, $6}' /etc/passwd# 检查SSH配置
grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

SRE安全实践

  • 定期审计特权账户
  • 检查异常SUID程序
  • 验证SSH安全配置
  • 监控/tmp/var/tmp目录

2. 日志审计

# 查看登录历史
last
lastb  # 失败登录
lastlog# 查看sudo使用记录
grep sudo /var/log/auth.log# 监控实时登录
watch -n 1 'who'

DevOps安全建议

  • 设置日志轮转策略
  • 监控异常登录尝试
  • 记录关键操作
  • 定期审查日志

十、DevOps与SRE工作流中的Linux命令应用

1. 部署流程示例

# 1. 拉取最新代码
git pull origin main# 2. 构建应用
./build.sh# 3. 运行测试
./run_tests.sh# 4. 备份当前版本
cp -r /opt/app /opt/app_$(date +%F_%H%M)# 5. 部署新版本
rsync -avz ./dist/ user@server:/opt/app/# 6. 重启服务
ssh user@server "sudo systemctl restart app_service"# 7. 验证部署
ssh user@server "curl -I http://localhost:8080/health"

2. 故障排查流程

# 1. 检查服务状态
systemctl status app_service# 2. 查看最近日志
journalctl -u app_service -n 100 --no-pager | tail# 3. 检查资源使用
top
df -h
free -m# 4. 检查网络连接
ss -tulnp | grep app_port
netstat -anp | grep LISTEN# 5. 检查进程
ps aux | grep app_name# 6. 检查配置
cat /etc/app/config.yaml# 7. 测试功能
curl -v http://localhost:8080/api/test

总结

作为DevOps和SRE工程师,熟练掌握Linux命令是高效工作的基础。建议:

  1. 建立自己的命令速查表:将常用命令整理成文档或笔记
  2. 编写常用脚本:将重复任务自动化
  3. 理解命令原理:不只是记住命令,更要理解其工作原理
  4. 安全意识:始终考虑命令的安全影响
  5. 持续学习:Linux生态不断发展,保持学习新工具和技巧

通过系统学习和实践这些命令,您将能够更高效地完成DevOps和SRE工作,提升系统可靠性和运维效率。

http://www.xdnf.cn/news/5218.html

相关文章:

  • SDC命令详解:使用all_outputs命令进行查询
  • 轻松制作高质量视频,实时生成神器LTX-Video重磅登场!
  • 睿思量化小程序
  • LeetCode 88. 合并两个有序数组 | Python 最简写法 + 实战注释
  • Java面向对象
  • bcm5482 phy 场景总结
  • 技嘉主板BIOS升级
  • 树 Part 4
  • D. Apple Tree Traversing 【Codeforces Round 1023 (Div. 2)】
  • NX949NX952美光科技闪存NX961NX964
  • 短剧 CPS 分销系统开发搭建,开启流量变现新征程
  • 数字签名与证书
  • 北斗终端设备应用
  • 【含文档+源码】基于SpringBoot的新能源充电桩管理系统的设计与实现
  • ODA服务器计算节点本地硬盘状态异常的处理
  • 【金仓数据库征文】国产数据库KingbaseES安装与使用详解
  • 202535| Kafka架构与重要概念+幂等性+事务
  • [架构之美]Spring Boot多环境5种方案实现Dev/Test/Prod环境隔离
  • kafka的安装及简单使用
  • 【并发编程】基于 Redis 手写分布式锁
  • 【源码+文档+调试讲解】高校创新创业课程124
  • Metasploit 4.22.7:企业级渗透测试新突破
  • 深入了解 ArkTS:HarmonyOS 开发的关键语言与应用实践
  • 装机容量与额定容量区别解析
  • 记录 ubuntu 安装中文语言出现 software database is broken
  • Kubernetes排错(十)-常见网络故障排查
  • OSPF综合性实验
  • 解决 SQL Server 2008 导入 Excel 表卡在“正在初始化数据流”问题
  • 基于DAMA框架的企业文件与内容管理深度解析
  • PyTorch API 5 - 全分片数据并行、流水线并行、概率分布