Как измерить общее совокупное время, проведенное во сне ()?

Выполните 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-адрес загрузки.

0
06.05.2020, 01:00
1 ответ

Одним из вариантов может быть использование чего-то вроде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использует для сна.

1
28.04.2021, 23:16

Теги

Похожие вопросы