
たとえば、Webサイトの機能テストなどの長いコマンドを実行している場合、次のコマンドはありますか?
elapsed npm test
これはnpm test
複数のコマンドを含むプロセスまたはシェルスクリプトで、最大45分かかることがあります。実行中に1分ごとまたは5分ごとに「22分経過」を出力できれば良いようです。
このコマンドはtime
費やされた合計時間を表示できますが、途中で経過した時間は表示できません。
答え1
あなたが使用できるpv -t
:
npm test | pv -t
あるいは、出力の通過を防ぐには、書き込みnpm
ではなくpv
fdを使用してください。npm
{ npm test 3>&1 >&4 4>&- | pv -t; } 4>&1
答え2
バックグラウンドでこのコマンドを開始し、1分ごとに消費されたCPU時間をポーリングします。
npm test &
while sleep 1m
do
ps -o etime $!
done
答え3
~に沿って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を再利用するリスクが発生します。
1分ごとの経過時間(分)報告5毎分の代わりに最初の分だけを変更してください。60に300。