Bahasa Melayu

Alat pembangun · Penjana Crontab

Tugas cron berfungsi dalam shell tetapi tidak dalam crontab: PATH dan persekitaran

· Bagaimana ia berfungsi

cron pengesahan aliran kerja pembangun

Jadual lima medan yang disahkan berakhir pada sempadan sebelum shell arahan
Ilustrasi vektor ToolAcre asal

Cron tidak membaca .bashrc anda, tidak menggunakan bash dan bermula dengan PATH daripada beberapa direktori. Siaran ini menerangkan persekitaran kerja cron sebenarnya mendapat dan tiga baris yang membetulkan kebanyakan kegagalan.

Ia berfungsi apabila saya menjalankannya — skrip yang sama tidak melakukan apa-apa daripada crontab dan tiada ralat di mana-mana sahaja anda melihat

Keputusan hijau untuk `0 2 * * *` membuktikan bahawa ToolAcre mengiktiraf jadual 02:00 harian. Ia tidak membuktikan bahawa skrip wujud, boleh dilaksanakan, mencari kebergantungannya atau menulis outputnya. Penghurai sahaja menerima lima medan, jadi kegagalan arahan kemudiannya tidak bercanggah dengan pengesahan jadual.

Perbezaan ini menyempitkan penyelesaian masalah. Mula-mula sahkan bahawa tarikh dan masa yang dimaksudkan muncul dalam perihalan dan pratonton. Kemudian beralih ke mesin yang akan melaksanakan baris dan memeriksa tingkah laku arahan di sana. Mencampurkan kedua-dua soalan menggalakkan pengeditan kepada ungkapan yang betul manakala kecacatan sebenar terletak di luar input penghurai.

Penjana boleh mengesahkan pemasaan sementara arahan yang dilaksanakan secara berasingan masih gagal

Buku kerja menegaskan set tertentu pembolehubah persekitaran dan tingkah laku fail log masuk. Tiada satu pun daripada itu dilaksanakan atau diuji dalam repositori ini. ToolAcre tidak melancarkan daemon cron mahupun menangkap persekitaran pelaksanaan, jadi ia tidak boleh menyatakan pembolehubah mana yang dibekalkan oleh hos, pakej atau pentadbir tertentu.

Rekod pelaksanaan sasaran dan periksa dokumentasinya atau larian diagnostik yang tidak berbahaya. Satu-satunya input yang bergantung kepada persekitaran penjana ialah zon waktu yang dipilih untuk pratonton. Zon itu mempengaruhi detik calon yang dipaparkan; ia tidak mensimulasikan pembolehubah proses, direktori rumah, bukti kelayakan atau fail permulaan untuk arahan masa hadapan.

Pembolehubah persekitaran yang dibekalkan oleh daemon cron adalah bukti repositori di luar

Tiada cangkerang menerima ungkapan di dalam ToolAcre. `parseCron` tokenize medan jadual yang dipisahkan ruang kosong, mengembangkan tatabahasa kecilnya dan berhenti. Malah tindakan "Salin baris crontab" menambahkan `/usr/local/bin/your-command` sebagai pemegang tempat yang jelas. Ia tidak memilih shell atau sintaks shell ujian.

Oleh itu tatasusunan, syarat, penggantian dan gelagat shebang sengaja tiada dalam dakwaan artikel ini. Perintah boleh sah untuk satu shell dan tidak sah untuk yang lain manakala lima medan pemasaannya kekal sama. Semak kontrak pelaksanaan sebenar secara berasingan dan bukannya menganggap jadual yang boleh dibaca manusia sebagai pensijilan arahan.

Cangkang perintah tidak dihuraikan atau dipilih oleh alat ini

Baris tugasan seperti `PATH=...` atau `SHELL=...` tidak diterima oleh kotak ungkapan. Mereka mempunyai kurang daripada lima medan masa dan gagal pengesahan. Ini betul untuk tujuan sempit laluan: penghurainya ialah penghurai ungkapan, bukan penghurai fail crontab yang lengkap.

