Cara Menjadwalkan Tugas di Linux dengan Cron dan Crontab

Cara Menjadwalkan Tugas di Linux dengan Cron dan Crontab

Apakah Anda tahu bahwa Pelari Pedang ditetapkan pada tahun 2019? Itu tiga tahun dari sekarang! Apalagi Kembali ke Masa Depan 2 , di mana mereka melakukan perjalanan waktu ke tahun 2015. Namun kami tidak memiliki mobil terbang dan tidak ada replika di antara kami (sejauh yang saya tahu).





Sangat mudah untuk merasa kecewa dengan teknologi saat ini ketika kita membandingkannya dengan penggambaran fiksi masa depan. Namun, saat ini ponsel, komputer, dan bahkan rumah kita dapat melakukan hal-hal menakjubkan . Kemampuan untuk mengotomatisasi tugas adalah salah satunya.





Setiap pengguna Linux dapat mengambil manfaat dari penjadwalan tugas, baik yang terkait dengan sistem (seperti membersihkan log lama dan memperbarui paket ) atau melayani pengguna (memeriksa email, mengunduh podcast...). Pengguna Windows telah memiliki Penjadwal Tugas sejak Windows 95. Utilitas yang melakukan pekerjaan yang sama di Linux disebut cron, dan di sini kami akan menjelaskan cara menggunakannya.





browser terbaik untuk windows xp 2018

Apa Itu Cron?

Cron adalah layanan sistem yang berjalan di latar belakang, memeriksa tugas terjadwal, dan menjalankannya jika ditemukan. Tugas -- juga disebut ' cron jobs ' -- didefinisikan dalam file konfigurasi khusus (crontab), yang dipindai cron setiap menit. Beberapa versi cron dapat ditemukan di berbagai distribusi Linux. Misalnya, garpu cron Fedora disebut kroni , dan ada juga fcron , brron , dan dcron . Beberapa memiliki fitur tambahan, sementara yang lain lebih fokus pada keamanan, tetapi semuanya didasarkan pada ide yang sama.

Panduan ini ditulis untuk vixie-cron, yang merupakan versi cron paling luas dan yang akan Anda temukan di Ubuntu dan turunannya. Meskipun sebagian besar instruksi juga berlaku untuk implementasi cron lainnya, mungkin ada perbedaan kecil, jadi periksa manualnya jika Anda memutuskan untuk beralih.



Apa Itu Crontab?

Jika Anda serius mengatur waktu Anda, Anda mungkin memiliki semacam kalender -- aplikasi atau setidaknya selembar kertas. Crontab sangat mirip dengan kalender komputer Anda. Ini menyimpan informasi tentang tugas terjadwal, memberi tahu cron perintah mana yang harus dijalankan pada jam berapa.

Faktanya, beberapa crontab ada di sistem Anda. Setiap pengguna memiliki crontab sendiri, termasuk root (administrator). Crontab pengguna disimpan di





/var/spool/cron/crontabs/

. NS

crontab -l

perintah akan mencantumkan file crontab untuk pengguna saat ini. Anda dapat memeriksa root crontab dengan





sudo crontab -l

.

Selain itu, ada file crontab sistem

/etc/crontab

yang digunakan untuk tugas-tugas sistem-lebar. Biasanya, mereka mengambil bentuk executable, skrip milik root yang ditempatkan di

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, dan

/etc/cron.monthly/

folder, dan pada beberapa distribusi,

/etc/cron.d/

folder juga. Secara umum, Anda tidak harus berurusan dengan tugas-tugas ini, karena sebagian besar dibuat secara otomatis oleh aplikasi yang diinstal.

Cara Menjadwalkan Tugas dengan Cron

Kedengarannya sederhana: untuk menjadwalkan tugas, cukup tambahkan ke crontab Anda. Karena crontab adalah file konfigurasi khusus, tidak disarankan untuk mengeditnya secara manual. Sebagai gantinya, gunakan

crontab -e

memerintah. Untuk mengedit root atau crontab pengguna lain, jalankan perintah dengan hak administratif dan tambahkan nama pengguna mereka setelah opsi -u:

sudo crontab -u root -e
sudo crontab -u username -e

File crontab memiliki dua bagian. Yang pertama berisi variabel lingkungan yang diatur secara otomatis. Anda dapat dengan aman mengubah variabel PATH, HOME, dan SHELL, dan memodifikasi variabel MAIL.

