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

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工作,提升系统可靠性和运维效率。

相关文章:

Linux指令入门:DevOps与SRE视角

文章目录 Linux指令入门&#xff1a;DevOps与SRE视角一、Linux基础命令概述二、文件系统操作命令1. 文件与目录基本操作2. 文件查看与编辑3. 文件压缩与归档 三、进程管理命令1. 进程查看与控制2. 服务管理&#xff08;Systemd&#xff09; 四、网络管理命令1. 网络连接与诊断2…...

socket套接字-TCP

上一篇&#xff1a;socket套接字-UDP&#xff08;下&#xff09;https://blog.csdn.net/Small_entreprene/article/details/147569071?fromshareblogdetail&sharetypeblogdetail&sharerId147569071&sharereferPC&sharesourceSmall_entreprene&sharefromfr…...

Ctrl + D是如何与内核文件结束符对应的?如何模拟文件结束符?数字中间为什么不能插入空格或逗号?丰富多彩的语句结束符或分隔符?语句结束符?

目录 Ctrl D是如何与内核文件结束符对应的? 如何模拟文件结束符? 哪些编程语言支持数值中插入分隔符更容易看清楚? 下划线分隔符 数字中间为什么不能插入空格或逗号? 丰富多彩的语句结束符或分隔符 误用分号 语句结束符 不同语言的结束符 更改语句结束符 Ctrl …...

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis

Abstract Vision Transformer在3D医学图像分析的自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;中展现了卓越的性能。掩码自编码器&#xff08;Masked Auto-Encoder&#xff0c;MAE&#xff09;用于特征预训练&#xff0c;可以进一步释放ViT在各…...

【STM32 学习笔记】I2C通信协议

注&#xff1a;通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c; 不需要USART、CAN等通讯协议的外部收发设备&#xff0c;现在被广…...

【java】jdk8及以后的时间类总结

目录 1. LocalDate 2. LocalTime 4. ZonedDateTime 5. Duration 6. Period 7. DateTimeFormatter 1. LocalDate 说明&#xff1a;表示不带时区的日期&#xff08;年、月、日&#xff09;&#xff0c;不可变且线程安全。 import java.time.LocalDate;public class Local…...

深入理解 Istio 的工作原理 v1.26.0

解读最新版本的 Istio 源码确实是一项庞大的工程&#xff0c;但我可以为你梳理出一个清晰的脉络&#xff0c;并指出关键模块和代码路径&#xff0c;帮助你深入理解 Istio 的工作原理。 我们主要关注 Istio 的核心组件 Istiod 和数据平面的 Envoy Proxy。 前提&#xff1a; Go…...

深入理解卷积神经网络的输入层:数据的起点与预处理核心

内容摘要 本文围绕卷积神经网络输入层展开&#xff0c;详细介绍其在网络中的重要作用&#xff0c;包括接收不同领域数据的形式及传递数据的过程。深入解读数据预处理的关键操作&#xff0c;如去均值、归一化和PCA/白化。助力读者透彻理解输入层&#xff0c;为构建高效卷积神经…...

redis bitmap数据类型调研

一、bitmap是什么&#xff1f; redis原文&#xff1a; Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type . This means that bitmaps can be used with string commands, and most importantly with SET and GET. 翻…...

如何用数学思想填报高考志愿

人一辈子有很多四年&#xff0c;但是很少有哪个四年对你一生的影响能超过大学这四年。 从18岁到22岁的这几年&#xff0c;是一个人真正成年的过程&#xff0c;很多人会在这段时间里认识一生的朋友&#xff0c;谈第一次真正的恋爱&#xff0c;第一次离开父母&#xff0c;自己生…...

LabVIEW 2019 与 NI VISA 20.0 安装及报错处理

在使用 Windows 11 操作系统的电脑上&#xff0c;同时安装了 LabVIEW 2019 32 位和 64 位版本的软件。此前安装的 NI VISA 2024 Q1 版&#xff0c;该版本与 LabVIEW 2019 32 位和 64 位不兼容&#xff0c;之后重新安装了 NI VISA 20.0。从说明书来看&#xff0c;NI VISA 20.0 …...

探索 JWT(JSON Web Token):原理、结构与实践应用对比

目录 前言1. 什么是 JWT&#xff1f;2. JWT 的组成结构详解2.1 Header&#xff08;头部&#xff09;2.2 Payload&#xff08;负载&#xff09;2.3 Signature&#xff08;签名&#xff09; 3. JWT 的实际作用3.1 身份认证3.2 信息传递与授权 4. JWT 与 Cookie、API Key 的比较4.…...

互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1

互联网大厂Java求职面试&#xff1a;云原生与AI融合下的系统设计挑战-1 在当今云计算和人工智能迅猛发展的背景下&#xff0c;互联网大厂对Java工程师的要求已从传统的单体架构和业务逻辑处理&#xff0c;转向了更复杂的云原生架构设计、AI模型集成以及高并发系统的性能优化能…...

【Redis进阶】持久化

一、MySQL事务特性及Redis持久化需求 &#xff08;一&#xff09;MySQL事务特性 MySQL的事务具有四大核心特性&#xff0c;这些特性对于保证数据库操作的准确性和可靠性至关重要。 ​​原子性​​&#xff1a;事务中的所有操作要么全部成功&#xff0c;要么全部失败&#xf…...

[docker基础一]docker简介

目录 一 消除恐惧 1) 什么是虚拟化&#xff0c;容器化 2)案例 3)为什么需要虚拟化&#xff0c;容器化 二 虚拟化实现方式 1)应用程序执行环境分层 2)虚拟化常见类别 3)常见虚拟化实现 一&#xff09;主机虚拟化(虚拟机)实现 二&#xff09;容器虚拟化实现 一 消除恐…...

