Linux指令入门:DevOps与SRE视角

news2025/5/13 2:05:30

文章目录

  • 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" ]; then
    echo "Starting service..."
elif [ "$1" == "stop" ]; then
    echo "Stopping service..."
else
    echo "Usage: $0 {start|stop}"
fi

# 循环
for i in {1..5}; do
    echo "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.coloradmin.cn/o/2373586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

socket套接字-TCP

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

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;现在被广…

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

内容摘要 本文围绕卷积神经网络输入层展开&#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. 翻…

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.…

[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;随着工作需要不断…

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

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

(二)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-…

无线网络设备中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架…

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&…

macOS 15.4.1 Chrome不能访问本地网络

前言 最近使用macmini m4&#xff0c;自带macOS15系统&#xff0c;对于开发者简直是一言难尽&#xff0c;Chrome浏览器的本地网络有bug&#xff0c;可以访问本机&#xff0c;但是不能访问路由器上的其他机器&#xff0c;路由器提供的页面也不能访问&#xff0c;如下是折腾解决…

【Hive入门】Hive增量数据导入:基于Sqoop的关系型数据库同步方案深度解析

目录 引言 1 增量数据导入概述 1.1 增量同步与全量同步对比 1.2 增量同步技术选型矩阵 2 Sqoop增量导入原理剖析 2.1 Sqoop架构设计 2.2 增量同步核心机制 3 Sqoop增量模式详解 3.1 append模式&#xff08;基于自增ID&#xff09; 3.2 lastmodified模式&#xff08;基…

Dify使用总结

最近完成了一个Dify的项目简单进行总结下搭建服务按照官方文档操作就行就不写了。 进入首页之后由以下组成&#xff1a; 探索、工作室、知识库、工具 探索&#xff1a; 可以展示自己创建的所有应用&#xff0c;一个应用就是一个APP&#xff0c;可以进行测试使用 工作室包含…

MATLAB导出和导入Excel文件表格数据并处理

20250507 1.MATLAB使用table函数和writetable函数将数据导出Excel表格文件 我们以高斯函数为例子&#xff0c;高斯函数在数学和工程领域有着广泛的应用&#xff0c;它的一般形式为&#xff1a; 其中是均值&#xff0c;决定了函数的中心位置&#xff1b; 是标准差&#xff0c;决…