Я маю:
sleep 210m && for i in $(seq 1 5); do echo -e '\a'; sleep 0.5; done
працює як простий таймер без зайвих зусиль, щоб нагадати мені, коли щось потрібно зробити. Це sleep 210m
PID 25347.
Я намагаюся розібратися, скільки часу залишилось уві сні. Найкраще, що я придумав, коли мені вводиться початкова кількість сну (210 хвилин):
$ echo "210 60 * $(ps -o etimes= 25347) - 60 ~ r n [:] P p" | dc
78:11
(Пояснення: Спочатку біт обчислює кількість секунд у початковому режимі сну; $(ps…)
біт отримує час, коли сон починається за секунди, потім решта віднімає їх і відображається через хвилини та секунди.)
Мені здається, це взагалі було б корисно; чи є кращий спосіб це зробити? Або хоча б розумний спосіб розібрати час сну ps -o args
?
exec
). Але це хороший момент для будь-якого загального рішення.
mksh
і ksh93
принаймні) мають sleep
вбудований (так що він не відображатиметься ps
). Вам слід заздалегідь знати, з якими sleep
реалізаціями ви маєте справу.
sh -c 'sleep 1; sleep 2'
багатьохsh
реалізаціях - це той самий процес, який виконуєтьсяsh
і пізнішеsleep 2
(1 секунда пізніше).