NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
ZH

Linux 命令和 Shell 技能

curl:运行 Web

curl 是每个操作工具箱的袖珍 HTTP 客户端:诊断、管道友好且诚实地了解返回的内容。它的旗帜表面看起来很大,而且大部分都没有发挥作用:大约有十几个旗帜涵盖了日常操作使用,了解它们就是照本宣科的健康检查和幸运者之间的区别。节省最多分页的规则很简单:每次都设置--max-time,因为curl的耐心是无限的,而你的却不是。

要点

  1. 下载前先看一下:curl -sSI https://host 返回方法、标头和状态,不带正文;当 TLS 握手、代理或主机标头行为异常时添加 -v。
  2. 超时规则是不可协商的: --connect-timeout 5 杀死死连接, --max-time 15 杀死慢速连接;没有两者的健康检查可能会比它应该检测到的中断持续时间更长。
  3. 退出代码是脚本中的约定:7 是连接被拒绝,28 是超时,22 是 --fail 出现的 HTTP 错误;阅读代码,而不仅仅是输出,否则你的监控不会学到任何东西。
  4. 将可见性与执行配对: -w '%{http_code} %{time_total}\n' 报告发生的情况,而 --fail-with-body 则显示错误主体;如果没有其中之一,失败看起来就像成功一样。
  5. 测试用户实际点击的内容: --resolve example.com:443:10.1.2.3 检查没有 DNS 游戏的命名后端,并且 -H 'Host: vhost.example.com' 覆盖同一请求的虚拟主机端。
  6. 传输获得有意的标志:-o 命名输出,-L 遵循您已查看的重定向,--retry 3 --retry-delay 2 软化不稳定的上游,-F 处理 wget 从未关心的分段上传。
  7. 标头和套接字承载非浏览器世界:-H 'Authorization: Bearer ...' 用于 API,--unix-socket /run/app/app.sock 用于探测根本不接触 TCP 的本地服务。
  8. 了解两个经典陷阱:代理环境变量劫持 -v 在几秒钟内公开的请求,以及重定向,除非您有意为之,否则默默地将 POST 转换为 GET。

一线手记

挂起十五分钟的健康检查是在 cron 循环内没有 --max-time 的curl,并且它比它应该检测到的中断持续时间更长。原则上,超时现在出现在 URL 之前。

常见问题

为什么当站点返回 500 时,curl 退出 0?

curl 的成功意味着传输成功了;如果没有 --fail (exit 22) 或从 -w 读取 %{http_code},HTTP 级别的错误是不可见的。监控脚本坚持两者之一。

用于脚本的curl 或wget?

curl 用于 API、标头、POST 正文和精确控制; wget 用于镜像和递归。对于一次性 GET 来说,两者都有效,而混合两者的管道通常表明没人决定哪一个拥有这项工作。

跳过 TLS 验证是否合理?

对于针对自签名实验室证书的交互式诊断,有时;在任何脚本化或 cron 驱动的东西中,不。 -k 禁用唯一阻止中间人拥有您的传输的检查。

如何找出慢速请求实际停止的位置?

计时变量: -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} Total:%{time_total}\n' 运行几次可将 DNS 不稳定与后端停顿的握手痛苦分开。

Kinetikatech 如何在linux 命令和 shell 技能方面为您提供帮助

这是我们的日常工作:决定管理员是操作服务器还是对抗服务器的命令和脚本编写习惯:使用每个基本安装中的工具搜索、转换、传输和监督文本和进程。我们的Linux 服务器安全和服务器管理服务提供端到端覆盖:评估、实施、24/7 监控,以及 30 分钟内的应急响应。

与工程师交谈

服务器问题?网站被黑?网站缓慢?

严重问题 30 分钟内响应 — 每天 24 小时,每周 7 天。

请求紧急支持 support@kinetikatech.com