Есть ли команда для отображения времени, прошедшего при запуске длительного процесса?

То, что предложил Светлин Тончев, будет работать из коробки, только если OP использует Ubuntu, что здесь не так. Однако при запуске add-apt-repository добавленный источник будет зависеть от имени вашей ОС. Например, если вы перейдете в /etc/apt/sources.list.d/, вы можете найти файл с именем git-core-ppa-jessie.list (или аналогичный), содержащий следующие строки:

deb http : //ppa.launchpad.net/git-core/ppa/ubuntu jessie main

deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu jessie main

Однако такого репозитория не существует, и поэтому OP получил 404.

Возможным решением этой конкретной проблемы было бы вручную отредактировать указанный выше файл и заменить jessie на xenial.

3
30.06.2017, 15:53
3 ответа

Запустите команду в фоновом режиме и каждую минуту опрашивайте истекшее время процессора:

npm test &
while sleep 1m
do
    ps -o etime $!
done
3
27.01.2020, 21:12

Вы можете использоватьpv -t:

npm test | pv -t

Или, чтобы избежать прохождения вывода npmчерез pv, используйте fd, который npmне записывает в:

{ npm test 3>&1 >&4 4>&- | pv -t; } 4>&1
3
27.01.2020, 21:12

В соответствии с ответом l0b0:поместите задание в фоновый режим, но затем запустите занятый -цикл вокруг вопроса «он все еще работает?», выдавая по пути истекшие минуты:

прошло

#!/bin/sh
start=$(date +%s)
"$@" &
while ps -p $! > /dev/null
do
  sleep 1
  now=$(date +%s)
  if [ $(( (now - start) % 60)) -eq 0 ]
  then
    printf "%d minutes have elapsed\n" $(( (now - start) / 60))
  fi
done

Это может привести к тому, что другой процесс будет повторно использовать тот же PID, что и наш фоновый процесс, если наш процесс завершится и начнется этот другой процесс, пока мы спим.

Чтобы сообщать о прошедших минутах каждые 5 минут вместо каждой минуты, просто измените первые 60 на 300 .

1
27.01.2020, 21:12

Теги

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