Bagaimana mencegah ATD dari menjalankan pekerjaan sebelumnya?

9

The at daemon adalah alat yang hebat! Namun, jika suatu pekerjaan dijadwalkan pada jam 8:00 pagi dan mesin dimatikan pada saat itu, di akan menjalankan pekerjaan tersebut setiap kali mesin di-boot. Yang ingin saya lakukan adalah menghentikannya dari menjalankan pekerjaan jika waktunya telah lewat. Saya telah mencari halaman manual, dan online, tetapi entah tidak ada jawaban atau saya tidak dapat menemukannya. Saya menggunakan Arch, tetapi sejauh yang saya tahu di sangat mirip distribusi.

Bantuan apa pun sangat kami hargai!

Elmer
sumber

Jawaban:

7

Kapan suatu pekerjaan menjadi pekerjaan masa lalu? Jika Anda menyalakan sistem pada 7:59:50 dan atdaemon dimulai pada 8:00:01, haruskah pekerjaan dijalankan? Bagaimana jika daemon dimulai pada 7:59:59 tetapi membutuhkan dua detik untuk membaca semua file-nya?

Kamu putuskan! Mulai pekerjaan Anda dengan cek waktu, dan batalkan jika waktunya sudah lewat.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Anda dapat menulis skrip init yang membatalkan semua sheduled at-job pada saat shutdown atau reboot.

Saya tidak yakin tentang Arch-Linux - apakah ada yang /etc/sysconfig/atserupa? Mungkin ini hanya sakelar konfigurasi yang harus Anda balikkan ...

Nils
sumber
Saya pikir ini adalah solusi terbaik, siram atantrian saat boot sebelum atmemulai.
bahamat
Ini persis seperti yang saya harapkan akan / seharusnya dimungkinkan! Sayangnya tidak ada /etc/sysconfig/direktori sama sekali di Arch ... Dan tidak ada file yang terdaftar di halaman manual adalah file konfigurasi.
Elmer
@Elmer Saya hanya mencari Google sedikit dan membaca tentang arch linux. '/etc/rc.d/atd' tampaknya merupakan skrip init untuk at-daemon di sana. Lihat di sana jika Anda dapat melihatnya mem-parsing beberapa file konfigurasi. Jika Anda tidak beruntung di sana, Anda harus menggunakan skrip init Anda sendiri (mis. Beri nama atcleardan jalankan sebelumnya atd).
Nils
2

Pilihan saya adalah untuk crondasmon.

Jika Anda perlu menjalankannya pada waktu tertentu dalam sehari, tetapi tidak pada waktu yang sama setiap hari, saya akan membuat crontab dengan satu entri per hari dengan rentang waktu eksekusi tertentu:

Beberapa contoh diambil dari crontab(5):

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command
berdering
sumber
0

Yang Anda inginkan adalah daemon cron. Itu tepat seperti yang Anda inginkan.

Memberi Anda mesin pencari favorit untuk cron daemon dan Anda memiliki banyak manual dan instruksi. man crondan man crontabjuga bermanfaat.

Marco
sumber
Terima kasih atas bantuannya, tetapi cron tidak berfungsi untuk masalah saya. Saya perlu menjalankan skrip pada waktu tertentu dalam sehari, tetapi tidak pada waktu yang sama setiap hari.
Elmer