Linux 명령 및 셸 기술
컬: 웹을 실행하는 명령줄 웹 클라이언트
컬은 모든 작업 도구 상자의 포켓 HTTP 클라이언트입니다. 진단하고, 파이프라인 친화적이며, 반환된 내용에 대해 정직합니다. 플래그 표면은 거대해 보이지만 대부분 작동하지 않습니다. 약 12개의 플래그가 일상적인 운영 사용을 다루고 있으며 이를 아는 것이 스크립트로 작성된 상태 점검과 행운의 플래그 사이의 차이입니다. 가장 많은 페이징을 절약하는 규칙은 간단합니다. 매번 --max-time을 설정하십시오. 왜냐하면 컬의 인내심은 무한하지만 여러분의 인내심은 그렇지 않기 때문입니다.
핵심 내용
- 다운로드하기 전에 살펴보십시오. 컬 -sSI https://host는 본문 없이 메서드, 헤더 및 상태를 반환합니다. TLS 핸드셰이크, 프록시 또는 호스트 헤더가 이상하게 작동하면 -v를 추가하세요.
- 시간 제한 규칙은 협상할 수 없습니다. --connect-timeout 5는 끊어진 연결을 죽이고, --max-time 15는 느린 연결을 죽입니다. 둘 다 없는 상태 확인은 감지해야 하는 중단보다 오래 지속될 수 있습니다.
- 종료 코드는 스크립트의 계약입니다. 7은 연결 거부, 28은 시간 초과, 22는 --fail에 의해 표시되는 HTTP 오류입니다. 출력뿐만 아니라 코드를 읽으십시오. 그렇지 않으면 모니터링에서 아무것도 배우지 않습니다.
- 가시성과 시행 쌍: -w '%{http_code} %{time_total}\n'은 발생한 상황을 보고하고 --fail-with-body는 오류 본문을 표시합니다. 이 중 어느 하나도 없으면 실패는 성공과 똑같이 보입니다.
- 사용자가 실제로 실행한 내용을 테스트합니다. --resolve example.com:443:10.1.2.3은 DNS 게임 없이 명명된 백엔드를 확인하고 -H 'Host: vhost.example.com'은 동일한 요청의 가상 호스트 측을 다룹니다.
- 전송에는 의도적인 플래그가 지정됩니다. -o는 출력 이름을 지정하고, -L은 검토한 리디렉션을 따르고, --retry 3 --retry-delay 2는 불안정한 업스트림을 완화하고, -F는 전혀 신경 쓰지 않는 멀티파트 업로드를 처리합니다.
- 헤더와 소켓은 브라우저가 아닌 세계를 전달합니다. API의 경우 -H 'Authorization: Bearer ...' 및 --unix-socket /run/app/app.sock은 TCP에 전혀 닿지 않는 로컬 서비스를 검색합니다.
- 두 가지 고전적인 트랩을 알아두십시오. -v가 몇 초 안에 노출하는 요청을 하이재킹하는 프록시 환경 변수와 의도하지 않은 한 POST를 GET으로 자동으로 바꾸는 리디렉션입니다.
현장 노트
15분 동안 중단된 상태 확인은 크론 루프 내에서 --max-time 없이 컬링되었으며 감지해야 하는 중단 시간보다 오래 지속되었습니다. 이제 시간 초과는 원칙적으로 URL보다 먼저 발생합니다.
자주 묻는 질문
사이트가 500을 반환했는데 왜 컬 종료 0이 발생했나요?
컬의 성공은 전송이 제대로 작동했음을 의미합니다. --fail(종료 22) 또는 -w에서 %{http_code}를 읽지 않으면 HTTP 수준 오류가 표시되지 않습니다. 모니터링 스크립트는 둘 중 하나를 요구합니다.
스크립트용 컬 또는 wget?
API, 헤더, POST 본문 및 정확한 제어를 위한 컬; 미러링 및 재귀를 위한 wget. 일회성 GET의 경우 둘 중 하나가 작동하고 두 가지를 혼합하는 파이프라인은 일반적으로 어느 쪽이 작업을 소유했는지 결정하지 못했다는 신호입니다.
TLS 확인을 건너뛰는 것이 정당합니까?
자체 서명된 실험실 인증서에 대한 대화형 진단의 경우 때때로; 스크립트나 cron 기반의 모든 것에서는 그렇지 않습니다. -k는 중간자(man-in-the-middle)가 전송을 소유하는 것을 막는 유일한 확인을 비활성화합니다.
느린 요청이 실제로 중단되는 위치를 어떻게 알 수 있나요?
타이밍 변수: -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n' 몇 번 실행하면 DNS 결함과 백엔드 지연으로 인한 핸드셰이크 문제가 구분됩니다.
linux 명령 및 셸 기술에 대한 Kinetikatech의 지원
간단한 제안입니다: 관리자가 서버를 운영할지 아니면 싸울지 결정하는 명령 및 스크립팅 습관: 모든 기본 설치에 포함된 도구를 사용하여 텍스트와 프로세스를 검색, 변환, 전송 및 감독합니다. 당사의 Linux 서버 보안 및 서버 관리 서비스를 맡겨 주십시오. 철저하게 평가되고, 깨끗하게 구현되며, 24시간 모니터링됩니다.