Bahasa Indonesia

Alat pengembang · Generator crontab

Sintaks langkah dan rentang cron: */15, 1-5, daftar dan cara menggabungkannya

· Cara kerjanya

cron penjadwalan alur kerja pengembang

Tanda menit dikelompokkan ke dalam rentang, daftar, dan urutan langkah
Ilustrasi vektor ToolAcre asli

Langkah, rentang, dan daftar adalah bagian dari sintaks cron yang disalin orang tanpa dipahami. Postingan ini menjelaskan masing-masing, cara mereka bersarang, dan kejutan seperti */7 yang tidak berarti 'setiap tujuh hari'.

Setiap 15 menit, tetapi hanya 9 hingga 5 — ekspresi naif juga muncul di malam hari

“Setiap lima belas menit selama jam kerja” mengandung dua batasan independen. Bidang menit memerlukan tanda seperempat jam, sedangkan bidang jam memerlukan rentang terbatas. Menulis hanya `*/15 * * * *` menyelesaikan paruh pertama dan masih menghasilkan run sepanjang malam. Ekspresi tersebut harus mengkodekan kedua batasan sebelum menyatakan apa pun tentang hari kerja.

ToolAcre mem-parsing lima bidang jadwal, bukan perintah. Mulailah dengan `*/15 9-17 * * 1-5`, lalu periksa kalimat dan pratinjau selanjutnya. Pemeriksaan tersebut menangkap kesalahan umum dengan menempatkan `9-17` pada posisi menit atau membiarkan kolom hari kerja tidak dibatasi. Generator membuat dan menjelaskan ekspresi; itu tidak menginstal atau menjalankan pekerjaan.

Rentang — 1-5 dan 9-17 sebagai rentang inklusif dalam satu bidang

Tanda hubung menciptakan rentang inklusif dalam satu bidang. `9-17` pada posisi jam diperluas menjadi sembilan nilai: 9 hingga 17. Demikian pula, `1-5` pada posisi hari kerja diperluas menjadi Senin hingga Jumat karena parser ini memetakan Minggu ke 0, Senin ke 1 dan seterusnya. Kedua titik akhir berpartisipasi, sehingga 17:00 berada dalam rentang jam yang dipilih.

Rentang tidak dapat melintasi batas bidang. Parser menolak bentuk terbalik seperti `17-9` dan menyarankan untuk membagi nilai yang diinginkan menjadi dua item daftar. Penolakan itu berguna karena aturan pembungkusan berbeda antar produk penjadwalan. Di sini rentang selalu bergerak ke atas di antara nilai yang telah memenuhi batas numerik atau nama yang diterima pada bidang tersebut.

Langkah — */15 dan 9-17/2, dan mengapa langkah tersebut dimulai ulang di batas bawah bidang daripada menghitung terus menerus

Garis miring memilih setiap nilai ke-n dari titik awal. `*/15` di bidang menit dimulai dari nilai minimum, nol, dan meluas ke 0, 15, 30 dan 45. `9-17/2` dimulai pada 9 dan menghasilkan 9, 11, 13, 15 dan 17. Langkah tersebut termasuk dalam satu bidang; itu tidak menghitung menit yang berlalu melintasi batas jam.

Parser juga menerima permulaan dengan sebuah langkah. `5/15` di bidang menit berarti 5, 20, 35 dan 50 karena titik akhir atas implisit adalah 59. Langkahnya harus berupa bilangan bulat positif dan tidak boleh melebihi ukuran keseluruhan bidang. Langkah nol, nonnumerik, atau terlalu besar menerima kesalahan validasi khusus bidang, bukan interpretasi yang dapat ditebak.

Daftar dapat menggabungkan nilai, rentang, dan rentang bertahap dalam satu bidang

Koma menyatukan beberapa bagian dalam bidang yang sama. `1,15,30` sederhana menyebutkan nilai tiga menit. Masukan yang lebih rumit dapat menggabungkan nilai tunggal, rentang inklusif, dan rentang bertahap: `0,10-20/5,59` yang diuji diperluas menjadi 0, 10, 15, 20, dan 59. Hasil duplikat dihapus dan nilai yang diperluas diurutkan sebelum penghitungan selanjutnya menggunakannya.

