GNU/Linux >> Belajar Linux >  >> Linux

Pekerjaan Cron dan Crontab di Linux Dijelaskan

Tutorial ini adalah panduan lengkap untuk memahami cron di Linux serta peran file crontab.

Sebagai administrator sistem, kemungkinan besar Anda menghabiskan banyak waktu untuk melakukan tugas berulang di sistem Anda .

Beruntung bagi Anda, ada cara untuk mengotomatisasi tugas di sistem Linux :cron job .

Awalnya dibangun pada tahun 1975 oleh AT&T Bell Laboratories, cron telah berkembang menjadi referensi di Linux dalam hal penjadwalan dan pelaksanaan tugas pada tanggal atau periode tertentu.

Dalam tutorial hari ini, kita akan melihat daemon cron , tugas cron dan perintah crontab di Linux.

Kami juga akan menunjukkan perbedaan antara tugas cron yang ditentukan pengguna dan tugas cron yang ditentukan sistem.

Siap?

Apa itu Pekerjaan Cron dan Cron?

Cron adalah daemon sistem yang dijalankan pada sistem Linux apa pun yang bertanggung jawab untuk mendeteksi tugas cron dan menjalankannya pada interval tertentu.

Cron berjalan setiap menit dan akan memeriksa sekumpulan direktori yang telah ditentukan sebelumnya pada sistem file Anda untuk melihat apakah tugas perlu dijalankan.

Di sisi lain, tugas cron adalah tugas yang ditetapkan untuk dijalankan pada interval atau periode tertentu, biasanya skrip shell atau perintah bash sederhana.

Pekerjaan Cron biasanya digunakan untuk mencatat peristiwa tertentu ke utilitas Syslog Anda, atau untuk menjadwalkan operasi pencadangan di host Anda (seperti pencadangan basis data atau pencadangan sistem file).

Untuk OS Linux yang menjalankan systemd sebagai manajer layanan, Anda dapat memeriksa layanan cron dengan menjalankan perintah berikut

$ sudo systemctl status cron.service

Catatan :Anda memerlukan hak sudo untuk memeriksa layanan sistem dengan systemd

Apa Sintaks Pekerjaan Cron?

Yang paling penting untuk diketahui tentang cron mungkin adalah sintaks tugas cron.

Untuk mendefinisikan tugas cron, Anda akan mendefinisikan :

  • Periodisitas :artinya ketika pekerjaan Anda akan dieksekusi dari waktu ke waktu. Anda dapat menentukannya untuk dijalankan setiap hari pertama setiap bulan, setiap 5 menit atau pada hari yang sangat spesifik dalam setahun. Contoh akan diberikan nanti di artikel;
  • Perintah :secara harfiah perintah yang akan dijalankan oleh utilitas cron, itu bisa berupa perintah cadangan atau perintah apa pun yang biasanya Anda jalankan di shell;
  • Pengguna :ini dicadangkan untuk pekerjaan cron yang ditentukan sistem di mana Anda ingin menentukan pengguna yang harus menjalankan perintah cron. Untuk tugas cron yang ditentukan pengguna, Anda tidak perlu menentukan pengguna, dan sistem Anda akan menjalankannya sebagai root secara default.

Seperti yang mungkin Anda perhatikan, kolom periodisitas terbuat dari 5 kolom.

Setiap kolom dapat disetel ke * , artinya perintah akan dieksekusi untuk setiap nilai interval yang ditentukan, atau ke nilai tertentu, misalnya bulan ke-6 dalam setahun.

Jika Anda ingin menjalankan perintah untuk setiap menit, setiap jam, setiap hari dalam sebulan, setiap bulan , Anda akan benar perintah berikut

* * * * *  logger "This is a command executed every minute"

Jika Anda ingin mengeksekusi perintah setiap 30 menit , Anda akan menulis

*/30 * * * * logger "This is executed every 30 minutes"

Di sisi lain, jika Anda ingin menjalankan perintah pada hari pertama setiap bulan pada tengah malam , Anda akan menulis

0 0 1 * * logger "This is executed on the first day of the month, at midnight"

Saat mendefinisikan tugas cron itu, saya tidak perlu menentukan pengguna yang menjalankannya.

Ini karena ada perbedaan antara tugas cron yang ditentukan pengguna dan tugas cron yang ditentukan sistem.

Tugas Cron Buatan Pengguna

Pekerjaan cron yang ditentukan pengguna adalah pekerjaan cron yang ditentukan oleh pengguna tertentu di host. Ini tidak berarti bahwa ia tidak dapat menjalankan perintah yang memengaruhi seluruh sistem, tetapi tugasnya diisolasi pada folder tertentu di host.

Setiap pengguna dapat memiliki kumpulan tugas cronnya sendiri di host Linux.

Mencantumkan tugas cron yang ditentukan pengguna

Saat terhubung ke pengguna tertentu, jalankan perintah ini untuk melihat tugas cron yang dimiliki pengguna

