DevOps 工程师必备的 6 个 Linux 命令行工具

实践 DevOps 意味着要使用许多不同的命令行工具,如 kubectl, helm 和其他 *.ctls 来自不同的 云原生 项目。对这些命令行工具的良好掌握是必要的,但更重要的是那些用于将 DevOps 工作流程粘合在一起的命令行工具。

无论是管理部署、自动化任务还是排查问题,熟练掌握 Linux 工具都是不可或缺的。作为工程师,我们不断追求效率和可靠性,而正确的工具集可以成为改变游戏规则的因素。

Linux 命令是许多 DevOps 任务的基石。从配置管理到监控系统性能,这些命令简化了流程并提高了生产力。在这篇博客中,我们将探讨每个 DevOps 工程师都应该知道的六个基本 Linux 命令。这些命令不仅会简化您日常任务,还会使您轻松应对复杂场景。

1. yq — 解析和修改 YAML

Yq 是一个轻量级且便携的命令行 YAML 处理器。更多信息:https://mikefarah.gitbook.io/yq/。

YAML 文件在 DevOps 中无处不在,尤其是在配置管理中。yq 命令是一个强大的工具,用于解析和修改这些文件。让我们使用yq 检查一个部署配置文件。

cat deploy-config.yaml
app:
  name: mywebapp
  version: 1.0.0
  image: nginx:latest
  replicas: 3
database:
  image: postgres:13
  password: secretpassword

现在,让我们提取应用使用的镜像:

yq '.app.image' deploy-config.yaml

此命令将输出:

nginx:latest

2. sed 和 grep — 更新配置

Sed 允许以可编程方式编辑文本。另见:awk,ed。更多信息:https://manned.org/man/sed.1posix。

当需要新版本时,更新配置文件是一项常规任务。sedgrep 的组合使这一过程无缝进行。以下是如何在我们的 YAML 文件中更新版本:

sed -i 's/version: 1.0.0/version: 1.1.0/' deploy-config.yaml
grep version deploy-config.yaml

使用正则表达式在文件中查找模式。更多信息:https://www.gnu.org/software/grep/manual/grep.html。

Sed 将更新版本,我们可以快速grep 以确认更改。

3. curl — 检查部署状态

从服务器传输数据。支持大多数协议,包括 HTTP、FTP 和 POP3。更多信息:curl 手册页https://curl.se/docs/manpage.html。

监控部署 API 的状态至关重要。curl 命令允许您检查 API 状态并解析响应。例如,检查 Kubernetes 的最新版本:

curl -s 'https://api.github.com/repos/kubernetes/kubernetes/releases/latest' | yq '.tag_name'

这将为我们提供最新Kubernets 版本的标签名称。

4. tee — 记录部署步骤

应用场景一就是有时候我们希望操作命令既显示到屏幕又保存到文档,tee命令是我们的不二选择;

应用场景二是重复展示输入内容;

应用场景三是可以将文件同时复制多份。当然tee命令还可以与其他命令结合使用,组合达到我们期待的效果。

记录部署步骤可确保您有执行内容的轨迹。tee 命令非常适合此用途:

echo 'Starting deployment process' | tee deployment.log
echo 'App version: 1.1.0' | tee -a deployment.log
cat deployment.log

5. watch — 监控部署进度

Watch 定期执行程序,显示输出。更多信息:watch https://manned.org/watch。

watch 命令非常适合实时监控。例如,通过持续监控 Kubernetes pod 的状态,您可以随时了解部署进度:

watch kubectl get pods

kubectl 有自己的 — watch 标志,我们可以在这种特定情况下使用:

kubectl get pods — watch

6. journalctl — 查看系统日志

由于大多数时间您将使用基于 Linux 的虚拟机,journald 可以查询systemd 日志。更多信息:journalctl https://manned.org/journalctl。

系统日志对于故障排除至关重要。journalctl 命令帮助您查看和过滤这些日志。例如,查看特定服务的日志:

journalctl -u nginx.service | tail

结论

掌握这些命令并知道何时以及如何使用它们,通常意味着在任务上花费 2 小时与 30 分钟的区别。当然,这并不是一个详尽的列表,但我发现自己比其他命令更频繁地使用这些特定命令。

您同意这个列表吗?您的工作流程中还有哪些其他命令是必不可少的?

感谢您花时间阅读这篇文章。我希望您觉得它有趣且有信息量。

声明: 本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
持续集成

DevOps持续集成与交付之Jenkins的使用及Pipeline语法讲解

2024-12-7 21:57:17

持续集成

解决登陆Jenkins忘记admin默认密码的情况

2024-12-10 18:27:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索