Dengan bash bawaan, Anda dapat melakukan:
coproc read -t 10 && wait "$!" || true
Untuk tidur selama 10 detik tanpa menggunakan sleep . coproc adalah membuat read stdin adalah pipa di mana tidak akan ada yang keluar. || true karena wait status keluar akan mencerminkan pengiriman SIGALRM yang akan menyebabkan shell keluar jika errexit opsi disetel.
Di shell lain:
mksh dan ksh93 memiliki sleep built-in, tidak ada gunanya menggunakan yang lain di sana (meskipun keduanya juga mendukung read -t ).
zsh juga mendukung read -t , tetapi juga memiliki pembungkus bawaan di sekitar select() , sehingga Anda juga dapat menggunakan:
zmodload zsh/zselect
zselect -t 1000 # centiseconds
Jika yang Anda inginkan adalah menjadwalkan berbagai hal untuk dijalankan dari sesi shell interaktif, lihat juga zsh/sched modul di zsh .
Anda memiliki alternatif untuk sleep :Mereka adalah at dan cron . Bertentangan dengan sleep ini membutuhkan Anda untuk menyediakan waktu yang Anda butuhkan untuk menjalankannya.
-
Pastikan
atdservice berjalan dengan mengeksekusiservice atd status.
Sekarang katakanlah tanggalnya adalah 11:17 UTC; jika Anda perlu menjalankan perintah pada pukul 11:25 UTC, sintaksnya adalah:echo "This is a test" | at 11:25.
Sekarang perlu diingat bahwaatdsecara default tidak akan mencatat penyelesaian pekerjaan. Untuk lebih merujuk tautan ini. Sebaiknya aplikasi Anda memiliki logging sendiri. -
Anda dapat menjadwalkan pekerjaan di
cron, untuk referensi lebih lanjut :man cronuntuk melihat opsinya ataucrontab -euntuk menambah pekerjaan baru./var/log/crondapat diperiksa untuk info tentang eksekusi tugas.
FYI sleep system call menangguhkan eksekusi saat ini dan menjadwalkannya. argumen diteruskan ke sana.
EDIT:
Seperti yang disebutkan @Gaius, Anda juga dapat menambahkan waktu menit ke at command.Tapi katakanlah waktu adalah 12:30:30 dan sekarang Anda menjalankan penjadwal dengan now +1 minutes . Meskipun 1 menit, yang diterjemahkan menjadi 60 detik telah ditentukan, at tidak benar-benar menunggu sampai 12:31:30 untuk mengeksekusi pekerjaan, melainkan mengeksekusi pekerjaan di 12:31:00 . Satuan waktu bisa minutes, hours, days, or weeks . Untuk referensi lebih lanjut man at
misalnya:echo "ls" | at now +1 minutes
Beberapa ide lain.
top -d10 -n2 >/dev/null
vmstat 10 2 >/dev/null
sar 10 1 >/dev/null
timeout 10s tail -f /dev/null