Jangan tampal teks konfigurasi sehingga satu baris berlalu. Pastikan pembinaan jadual diasingkan, kemudian kumpulkan fail sekeliling mengikut tatabahasa sasaran sendiri. Ini mengelakkan ralat kategori berbahaya di mana penolakan alat ditafsirkan sebagai bukti bahawa ciri persekitaran tidak sah secara universal.

Sintaks tugasan Crontab berada di luar input lima medan

Tingkah laku laluan mutlak dan relatif tergolong dalam proses yang akhirnya menjalankan arahan. ToolAcre tidak memanggil `chdir`, memeriksa sistem fail atau menyelesaikan boleh laku. Senarai sumbernya mengandungi aritmetik kalendar dan kawalan pelayar, bukan kod pembiakan proses. Ungkapan yang disalin tidak membawa maklumat direktori kerja.

Semakan pengerahan harus mengenal pasti jalan laksana, data dan akaun secara bebas. Semakan tersebut mungkin mendedahkan fail yang hilang walaupun setiap masa yang dipratonton adalah betul. Jadual boleh digunakan semula di sebelah arahan yang berbeza, itulah sebabnya penghuraian yang berjaya tidak boleh membayangkan bahawa mana-mana satu arahan boleh dicapai.

Laluan dan direktori kerja kekal sebagai kebimbangan penggunaan

Gunakan arahan yang tidak berbahaya dan boleh diperhatikan yang dipilih untuk sistem sasaran selepas mengesahkan serpihan masa. Sahkan bahawa ia berjalan di bawah akaun dan persekitaran yang dimaksudkan, kemudian gantikannya sahaja selepas syarat tersebut difahami. ToolAcre menyumbang ungkapan dan jangkaan masa kalendar; bukti pihak tuan rumah menyumbang tingkah laku pelaksanaan.

Contohnya, bina `30 2 * * *` dan sahkan bahawa perihalan menyatakan 02:30 setiap hari dalam zon yang dipilih. Salin sahaja medan tersebut ke dalam kerja penyebaran. Artikel itu tidak menetapkan laluan Python, persekitaran maya atau ubah hala kerana tiada pelaksanaan yang sepadan wujud dalam repositori untuk membuktikannya.

Sempadan yang berfungsi: sahkan jadual, kemudian uji perintah yang tidak berbahaya dalam persekitaran sasaran

Penjadual kontena, pemasa sistem dan produk awan boleh mendedahkan persekitaran dan model arahan yang berbeza. Mereka juga mungkin menggunakan tatabahasa yang sahaja menyerupai cron. Laluan ini tidak mengesan platform tersebut, membaca fail unitnya atau menterjemah tetapannya, jadi nasihat pelaksanaan merentas platform adalah spekulasi.

Jika destinasi menolak ungkapan sah ToolAcre, bandingkan kiraan medannya dan pengendali yang disokong sebelum menukar nilai. Jika ia menerima ungkapan tetapi tugas itu gagal, biarkan jadual sahaja semasa menyiasat kontrak arahan destinasi. Garpu itu menyimpan penyahpepijatan tatabahasa berasingan daripada penyahpepijatan masa jalan.

Penjadual dan bekas lain tidak dimodelkan

Garis cron menggabungkan dua sistem: ungkapan kalendar dan tindakan boleh laku. ToolAcre memiliki separuh masa pertama sahaja. Ia mengesahkan julat, senarai, langkah, alias dan semantik medan hari, kemudian menerangkan dan melihatnya. Ia tidak membuat jaminan pelaksanaan dan tidak boleh digunakan sebagai bukti bahawa arahan berjaya.

Anggap output penjana sebagai serpihan jadual yang disemak. Kekalkan zon yang dipilih di sebelahnya, uji tindakan di mana ia akan dijalankan dan kumpulkan output yang boleh diperhatikan di sana. Sempadan berdisiplin ini lebih berguna daripada nasihat umum tentang daemon hipotesis kerana ia memberitahu anda dengan tepat isyarat hijau yang anda perolehi.