$ crontab -l

Jika Anda memiliki tugas cron, mereka akan segera ditampilkan ke output standar.

Secara default, tugas cron yang ditentukan pengguna disimpan di direktori /var/spool/cron/crontabs tetapi Anda harus menjadi root untuk menjelajahinya.

Menambahkan tugas cron yang ditentukan pengguna

Untuk mengedit tugas cron yang terkait dengan pengguna yang terhubung dengan Anda, jalankan perintah berikut

$ crontab -e

Secara default, host Anda akan membuka editor default Anda dan Anda akan dapat mengaktifkan tugas cron Anda di sistem.

Tambahkan baris baru ke akhir file dengan baris berikut misalnya

* * * * * logger "This is a log command from devconnected"

Logger adalah perintah yang memungkinkan pengguna untuk menulis pesan khusus ke log. Jika Anda memerlukan panduan lengkap tentang logging dan Syslog, kami memiliki artikel lengkapnya.

Anda tidak perlu menentukan pengguna karena sistem sudah mengetahui pengguna yang mendefinisikan perintah ini.

Selain itu, perintah akan dijalankan sebagai pengguna saat ini secara default.

Anda tidak perlu memulai ulang layanan apa pun, pekerjaan Anda akan diperhitungkan pada kemunculan berikutnya.

Mengingat contoh yang kami tentukan sebelumnya, periksa log Anda untuk melihat tugas cron Anda dijalankan

$ sudo journalctl -xfn

Seperti yang Anda lihat, layanan cron memeriksa direktori khusus pengguna di host (di /var/spool/cron/crontab ), itu membuka sesi sebagai pengguna saya saat ini, menjalankan perintah dan menutup sesi.

Luar biasa!

Anda telah mempelajari cara menentukan tugas cron yang ditentukan pengguna di host Anda.

Menghapus tugas cron yang ditentukan pengguna

Untuk menghapus tugas cron yang ditentukan pengguna, gunakan perintah berikut

$ crontab -r
(or)
$ crontab -ri

Crontab akan dihapus untuk pengguna Anda saat ini (tidak akan menghapus tugas cron yang ditentukan sistem).

Jalankan daftar tugas cron untuk memeriksa apakah semua tugas cron telah dihapus

Tugas cron yang ditentukan sistem

Tugas cron yang ditentukan sistem adalah tugas yang ditentukan dalam direktori bersama pada sistem file.

Ini berarti, karena Anda memiliki hak sudo di host, Anda akan dapat menentukan tugas cron yang dapat dimodifikasi oleh administrator lain di sistem Anda.

Direktori yang terkait dengan tugas cron yang ditentukan sistem terletak di direktori etc dan dapat dilihat dengan menjalankan

$ ls -l | grep cron

Seperti yang Anda lihat, folder ini berisi banyak folder dan file yang berbeda :

  • anakrontab :file yang digunakan oleh layanan anacron di Linux, yang akan dijelaskan di salah satu bagian berikutnya.
  • cron.d :direktori yang berisi daftar tugas cron untuk dibaca oleh layanan cron. File di cron.d ditulis dengan sintaks cron yang kita lihat sebelumnya;
  • cron.daily :direktori yang berisi daftar skrip yang akan dieksekusi oleh sistem setiap hari. File berbeda dengan file yang terdapat di direktori cron.d karena merupakan skrip bash yang sebenarnya dan bukan tugas cron yang ditulis dengan sintaks cron;
  • cron.hourly, cron.monthly, cron.weekly cukup jelas, berisi skrip yang dieksekusi setiap jam, setiap bulan, dan setiap minggu sepanjang tahun;
  • crontab :file cron yang ditulis dengan sintaks cron yang menginstruksikan layanan cron untuk menjalankan pekerjaan yang terletak di folder harian, jam, bulanan, dan mingguan. Itu juga dapat menentukan tugas khusus yang mirip dengan tugas cron yang ditentukan pengguna, kecuali bahwa Anda harus menentukan pengguna yang harus menjalankan perintah.

Mencantumkan tugas cron yang ditentukan sistem

Seperti yang mungkin Anda pahami, tugas cron yang ditentukan dalam folder konfigurasi global tersebar di beberapa folder.

Selain itu, beberapa file cron dapat ditentukan pada folder tersebut.

Namun, dengan menggunakan baris perintah, ada cara yang efisien untuk menggabungkan semua file dalam direktori tertentu.

Untuk membuat daftar semua tugas cron yang ditentukan di cron.d, jalankan perintah berikut

