Mam:
sleep 210m && for i in $(seq 1 5); do echo -e '\a'; sleep 0.5; done
działa jako prosty, bezproblemowy licznik czasu, który przypomina mi, kiedy należy coś zrobić. To sleep 210m
jest PID 25347.
Próbuję dowiedzieć się, ile czasu pozostało we śnie. Najlepsze, co wymyśliłem, gdy wprowadziłem oryginalną ilość snu (210 minut) to:
$ echo "210 60 * $(ps -o etimes= 25347) - 60 ~ r n [:] P p" | dc
78:11
(Objaśnienie: Pierwszy bit oblicza liczbę sekund w pierwotnym śnie; $(ps…)
bit uzyskuje czas od rozpoczęcia snu w sekundach, a następnie reszta odejmuje je i wyświetla w minutach i sekundach.)
Wydaje mi się, że byłoby to ogólnie przydatne; czy jest na to lepszy sposób? A przynajmniej sprytny sposób na przeanalizowanie czasu snu ps -o args
?
exec
). Ale to dobry punkt na każde ogólne rozwiązanie.
mksh
a ksh93
przynajmniej) ma sleep
wbudowanych (więc się nie pojawiło ps
), musisz wcześniej wiedzieć, z którymi sleep
implementacjami masz do czynienia.
sh -c 'sleep 1; sleep 2'
przypadku wielush
implementacji jest to ten sam proces, który wykonuje sięsh
i wykonuje późniejsleep 2
(1 sekunda później).