Bagian kedua dari file adalah 'jadwal' aktual dengan tugas terjadwal Anda. Setiap tugas menempati satu baris (baris) dalam tabel, dengan kolom yang mewakili nilai-nilai berikut:

Agar berhasil menjadwalkan tugas, Anda perlu tahu sedikit tentang sintaks crontab:

  • Angka harus berupa bilangan bulat (bilangan bulat), dan Anda dapat menggunakan tanda bintang (*) di salah satu kolom sebagai karakter pengganti, yang berarti 'setiap menit/hari/bulan...'.
  • Pada kolom 'Hari dalam Bulan', berhati-hatilah untuk tidak menetapkan tanggal yang tidak terjadi pada bulan yang ditentukan dalam kolom 'Bulan' (misalnya, 30 Februari).
  • Kolom 'Bulan' dan 'Hari dalam Seminggu' masing-masing menerima nama pendek untuk bulan dan hari, dan tidak peka huruf besar/kecil.
  • Di kolom 'Hari Minggu', 0 dan 7 mewakili hari Minggu. Kolom 'Jam' memerlukan format 'waktu militer' (24 jam), tetapi Anda tidak dapat menggunakan angka 24 -- sebagai gantinya, 0 berarti jam 12 pagi Hal ini karena nilai menit, jam, dan hari dalam seminggu dimulai di 0 bukannya 1.
  • Detik tidak didukung, jadi Anda tidak dapat menjadwalkan tugas pada detik tertentu.

Yang dapat Anda lakukan adalah menjadwalkan rentang waktu inklusif menggunakan tanda hubung (14-22 di bawah 'Jam' akan menjalankan tugas terus menerus dari pukul 14:00 hingga 22:00), atau menjalankan satu tugas beberapa kali dengan menentukan daftar yang dipisahkan koma (1, 3,5 di bawah 'Hari Minggu' akan menjalankan tugas pada hari Senin, Rabu, dan Jumat).

Sementara itu, nilai langkah, diwakili oleh garis miring (/), dan ini menunjukkan jumlah lompatan dalam suatu rentang; misalnya, 3-20/3 di bawah 'Jam' akan menjalankan tugas setiap tiga jam dari pukul 3 pagi hingga 8 malam. Ini berguna ketika Anda ingin mengulang tugas setiap X jam, karena Anda dapat menggabungkan tanda bintang dan satu langkah (*/X). Anda dapat menggabungkan rentang dengan daftar dan langkah dengan rentang selama Anda menggunakan angka. Dengan kata lain, kombinasi seperti 'jan-mar' atau 'Selasa,Jumat-Minggu' tidak diperbolehkan.

Atau, alih-alih menetapkan nilai untuk setiap kolom, Anda bisa menulis @weekly, @yearly, @monthly, @daily, atau @hourly di awal baris, diikuti dengan perintah. Dijadwalkan seperti ini, tugas akan berjalan pada kemungkinan pertama, jadi @weekly akan berjalan pada tengah malam pada hari pertama dalam seminggu. Jika Anda ingin segera menjalankan tugas saat sistem (kembali) dimulai, gunakan perintah @reboot.

Dalam contoh ini, kami telah menjadwalkan pencadangan setiap hari pada pukul 08:20 dan 20:20. Wallpaper berubah secara otomatis setiap tiga hari pada pukul 19:00, dan skrip akan memeriksa podcast baru setiap hari Senin pukul 10:20 dan 20:20. Pengingat ulang tahun diatur untuk 25 Maret dan berjalan setiap 30 menit dalam jangka waktu yang ditentukan. Terakhir, skrip memeriksa email setiap 15 menit dari jam 8 hingga 20, tetapi hanya pada hari kerja. Anda bebas mengatur crontab dengan spasi dan tab di antara kolom, tetapi tidak di dalamnya (jangan beri spasi di antara koma, tanda hubung, dan garis miring).

Jika semua ini terdengar terlalu rumit, jangan khawatir -- Anda selalu dapat mengandalkan internet. Alat seperti Pembangkit Crontab , crontab.guru , dan Corntab membantu Anda membuat pekerjaan cron tanpa mengetahui sintaks crontab apa pun. Mereka menunjukkan kepada Anda kapan pekerjaan akan dijalankan berikutnya, dan menyediakan template untuk ekspresi yang umum digunakan. Crontab.guru adalah yang terbaik karena memungkinkan Anda menguji sintaks crontab secara langsung, sehingga Anda dapat segera melihat bagaimana perubahan Anda akan memengaruhi jadwal.

