Apakah ada perintah (semi-) standar Unix yang akan tidur sampai waktu yang ditentukan pada baris perintahnya? Dengan kata lain, saya mencari sesuatu yang mirip dengan sleep
yang akan membutuhkan waktu bangun daripada durasi.
Sebagai contoh: sleeptill 05:00:00
Saya dapat membuat kode sesuatu tetapi lebih suka tidak menemukan kembali roda jika sudah ada sesuatu di luar sana.
Pertanyaan bonus: alangkah baiknya jika bisa mengambil zona waktu (seperti dalam sleeptill 05:00:00 America/New_York
).
sunting Karena sifat dari apa yang saya lakukan, saya mencari solusi "tidur sampai T" daripada "jalankan perintah di T".
sunting Untuk menghindari keragu-raguan, jika saya menjalankan perintah pada pukul 18:00 dan menyuruhnya bangun pada pukul 17:00, saya berharap itu akan tidur selama 23 jam (atau, dalam beberapa kasus sudut berkaitan dengan waktu penghematan siang hari, selama 22 atau 24 jam.)
cron
, saya kira.sleep
seperti.Jawaban:
Jika Anda menggunakan Unix yang memiliki perintah tanggal yang layak dan menggunakan bash, Anda bisa menggunakan format% s untuk menghitung waktu.
(1700 adalah 17:00 dan -j mengatakan tanggal untuk tidak benar-benar mengatur tanggal)
sumber
-j
untuk-d
. Untuk membuatnya berjalan pada sistem Linux saya]date -d 'tomorrow 17:00'
.echo $(( ($(date -d "3:00" +%s) - $(date +%s) + (60*60*24)) % (60*60*24) ))
(mungkin hanya ada beberapa masalah di sekitar DST-perubahan)Bagaimana dengan ini (menggabungkan ide w00t dan Gille ke dalam fungsi)?
Pemakaian:
sumber
Check out linux / unix
at
perintah . Menggunakan contoh 5AM:at 05:00 some_command
Ini juga mendukung zona waktu:
sumber
cron
atauat
, tetapi itu akan menjadi susah untuk dikelola. Inilah alasan saya mencari sesuatu yangsleep
mirip. Untuk saat ini, saya sudah menulis sendiri.