Л
Линукс и DevOps Дни
@linuxskillselevation_devops7.2K подп.
825просмотров
11.5%от подписчиков
12 декабря 2024 г.
Score: 908
Пули закончатся раньше чем ноги Откапал сегодня в одном коммерческом интерпрайзе такую конструкцию: while [ $(pgrep process_name)>'0' ] do sleep 5 done Смотрю я в неё и понять не могу, а нахуя? ㅤ Давай разберемся что тут не так. «[» = это аналог или синоним встроенной команды «test». Если не задавать оператор, то на пустой строке вернется FALSE. Ну и логично что вернется TRUE если срока не пустая. «while» — ежу понятно, условный цикл. Будем вертеть на хуй, пока команда заданная в условие возвращаешь истину. В нашем случае эта команда «test». «pgrep» — ищем процесс с именем process_name. Эта штука выводит на стандартный вывод PID процесса. Если процесс не найден, код возврата отличный от нуля и нуль в противном случае. «$(command)» — Command запускается в подоболочке. Результат выполнения, подставляется в текущую позицию. «>» — Перенаправляет результат работы команды в файл (в нашем случае файл 0). Существующий файл, перезаписывается. Несуществующий, будет создан. Понял в чем дело? Нет? Давай дальше… Вопрос — нахуя здесь «test»? Цикл и так является условным и сам проверяет что вернула команда. Получается избыточность. Команда test — Предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными. Такое обычно херачат, либо по привычке, либо когда нужно быстрое решение, а времени на ресерч нет. Работает да и хрен с ним. Вся эта конструкция могла бы выглядеть так: while pgrep process_name &> /dev/null do sleep 5 done Цикл будет шуршать, пока команда pgrep отрабатывает без ошибок и находит процесс. Вот такая вот романтика, на хую два бантика… Изучай! tags: #bash — 🔔 ➡️
825
просмотров
1779
символов
Нет
эмодзи
Нет
медиа

Другие посты @linuxskillselevation_devops

Все посты канала →
Пули закончатся раньше чем ноги Откапал сегодня в одном комм — @linuxskillselevation_devops | PostSniper