Apa cara sederhana untuk menjadwalkan satu peristiwa untuk terjadi pada suatu waktu di masa depan?

15

Sering kali saya ingin komputer saya melakukan satu tugas, tetapi tidak sekarang. Misalnya, saya dapat memberi tahu saya dalam 30 menit bahwa ini adalah waktu untuk meninggalkan pekerjaan. Atau mungkin saya ingin menjalankan tes rumit 2 jam dari sekarang ketika saya yakin kebanyakan orang akan pergi dari kantor.

Saya tahu saya bisa membuat pekerjaan cron untuk dijalankan pada waktu tertentu, tetapi sepertinya banyak pekerjaan ketika yang saya inginkan adalah sesuatu yang sederhana seperti "Jalankan skrip ini dalam 10 menit", selain itu saya harus mencari tahu jam berapa sebenarnya X menit / jam / hari dari sekarang, dan kemudian hapus cron job setelah selesai.

Tentu saja saya bisa menulis skrip ini dan menjalankannya di latar belakang:

sleep X
do_task

Tapi itu sepertinya sangat kikuk: Saya perlu skrip baru untuk setiap tugas, atau saya perlu menulis dan memelihara skrip yang cukup umum untuk melakukan apa yang saya inginkan, belum lagi saya harus mencari tahu berapa detik dalam menit, jam, atau hari yang saya inginkan.

Apakah tidak ada solusi yang sudah mapan untuk masalah ini?

Cory Klein
sumber
7
Saya menduga Anda tidak menjalankan seluruh di belum?
jw013
ini mungkin tampak sangat mendasar ... tetapi bukankah sistem Anda memiliki semacam kalender / daftar hal yang harus dilakukan, dengan peringatan?
JoséNunoFerreira

Jawaban:

27

Saya menggunakan skrip sederhana dengan at:

#!/bin/bash
# email reminder notes using at(1)...

read -p "Time of message? [HH:MM] " time
read -p "Date of message? [dd.mm.yy] " date
read -p "Message body? " message

at "$time" "$date" <<EOF
echo "$message" | mailx -s "REMINDER" [email protected]
EOF

Anda dapat dengan mudah memasang pipa $messageke notify-sendatau dzenjika Anda menginginkan pemberitahuan desktop alih-alih email.

jasonwryan
sumber
9
Dapat juga menggunakan waktu relatif ( + 2 days) dan format berbeda ( YYYY-MM-DD). Konsultasikan halaman manual untuk lebih jelasnya.
Arcege
Ya: kami antipodean lebih suka DD-MM-YY :)
jasonwryan
Saya biasanya kami di untuk quickie satu dari skrip. Cara malas favorit saya untuk menjadwalkan suatu pekerjaan adalah "sekarang +5 menit" yang bisa juga berjam-jam atau berhari-hari.
George M
+1 untuk skrip dan untuk menyebutkan dzen dan beri tahu-kirim yang belum pernah saya dengar.
Joe
Pengalihan dzen tidak berfungsi untuk saya. unix.stackexchange.com/q/38362/4143
Cory Klein
6

Cara umum untuk digunakan atadalah

Tulis skrip yang melakukan apa yang ingin Anda lakukan. Gunakan path lengkap untuk semua perintah eksternal, log output ke file log yang tepat atau kirimkan.

Uji skripnya.

Aktifkan dengan at -f YOURSCRIPT -t MMDDhhmm

Nils
sumber