Cara Memeriksa Apakah Pekerjaan Cron Dieksekusi

Cron seharusnya berjalan dengan tenang di latar belakang dan membiarkan Anda bekerja tanpa gangguan saat menangani tugas Anda. Tapi bagaimana Anda bisa memastikan itu benar-benar berfungsi?

Cron memiliki fitur pemberitahuan email bawaan, tetapi ini memerlukan pengaturan setidaknya server email lokal sederhana . Tidak banyak pengguna rumahan yang mau mengonfigurasi ini, dan tidak banyak distribusi yang menyediakannya secara default (misalnya, Ubuntu tidak). Cara tercepat untuk memeriksa cron adalah dengan memindai log sistem dengan perintah ini:

cat /var/log/syslog | grep -i cron

Opsi -i membuat kueri kita tidak peka huruf besar/kecil. Mungkin saja cron akan memiliki file lognya sendiri di suatu tempat di

/var/log/

, jadi lihat di sana jika perintah ini gagal menghasilkan hasil yang bermanfaat.

Jika Anda perlu menyimpan output dari tugas cron tertentu, Anda dapat mengarahkannya ke file. Berikan path dan nama file di kolom terakhir crontab Anda, setelah perintah yang ingin Anda jalankan:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Menggunakan simbol > tunggal akan menimpa file setiap kali perintah dijalankan. Untuk menghindari ini, gunakan >> sebagai gantinya -- itu menambahkan output ke file yang ada.

Bagaimana Jika Cron Tidak Bekerja?

Mungkin saja Anda telah menambahkan beberapa tugas, memeriksa log sistem, dan menemukan bahwa tugas tersebut tidak dijalankan sebagaimana mestinya. Berikut adalah beberapa hal yang harus Anda pertimbangkan -- dan berhati-hatilah -- saat mencoba memperbaiki masalah.

Apakah layanan cron berjalan?

Seperti yang Anda ketahui, daemon cron harus berjalan di latar belakang. Pastikan ini benar-benar masalahnya. Layanan ini disebut crond atau hanya cron.

Untuk distribusi menggunakan systemd:

systemctl status cron

Untuk distribusi yang menggunakan Pemula:

service cron status

Jika distribusi Anda menggunakan pendekatan init System V 'lama', daftarkan semua layanan dengan:

apa itu seri terbatas di netflix
initctl list

dan lihat apakah cron terdaftar.

Apakah Anda bahkan diizinkan memiliki file crontab?

Periksa Anda

/etc

folder untuk file bernama

cron.allow

dan

cron.deny

. Di Ubuntu, keduanya tidak boleh ada, yang berarti semua pengguna diizinkan untuk mengelola pekerjaan cron. Namun, jika ada

cara download windows 10 di usb
cron.allow

file, itu harus berisi nama pengguna Anda. Sebaliknya, jika

cron.deny

file ada, nama pengguna Anda tidak boleh ada di dalamnya. Meninggalkan

cron.deny

file kosong berarti hanya root dan pengguna yang terdaftar di

cron.allow

dapat memiliki file crontab.

Apakah variabel Anda diatur dengan benar?

Crontab secara otomatis menyetel variabel SHELL Anda ke

/bin/sh

. Namun, jika cangkang pilihanmu adalah ikan atau bash, Anda harus mengubah variabel SHELL

. Demikian juga, variabel PATH hanya berisi beberapa direktori secara default. Di sinilah crontab mencari perintah Linux. Jika tugas cron Anda gagal dijalankan, mungkin karena crontab tidak 'melihat' perintah yang Anda gunakan. Untuk menghindari ini, tambahkan direktori yang berisi perintah ke variabel PATH, dipisahkan dengan titik dua:

PATH=/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Jika Anda tidak ingin mengedit ini di crontab, Anda dapat menentukan variabel ini di skrip yang ingin Anda jalankan sebagai tugas cron.

Apakah pemformatan crontab Anda tepat sasaran?

Sintaks Crontab tidak sepenuhnya mulus. Bahkan jika Anda memverifikasinya dengan alat online yang disebutkan sebelumnya, kesalahan kecil masih dapat mencegah cron menjalankan pekerjaan Anda. Hati-hati untuk:

  • tambahkan baris kosong di akhir file crontab
  • lepas tanda % dengan garis miring terbalik jika perintah Anda menyertakannya
  • tulis komentar sebagai baris terpisah yang dimulai dengan #. Jangan menulis komentar pada baris yang sama dengan variabel lingkungan, atau di samping perintah pekerjaan cron.