Texify - 数学公式OCR转换工具

文章目录 一、项目概览相关资源核心特性 二、安装指南三、使用示例1、命令行转换2、Python API调用3、交互式应用 四、性能基准运行你自己的基准测试 五、局限性 一、项目概览 Texify 是一个OCR模型&#xff0c;可将包含数学公式的图片或PDF转换为Markdown和LaTeX格式&#xf…...

RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)

在长期的嵌入式开发实践中&#xff0c;对中断机制的理解始终停留在表面层次&#xff0c;特别当开发者长期局限于纯软件抽象层面时&#xff0c;对中断机制的理解极易陷入"知其然而不知其所以然"的困境&#xff0c;这种认知的局限更为明显&#xff1b;随着工作需要不断…...

时钟晶振锁相环pll方向技术要点和大厂题目解析

本专栏预计更新60期左右。当前第9期。 本专栏不仅适用于硬件的笔试面试,同样也适用于梳理硬件核心的知识点。 通过本文能得到什么? 首先,根据实战经验总结时钟晶振,锁相环的主要知识点,技术要点,面试考点; 然后,列出时钟晶振,锁相环的笔试面试的主要题型真题和模拟题,…...

图像处理篇--- HTTP|RTSP|MJPEG视频流格式

文章目录 前言一、MJPEG (Motion JPEG)基本概念技术特点编码方式传输协议数据格式 优势实现简单低延迟兼容性好容错性强 劣势带宽效率低不支持音频缺乏标准控制 典型应用 二、RTSP (Real Time Streaming Protocol)基本概念技术特点协议栈工作流程传输模式 优势专业流媒体支持高…...

【Harbor v2.13.0 详细安装步骤 安装证书启用 HTTPS】

Harbor v2.13.0 详细安装步骤&#xff08;启用 HTTPS&#xff09; 1. 环境准备 系统要求&#xff1a;至少 4GB 内存&#xff0c;100GB 磁盘空间。 已安装组件&#xff1a; Docker&#xff08;版本 ≥ 20.10&#xff09;Docker Compose&#xff08;版本 ≥ v2.0&#xff09; 域…...

C++中的static_cast:类型转换的安全卫士

C中的static_cast&#xff1a;类型转换的安全卫士 在C编程中&#xff0c;类型转换是不可避免的操作&#xff0c;而static_cast作为C四大强制类型转换运算符之一&#xff0c;是最常用且相对安全的一种转换方式。今天我们就来深入探讨一下这个重要的类型转换工具。 一、static_…...

开源与商业:图形化编程工具的博弈与共生

一、开源生态的破局之路&#xff1a;从技术实验到行业标准 在 2025 年全球开发者生态大会上&#xff0c;iVX 凭借 “全栈代码生成 AI 驱动开发” 的技术架构&#xff0c;被行业权威机构评选为 “年度技术创新典范”。作为 2012 年启动的开源项目&#xff0c;iVX 历经 17 年技…...

Docker + Watchtower 实现容器自动更新:高效运维的终极方案

文章目录 前言一、Watchtower 简介二、Watchtower 安装与基本使用1. 快速安装 Watchtower2. 监控特定容器 三、Watchtower 高级配置1. 设置检查间隔2. 配置更新策略3. 清理旧镜像4. 通知设置 四、生产环境最佳实践1. 使用标签控制更新2. 更新前执行健康检查3. 结合CI/CD流水线 …...

(二)Linux下基本指令 2

【知识预告】 16. date 指令 17. cal 指令 18. find 指令 19. which指令 20. whereis 指令 21. alias 指令 22. grep 指令 23. zip/unzip 指令 24. tar 指令 25. bc 指令 26. uname ‒r 指令 27. 重要的⼏个热键 28. 关机 16 date 指令 指定格式显⽰时间&#xff1a;date %Y-…...

1 2 3 4 5顺序插入,形成一个红黑树

红黑树的特性与优点 红黑树是一种自平衡的二叉搜索树&#xff0c;通过额外的颜色标记和平衡性约束&#xff0c;确保树的高度始终保持在 O(log n)。其核心特性如下&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点和叶子节点&#xff08;NIL节点&#xff09;是…...

无线网络设备中AP和AC是什么?有什么区别?

无线网络设备中AP和AC是什么&#xff1f;有什么区别&#xff1f; 一. 什么是AP&#xff1f;二. 什么是AC&#xff1f;三. AP与AC的关系 前言 肝文不易&#xff0c;点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神的孩子都…...

Web自动化测试入门详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架…...

WHAT - 简单服务发现

文章目录 简单理解举个例子简单服务发现方式1. 静态配置&#xff08;最简单&#xff0c;但不灵活&#xff09;2. DNS 发现3. 使用服务注册中心&#xff08;稍高级&#xff09; 总结 “简单服务发现”&#xff08;Simple Service Discovery&#xff09;通常指的是一种让系统中的…...

uniapp+vue3+firstUI时间轴 提现进度样式

展示 说明&#xff1a;“status”: 0, //状态:0待审核,1审核通过,2审核驳回,3提现成功,4提现失败 第一种&#xff1a;5种类型归纳为三种显示样式 <fui-timeaxis background"#fff" :padding"[10rpx,16rpx,0]"><!-- 动态生成步骤节点 --><f…...

【日撸 Java 三百行】Day 10(综合任务 1)

目录 Day 10&#xff1a;综合任务 1 一、题目分析 1. 数据结构 2. 相关函数基本知识 二、模块介绍 1. 初始化与成绩矩阵的构建 2. 创建总成绩数组 3. 寻找成绩极值 三、代码与测试 小结 拓展&#xff1a;关于求极值的相关算法 Day 10&#xff1a;综合任务 1 Task&…...