Выполните curl -sL
(, чтобы сбросить индикатор выполнения и следовать перенаправлениям ), как и вы, но укажите URL-адрес последней версии Linux -amd64:
curl -sL "$(curl -L -s https://api.github.com/repos/digitalocean/doctl/releases/latest |
jq -r '.assets[] | select(.name | contains("-linux-amd64.tar.gz")).browser_download_url')" |
tar -xzv
Подстановка внутренней команды запрашивает у github API последнюю версию этого репозитория; затем он передает его через jq
, чтобы выбрать элемент, имя которого содержит строку -linux-amd64.tar.gz
, и вернуть URL-адрес загрузки.
Одним из вариантов может быть использование чего-то вродеsysdig
. Если у меня есть сценарий оболочки, например:
#!/bin/bash
for ((i = 0; i < 10; ++i)); do
sleep $((i + 5))
done
Я могу запустить это как:
ex.sh& sudo sysdig proc.ppid=$! and evt.type=nanosleep and evt.dir='>'
[1] 34548
5578 19:12:08.307269713 4 sleep (34550) > nanosleep interval=6000000000(6s)
19206 19:12:14.308052173 0 sleep (34559) > nanosleep interval=7000000000(7s)
30764 19:12:21.308769638 4 sleep (34560) > nanosleep interval=8000000000(8s)
44222 19:12:29.309508180 0 sleep (34561) > nanosleep interval=9000000000(9s)
62699 19:12:38.310298027 4 sleep (34569) > nanosleep interval=10000000000(10s)
79052 19:12:48.311058659 0 sleep (34570) > nanosleep interval=11000000000(11s)
100582 19:12:59.311839491 4 sleep (34578) > nanosleep interval=12000000000(12s)
123807 19:13:11.312590028 0 sleep (34586) > nanosleep interval=13000000000(13s)
145141 19:13:24.313375302 4 sleep (34587) > nanosleep interval=14000000000(14s)
Здесь я ищу любой процесс, чей родитель в фоновом сценарии (proc.ppid=$!
), который вызывает nanosleep
системный вызов (evt.type=nanosleep
), и это событие записи системного вызова(evt.dir='>'
). Поскольку первое, что делает этот скрипт, это вызывает sleep
, в итоге первое событие было пропущено.
Инструмент имеет множество параметров фильтрации; вы можете увидеть подробности в руководстве пользователя . Вам, вероятно, придется настроить фильтр, чтобы он соответствовал вашему варианту использования. Мне потребовались некоторые эксперименты, чтобы найти, например, конкретный системный вызов, который sleep
использует для сна.