Команди Linux і навички оболонки
curl: Веб-клієнт командного рядка, який запускає Інтернет
curl — це кишеньковий HTTP-клієнт кожного операційного інструментарію: діагностичний, зручний для конвеєрів і чесний щодо результатів. Поверхня його прапора виглядає величезною та здебільшого не в грі: близько дюжини прапорів охоплюють повсякденне оперативне використання, і їхнє знання є відмінністю між перевірками стану за сценарієм і щасливими. Правило, яке економить найбільше сторінок, є тривіальним: встановлюйте --max-time щоразу, тому що терпіння curl безмежне, а ваше — ні.
Головне
- Подивіться, перш ніж завантажувати: curl -sSI https://host повертає метод, заголовки та статус без тіла; додайте -v, коли TLS рукостискання, проксі або заголовки хостів поводяться дивно.
- Дисципліна тайм-ауту не обговорюється: --connect-timeout 5 руйнує мертві з'єднання, --max-time 15 руйнує повільні; перевірка працездатності без обох може пережити збій, який вона мала виявити.
- Коди виходу є контрактом у сценаріях: 7 означає відмову в з’єднанні, 28 – час очікування, 22 – помилку HTTP, яку виявляє --fail; читайте код, а не лише вихідні дані, інакше ваш моніторинг нічого не дізнається.
- Поєднання видимості з примусовим виконанням: -w '%{http_code} %{time_total}\n' повідомляє про те, що сталося, тоді як --fail-with-body відображає тіло помилки; без одного з них невдача виглядає точно як успіх.
- Перевірте, що користувачі насправді потрапляють: --resolve example.com:443:10.1.2.3 перевіряє іменований сервер без ігор DNS, а -H 'Host: vhost.example.com' охоплює сторону vhost того самого запиту.
- Передачі отримують навмисні позначки: -o називає вихід, -L слідує за перенаправленнями, які ви переглянули, --retry 3 --retry-delay 2 пом'якшує нестабільні висхідні потоки, а -F обробляє багатокомпонентні завантаження, про які wget ніколи не піклувався.
- Заголовки та сокети містять небраузерний світ: -H 'Authorization: Bearer ...' для API та --unix-socket /run/app/app.sock для перевірки локальних служб, які взагалі ніколи не торкаються TCP.
- Знайте про дві класичні пастки: змінні середовища проксі-сервера перехоплюють запит, який -v відкриває за секунди, і переспрямування, які мовчки перетворюють POST на GET, якщо ви не мали цього на увазі.
Польова нотатка
Перевірка працездатності, яка зависла протягом п’ятнадцяти хвилин, була curl без --max-time усередині циклу cron, і вона пережила збій, який вона мала виявити. За принципом, тайм-аути тепер вказуються перед URL-адресою.
Часті запитання
Чому curl вийшов із 0, коли сайт повернув 500?
успіх curl означає, що транспорт спрацював; Помилки на рівні HTTP невидимі без --fail (вихід 22) або читання %{http_code} з -w. Сценарії моніторингу наполягають на одному з двох.
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 і навички оболонки
Чесно: більшість команд приходить до нас, попередньо спробувавши все самі: Команди та сценарії, які вирішують, чи керує адміністратор сервером, чи бореться з ним: шукайте, трансформуйте, пересилайте та контролюйте текст і процеси за допомогою інструментів, які присутні в кожній базовій установці. Служба Безпека серверів Linux та Адміністрування серверів існує, щоб не доводилося опановувати команди linux і навички оболонки гірким досвідом — налаштування, нагляд і нічні сюрпризи о третій беремо на себе.