Bingung soal hubungan antara cron dan anacron

19

Saya sudah sia-sia mencari di Google penjelasan umum tentang bagaimana cron dan anacron bekerja bersama. Halaman manual agak terlalu dalam bagi saya untuk menyelam pada saat ini.

Saya bingung karena saya menambahkan tugas ke crontab, dan itu berhasil, tetapi ketika saya menghapusnya dari crontab, mereka masih berjalan di bawah anacron. Saya melihat tugas di /etc/cron.daily, tapi saya tidak yakin bagaimana mereka sampai di sana. cron selalu berjalan di sistem saya, tetapi bukan anacron. Bahkan, saya melihat anacron dimulai oleh cron!

Pada dasarnya saya ingin intro tingkat pengguna tentang cara menambah dan menghapus tugas, karena jawaban yang mudah di-googleable yang memberitahu Anda untuk mengedit crontab jelas tidak lengkap. Tautan ke tutorial akan baik-baik saja.

Marmer organik
sumber

Jawaban:

19

Keduanya crondan anacronmerupakan daemon yang dapat menjadwalkan eksekusi tugas berulang ke titik waktu tertentu yang ditentukan oleh pengguna.

Perbedaan utama antara crondan anacronadalah bahwa yang pertama mengasumsikan bahwa sistem berjalan terus menerus. Jika sistem Anda tidak aktif dan Anda memiliki pekerjaan yang dijadwalkan selama waktu ini, pekerjaan itu tidak pernah dijalankan.

Di sisi lain anacronbersifat 'anachronistic' dan dirancang untuk sistem yang tidak berjalan 24x7. Agar berfungsi, anacrongunakan file bertanda waktu untuk mengetahui kapan terakhir kali perintahnya dijalankan. Ini juga memelihara file /etc/anacrontabseperti cronhalnya. Selain itu, cron.dailyjalankan anacron setiap hari. Karenanya, anacronhanya bisa menjalankan pekerjaan sekali sehari, tetapi cronbisa berjalan sesering setiap menit.

Dari man anacrontab:

Ketika dijalankan, Anacron membaca daftar pekerjaan dari file konfigurasi, biasanya / etc / anacrontab (lihat anacrontab (5)). File ini berisi daftar pekerjaan yang dikendalikan Anacron. Setiap entri pekerjaan menentukan periode dalam hari, penundaan dalam menit, pengidentifikasi pekerjaan yang unik, dan perintah shell.

Untuk setiap pekerjaan, Anacron memeriksa apakah pekerjaan ini telah dieksekusi dalam n hari terakhir, di mana n adalah periode yang ditentukan untuk pekerjaan itu. Jika tidak, Anacron menjalankan perintah shell job, setelah menunggu jumlah menit yang ditentukan sebagai parameter penundaan.

Setelah perintah keluar, Anacron mencatat tanggal dalam file stempel waktu khusus untuk pekerjaan itu, sehingga dapat mengetahui kapan harus menjalankannya lagi. Hanya tanggal yang digunakan untuk perhitungan waktu. Jamnya tidak digunakan.

Ini berarti, jika tugas dijadwalkan untuk dijalankan setiap hari dan komputer dimatikan selama waktu itu, ketika anacron dijalankan, itu dapat melihat bahwa tugas itu terakhir dijalankan lebih dari 24 jam yang lalu dan menjalankan tugas dengan benar.

Misalnya jika Anda menentukan yang berikut di /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

dan pada hari ketika script.shpekerjaan seharusnya dieksekusi, jika sistem tidak berjalan, anacronakan mengeksekusi script.sh15 menit setelah sistem muncul kembali.

Beberapa referensi:

Ron
sumber
Terima kasih, tutorial Digital Ocean sangat bagus, seperti yang sering mereka lakukan. Tidak yakin bagaimana saya melewatkannya, jadi saya menghargai tautannya.
Marmer Organik
Terima kasih. Dengan "cron.daily menjalankan anacron everyhour", bukankah Anda "cron.daily menjalankan anacron setiap hari" sebagai gantinya?
Tim
Terima kasih untuk ini. - Saya telah menghapus anacronsemua VPS karena selalu aktif. (Tidak tahu bagaimana sampai di sana, saya tidak pernah mendengarnya.) crontabEntri saya (harian, mingguan, ...) sekarang semua berjalan pada waktu yang diharapkan.
Adambean