$ cat /etc/cron.d/*

Demikian pula, untuk membuat daftar tugas cron yang ditentukan dalam file crontab, jalankan perintah berikut

$ cat /etc/crontab

Demikian pula, Anda dapat memeriksa semua skrip yang akan dieksekusi setiap hari

ls -l /etc/cron.daily/

Menambahkan tugas cron yang ditentukan sistem

Seperti yang mungkin Anda pahami, ada beberapa cara untuk menambahkan tugas cron yang ditentukan sistem.

Anda dapat membuat file cron di cron.d, dan file akan diperiksa setiap menit untuk perubahan.

Anda juga dapat menambahkan tugas cron Anda langsung ke file crontab. Jika Anda ingin menjalankan tugas setiap menit atau setiap jam, disarankan untuk menambahkan skrip langsung ke direktori cron yang sesuai.

Satu-satunya perbedaan dengan tugas cron yang ditentukan pengguna adalah Anda harus menentukan pengguna yang akan menjalankan perintah cron.

Misalnya, buat file baru di direktori cron.d dan tambahkan konten berikut ke dalamnya (Anda jelas memerlukan hak sudo agar perintah dapat dijalankan)

$ sudo nano /etc/cron.d/custom-cron

*/1 * * * *    root    logger 'This is a cron from cron.d'

Sekali lagi, Anda tidak perlu memulai ulang layanan apa pun, layanan cron akan memeriksa file Anda pada iterasi berikutnya.

Untuk melihat pekerjaan cron Anda beraksi, jalankan perintah berikut

$ sudo journalctl -xfn 100 | grep logger

Inilah yang seharusnya Anda lihat di layar Anda

Bagus!

Seperti yang Anda lihat, pekerjaan Anda sekarang dijalankan setiap menit oleh pengguna root di host Anda.

Sekarang setelah Anda memiliki gagasan lengkap tentang tugas cron yang ditentukan pengguna dan tugas cron yang ditentukan sistem, mari kita lihat siklus hidup cron lengkap pada host Linux.

Siklus Lengkap Cron di Linux

Tanpa basa-basi lagi, berikut adalah siklus cron lengkap di Linux.

Inilah yang dilakukan layanan cron Anda setiap menit, serta semua direktori yang diperiksa.

Cron akan memeriksa tugas cron yang ditentukan pengguna dan jalankan jika diperlukan.

Itu juga akan memeriksa crontab file di mana beberapa tugas cron default ditentukan secara default.

Pekerjaan cron default tersebut adalah skrip yang menginstruksikan host Anda untuk memverifikasi setiap menit, setiap jam, setiap hari dan setiap minggu folder tertentu dan untuk menjalankan skrip yang ada di dalamnya.

Terakhir, direktori cron.d diperiksa . Cron.d mungkin berisi file cron khusus dan juga berisi file yang sangat penting yaitu file cron anacron.

File cron anacron di Linux

File cron anacron adalah file yang dieksekusi setiap setengah jam antara pukul 07.00 hingga 23.00.

File cron anacron bertanggung jawab untuk memanggil layanan anacron .

Layanan anacron adalah layanan yang bertanggung jawab untuk menjalankan tugas cron jika komputer Anda tidak dapat menjalankannya sejak awal.

Misalkan komputer Anda mati tetapi Anda memiliki tugas cron yang bertanggung jawab untuk menjalankan skrip pembaruan setiap minggu.

Akibatnya, saat menyalakan komputer, alih-alih menunggu seminggu penuh untuk menjalankan skrip pembaruan tersebut, layanan anacron akan mendeteksi bahwa Anda tidak dapat meluncurkan pembaruan cron sebelumnya.

Anacron kemudian akan melanjutkan untuk menjalankan tugas cron agar sistem Anda diperbarui.

Secara default, file cron anacron diinstruksikan untuk memverifikasi bahwa direktori cron.daily, cron.weekly, cron.hourly, dan cron.monthly dipanggil dengan benar di masa lalu.

Jika anacron mendeteksi bahwa tugas cron di folder cron.monthly belum berjalan, ia akan bertanggung jawab untuk menjalankannya.

Kesimpulan

Hari ini, Anda mempelajari cara kerja cron dan crontab di Linux.

Anda juga memiliki pengenalan lengkap tentang sintaks cron dan cara mendefinisikan skrip cron Anda sendiri sebagai pengguna di host Anda.

Terakhir, Anda memiliki ikhtisar siklus cron lengkap tentang cara kerja berbagai hal di host Anda dan tentang apa itu anacron.

Jika Anda tertarik dengan administrasi sistem Linux, kami memiliki bagian lengkap tentangnya di situs web kami. Klik gambar di bawah untuk melihatnya.


Linux
  1. Cara menggunakan cron di Linux

  2. Perintah Linux:pekerjaan, bg, dan fg

  3. Linux:Jalankan tugas cron di latar depan

  1. Cara Mengotomatiskan tugas di Linux menggunakan Crontab

  2. Menjadwalkan Pekerjaan Cron dengan Crontab

  3. Cara Menjadwalkan Pekerjaan Cron dengan Crontab

  1. Cara Mendaftar Pekerjaan Cron di Linux

  2. Berbagai cara untuk menjadwalkan dan membuat daftar pekerjaan CRON di Linux

  3. Apa Itu Crontab Dan Bagaimana Mengotomatiskan Tugas Di Linux Dengan Crontab