У меня есть:
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 секунду).