Tata bahasa ini bersifat komposisional tetapi masih sempit. Setiap item koma boleh berisi satu garis miring, dan suatu rentang harus memiliki tepat dua titik akhir yang tidak kosong. Koma yang menyimpang, beberapa garis miring, atau rentang yang belum selesai ditolak dengan alasan penamaan bidang tersebut. Hal ini membuat ekspresi campuran dapat ditinjau tanpa berpura-pura bahwa bentuk tanda baca yang salah memiliki arti konvensional.

Contoh praktis: */15 9-17 * * 1-5 — menghitung menit yang dihasilkan dan 17:45 edge case

Untuk `*/15 9-17 * * 1-5`, nilai menitnya adalah 00, 15, 30 dan 45; jam bukanya adalah 09 sampai 17; dan nilai hari kerja adalah Senin sampai Jumat. Pada setiap hari kerja yang disertakan, kandidat pertama adalah 09:00 dan kandidat terakhir adalah 17:45. Tidak ada 18:00 karena 18 berada di luar rentang jam.

Tepian terakhir menggambarkan mengapa perluasan lapangan mengalahkan singkatan percakapan. “Sembilan sampai jam lima” mungkin berarti berhenti di 17:00 bagi satu pembaca dan memasukkan jam lima penuh ke pembaca lainnya. Bidang jam Cron memilih keranjang jam, lalu bidang menit memilih posisi di dalamnya. Jika 17:45 tidak diinginkan, batas yang diinginkan memerlukan ekspresi atau logika sisi perintah yang berbeda.

Langkah hari dalam sebulan diperluas dari hari 1 setiap bulan; ini bukan interval minggu yang telah berlalu

`*/7` pada hari dalam sebulan diperluas dari jumlah minimum bidang tersebut yaitu 1, menghasilkan 1, 8, 15, 22 dan 29 jika tanggal tersebut ada. Ketika bulan berikutnya dimulai, lapangan kembali dimulai pada 1. Oleh karena itu, ini menggambarkan tanggal kalender yang dipilih, bukan interval tujuh hari yang terus maju. Bulan Februari dan bulan-bulan yang lebih pendek tidak memiliki tanggal-tanggal penting.

Sintaks yang sama memiliki nilai awal yang berbeda di bidang lain. `*/7` menit dimulai pada 0, sedangkan `*/7` hari dalam sebulan dimulai pada 1. Parser ToolAcre mengambil urutan dari setiap spesifikasi bidang, dan pratinjaunya mencari tanggal kalender. Untuk irama mingguan sebenarnya, batasi hari dalam seminggu alih-alih menganggap langkah hari dalam sebulan sebagai durasi yang telah berlalu.

Operator yang tidak didukung akan ditolak daripada ditafsirkan sebagai dialek cron lainnya

Parser lima bidang ini tidak mengimplementasikan `L`, `W`, `#` atau `?`. Karakter tersebut tidak dibuang secara diam-diam dan tidak disajikan sebagai sintaks crontab portabel. Enam bidang juga ditolak, dengan penjelasan bahwa posisi terdepan tambahan adalah milik gaya penjadwal yang berorientasi pada detik, bukan format yang dibaca rute ini.

Batasannya disengaja: menit, jam, hari dalam sebulan, bulan dan hari dalam seminggu adalah tata bahasa posisi lengkap di sini. Sebelum memindahkan ekspresi dari penjadwal lain, hitung bidangnya dan identifikasi operatornya. Generator dapat memvalidasi dialeknya sendiri; itu tidak dapat mensertifikasi Quartz, sintaksis kalender systemd, atau variasi layanan cloud.

Kesimpulan: langkah berarti 'mulai dari rentang terbawah' — dan generator menjelaskan ekspresi langkah dalam kata-kata yang dapat Anda periksa

Rentang menentukan rentang inklusif, potongan gabungan koma, dan garis miring nilai sampel dari awal bidang tertentu. Membaca operasi tersebut dalam urutan tersebut mengubah token padat menjadi himpunan terbatas yang dapat diperiksa. Ini juga menjelaskan tepi seperti 17:45 tanpa bergantung pada frasa yang disalin yang penulisnya mungkin bermaksud lain.

Gunakan generator sebagai permukaan tinjauan: masukkan ekspresi, baca deskripsi, periksa peringatan, dan bandingkan lima jam dinding berikutnya yang berjalan di zona yang diinginkan. Kemudian tempatkan lima bidang terverifikasi di samping perintah sebenarnya di lingkungan Anda sendiri. Jadwal konstruksi dan pelaksanaan pekerjaan tetap menjadi tanggung jawab terpisah.