Czy istnieje (pół-) standardowe polecenie uniksowe, które śpi do czasu określonego w wierszu poleceń? Innymi słowy, szukam czegoś podobnego sleep
, co zająłoby raczej czas budzenia niż czas trwania.
Na przykład: sleeptill 05:00:00
Mogę coś zaprogramować, ale wolałbym nie wymyślać od nowa koła, jeśli już coś tam jest.
Dodatkowe pytanie: byłoby wspaniale, gdyby mógł zająć strefę czasową (jak w sleeptill 05:00:00 America/New_York
).
edytuj Ze względu na naturę tego, co robię, szukam rozwiązania „uśpienie do T” zamiast „uruchom polecenie w T”.
edytuj Aby uniknąć wątpliwości, jeśli uruchomię polecenie o godzinie 18:00 i powiem, aby obudził się o godzinie 17:00, spodziewam się, że będzie spał przez 23 godziny (lub, w niektórych przypadkach związanych z czasem letnim, przez 22 lub 24 godziny).
cron
.sleep
podobne.Odpowiedzi:
Jeśli korzystasz z Uniksa, który ma porządną datę i używasz bash, możesz użyć formatu% s do obliczenia czasu.
(1700 to 17.00, a -j mówi datę, żeby nie ustawiać daty)
źródło
-j
się-d
. Aby go uruchomić na moich systemów Linux]date -d 'tomorrow 17:00'
.echo $(( ($(date -d "3:00" +%s) - $(date +%s) + (60*60*24)) % (60*60*24) ))
(nie może być tylko niektóre zagadnienia wokół DST-zmianami)Co powiesz na to (łączenie pomysłów W00T i Gille'a w funkcję)?
Stosowanie:
źródło
Sprawdź
at
komendę linux / unix . Korzystając z przykładu 5AM:at 05:00 some_command
Obsługuje także strefy czasowe:
źródło
cron
lubat
, ale byłoby to trudne. To jest powód, dla którego szukam czegośsleep
podobnego. Na razie napisałem własny.