Apakah Anda Benar-Benar Harus Menggunakan Terminal?

Sama sekali tidak. Pengguna KDE dapat menjadwalkan pekerjaan cron dengan KCron, yang dapat diakses dari Pengaturan Sistem > Penjadwal Tugas modul. Dengan antarmuka langsung yang memungkinkan Anda memilih dan mengubah semuanya hanya dengan beberapa klik mouse, KCron menyenangkan untuk digunakan.

Jika Anda lebih suka GNOME, maka Jadwal GNOME adalah untukmu. Pendekatannya serupa, meskipun antarmuka, diharapkan, sedikit berbeda. Ini menawarkan mode lanjutan untuk modifikasi halus, dan dilengkapi dengan applet panel tempat Anda dapat mengelola tugas secara langsung.

Anda harus mengetahui solusi lain, seperti Crontab-UI dan minikron . Mereka lebih cocok untuk pengguna yang mengelola banyak mesin dan pekerjaan cron, dan salah satu fitur paling keren mereka adalah antarmuka berbasis web.

Apakah Ada Alternatif Cron?

Sementara cron cukup banyak penjadwal tugas standar untuk Linux , tentu saja bukan satu-satunya. NS atas perintah sangat cocok untuk pekerjaan satu kali yang cepat yang dapat dijadwalkan langsung dari baris perintah, tanpa file konfigurasi khusus. Jika Anda membutuhkan lebih banyak, ada GNUbatch , yang memperkenalkan gagasan ketergantungan. Dengan GNUbatch, Anda dapat mengatur kondisi khusus untuk setiap pekerjaan, atau membuat tugas terjadwal bergantung pada tugas sebelumnya. Hal serupa dapat dicapai dengan pengatur waktu sistem . Meskipun kurang praktis untuk dikonfigurasi daripada cron, pengatur waktu systemd dapat mengingat jika tugas melewatkan jadwalnya saat komputer mati, dan menjalankannya saat berikutnya dihidupkan.

Ini adalah sesuatu yang tidak dapat dilakukan cron sendiri. Dengan demikian, ini cocok untuk server dan komputer yang terus berjalan, tetapi tidak akan menjalankan pekerjaan yang dijadwalkan saat komputer mati. Di sinilah anakron ikut bermain. Secara teknis ini bukan 'alternatif' atau pengganti cron. Sebagai gantinya, anacron melengkapi cron dan harus digunakan bersamanya, yang merupakan kasus di banyak distribusi Linux, termasuk produk berbasis Ubuntu dan Ubuntu. Anacron mencatat saat tugas terakhir dijalankan, dan memeriksa apakah ada instance yang terlewat saat sistem dimatikan. Ini akan menjalankannya ketika Anda menghidupkan kembali komputer, tetapi setiap tugas dapat dieksekusi hanya sekali per hari.

Beberapa versi cron, seperti fcron, menawarkan fitur anacron secara default. Pengguna tingkat lanjut mungkin ingin melihat Hcron atau SuperCron , yang membawa banyak peningkatan pada fungsi dasar cron, tetapi juga agak sulit untuk dikelola.

Bagaimana denganmu? Bagaimana Anda mengatur tugas digital Anda? Tugas apa yang Anda jadwalkan di Linux? Bagikan cerita dan tip Anda untuk menggunakan cron di komentar.

Kredit Gambar: papan jadwal oleh Gonzalo Aragon melalui Shutterstock

Membagikan Membagikan Menciak Surel 12 Situs Video Yang Lebih Baik Dari YouTube

Berikut adalah beberapa situs video alternatif untuk YouTube. Mereka masing-masing menempati ceruk yang berbeda, tetapi layak ditambahkan ke bookmark Anda.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Linux
  • Linux
Tentang Penulis Ivana Isadora Devcic(24 Artikel Diterbitkan)

Ivana Isadora adalah seorang penulis lepas dan penerjemah, pecinta Linux dan fangirl KDE. Dia mendukung dan mempromosikan perangkat lunak bebas & sumber terbuka, dan dia selalu mencari aplikasi baru yang inovatif. Cari tahu cara menghubungi di sini .

More From Ivana Isadora Devcic

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan