Alat pengembang · Generator crontab
bidang crontab(5): apa yang ditentukan POSIX dan apa itu ekstensi Vixie
· Latar belakang
cron portabilitas validasi
Tidak semua fitur cron bersifat standar. Posting ini memisahkan apa yang dibutuhkan oleh spesifikasi crontab POSIX dari ekstensi (langkah, nama, nama panggilan) yang ditambahkan oleh Vixie cron dan diasumsikan oleh sebagian besar sistem Linux.
Ekspresi ToolAcre yang valid mungkin masih tidak didukung oleh penjadwal lain
Jadwal yang melewati ToolAcre telah memenuhi parser ini, tidak semua implementasi cron. Portabilitas dimulai dengan pernyataan sederhana itu. Rute menerima tepat lima bidang dan tata bahasa token yang ditentukan. Peralatan, layanan, atau kerangka kerja target mungkin menerima lebih sedikit, lebih banyak, atau sesuatu yang berbeda secara struktural.
Simpan hasil browser sebagai satu bukti: ekspresi, deskripsi, peringatan, dan zona pratinjau. Sebelum penerapan, bandingkan dokumentasi target dan jalankan pengujian yang tidak berbahaya. Validasi menjadi berbahaya hanya ketika sinyal hijau lokal dipromosikan menjadi jaminan kompatibilitas universal.
Repositori tidak menetapkan apa yang dibutuhkan POSIX
Buku kerja memisahkan persyaratan POSIX dari ekstensi, namun tidak ada spesifikasi POSIX yang muncul di sumber repositori. Perilaku ToolAcre tidak dapat membuktikan fitur mana yang merupakan amanat standar. Oleh karena itu, bagian ini menjelaskan sintaksis yang diterapkan tanpa menugaskannya ke badan standar.
Rentang numerik yang diterapkan adalah 0–59 menit, 0–23 jam, 1–31 hari dalam sebulan, 1–12 bulan dan 0–7 hari kerja. Karakter pengganti, nilai tunggal, rentang inklusif, daftar koma, langkah karakter pengganti, langkah rentang, dan nilai awal kosong dengan sebuah langkah semuanya diurai dan diuji.
Nama, langkah, Minggu 7 dan alias diterapkan di sini tanpa klaim riwayat standar
Nama bulan JAN sampai DEC dan nama hari kerja SUN sampai SAT tidak peka huruf besar-kecil. Nama dapat muncul sendiri, dalam daftar, dan dalam rentang. Hari kerja 7 diterima sebagai hari Minggu dan dinormalisasi menjadi 0. Itu adalah properti `parseField` yang dapat diamati, terlepas dari bagaimana implementasi lain mengklasifikasikannya.
Tabel alias memperluas `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight` dan `@hourly`. `@reboot` sengaja ditolak karena tidak ada jadwal kalender untuk dipratinjau. Kata-kata yang tidak diketahui tandanya menerima kesalahan penamaan daftar yang didukung.
Dukungan penetapan lingkungan berada di luar parser ini
Penugasan lingkungan bukan bagian dari tata bahasa ekspresi ini. Kotak masukan mengharapkan satu jadwal, dan `parseCron` membaginya menjadi lima bagian setelah menyelesaikan alias yang didukung. Jalur `KEY=value` tidak dapat diuji perluasan, kuotasi, atau portabilitasnya melalui rute ini.
Kelalaian tersebut mencegah klaim standar yang salah. File crontab yang lengkap dapat berisi konstruksi yang tidak pernah dilihat oleh alat khusus ekspresi. Periksa secara terpisah terhadap target. Kesalahan bidang tepat ToolAcre tidak boleh digunakan kembali sebagai penilaian tentang baris yang tidak terkait dalam file yang lebih besar.
Periksa tata bahasa target dan gunakan tes jadwal yang tidak berbahaya
Pemeriksaan target harus dimulai dengan jumlah lapangan dan operator. Konfirmasikan apakah nama, Minggu 7, langkah garis miring, dan alias tanda terima diterima. Kemudian instal tindakan observasional yang tidak berbahaya untuk waktu dekat, hapus setelah bukti diperoleh, dan bandingkan hasil target dengan ekspresi yang diinginkan.
Jangan menguji portabilitas dengan perintah sensitif atau dengan menunggu tanggal tahunan yang jarang terjadi. Pilih pemeriksaan aman terkecil yang membedakan dukungan tata bahasa. ToolAcre dapat membantu menyusun jadwal tersebut dan menjelaskannya, sementara target yang dijalankan menetapkan bagian yang tidak dapat diketahui oleh browser.
Contoh praktis: formulir langkah dan daftar eksplisit di bawah tata bahasa ToolAcre
Untuk setiap lima menit, ToolAcre menerima `*/5 * * * *`. Ia juga menerima daftar menit eksplisit `0,5,10,15,20,25,30,35,40,45,50,55 * * * *`. Penguraian memperluas kedua kolom menit ke dua belas nilai yang sama, sehingga kandidat yang dijalankan berikutnya cocok dengan instan dan zona awal yang sama.
Daftar eksplisit dapat berfungsi sebagai kandidat pengganti ketika target tidak memiliki sintaks langkah, namun repositori ini tidak dapat mensertifikasi dukungan daftar target tersebut. Bandingkan kedua formulir di ToolAcre untuk kesetaraan semantik, lalu verifikasi bentuk mana pun dari dokumen tujuan. Kesetaraan di sini bukanlah bukti portabilitas di sana.
Sintaks enam bidang ditolak; semantik eksternalnya tidak didokumentasikan di sini
Bidang keenam tidak diterima. Kesalahan ini menunjukkan bahwa gaya detik di depan adalah milik Quartz atau input mirip sistem, tetapi parser tidak mengimplementasikan tata bahasa tersebut. Ia tidak memiliki bidang tahun dan tidak ada operator `?`, `L`, `W` atau `#`.
Hitung bidang sebelum mencoba penerjemahan. Jika sintaksis yang tidak didukung membawa arti penjadwalan, penulisan ulang lima bidang mungkin akan merugikan. Gunakan dokumentasi dan pengujian untuk penjadwal sumber, lalu nyatakan hanya persyaratan yang dapat diwakili oleh tata bahasa target ToolAcre. Hal lain harus tetap merupakan ketidakcocokan yang jelas.
Kesimpulan: ketahui fitur mana yang merupakan ekstensi — dan gunakan generator untuk membuat dan memeriksa kedua formulir saat portabilitas penting
Portabilitas adalah perbandingan, bukan label yang tertanam dalam sebuah ekspresi. ToolAcre memberikan satu sisi yang telah teruji dengan baik: lima posisi, batas numerik, nama yang dipilih, rentang komposisi/lists/steps dan tujuh alias. Hal ini juga memberikan penolakan yang jelas terhadap formulir yang cacat atau asing.
Gunakan kontrak itu untuk bernalar dengan tepat, lalu verifikasi pihak lain. Daftar eksplisit dan langkah bisa sama di parser ini sementara hanya satu yang berfungsi di tempat lain. Melaporkan batas dialek lebih mudah ditindaklanjuti dibandingkan menggunakan standar yang sebenarnya tidak diperoleh dari artikel tersebut.