Status tugas menyatakan berjaya, log menunjukkan larian yang selesai, dan data sudah lapuk atau tiada. Gabungan itu biasanya bermaksud tugas berjadual bermula tanpa laluan yang diperlukannya, dan sesuatu di hilir menelan kegagalan itu. Jadual yang menyala tepat pada masanya tidak berkata apa-apa tentang sama ada rangkaian sudah sedia. Jurang antara kedua-dua fakta itu ialah tempat kegagalan ini hidup.

Kemasukan milik larian, bukan kewujudan fail cron.

Larian hijau bukan tugas yang selesai

Penjadual mencatat bahawa proses bermula dan kemudian keluar; ia tidak tahu sama ada proses itu sampai ke sumber yang menjadi tujuannya. Skrip yang menganggap sambungan gagal sebagai hasil kosong, atau menangkap ralat dan keluar dengan sifar, akan kelihatan sihat selamanya. Gejalanya bukan status merah; ia status yang munasabah yang terlekat pada kerja yang hilang.

Namakan apa yang sebenarnya diperlukan oleh larian sebelum memutuskan cara memeriksanya. Sandaran mungkin memerlukan DNS peribadi dan titik akhir yang disahkan, bukan sekadar proses terowong.

Periksa sambungan, bukan nama antara muka

Antara muka bernama tun0 boleh wujud tanpa sesi yang penting, dan sambungan lain mungkin memiliki nama itu. Periksa objek khusus yang menjadi pergantungan tugas: satu identiti profil, satu contoh perkhidmatan, atau operasi kecil yang diluluskan terhadap sumber. Kekalkan pemeriksaan terbatas dalam masa, dan jauhkan kelayakan daripada argumen proses dan log diagnostik.

Takrifkan juga hasil semasa terputus. Langkauan biasa, cubaan semula dalam tetingkap pendek, dan tarikh akhir terlepas yang kelihatan kepada pengendali ialah tiga jawapan berbeza, dan jadual berulang tidak memilih antaranya.

Langkauan dan kegagalan ialah hasil yang berbeza

[Service]
Type=oneshot
User=worker
ExecCondition=/usr/local/libexec/check-office-path
ExecStart=/usr/local/bin/private-task

Dalam penggunaan systemd, ExecCondition= menjalankan pemeriksa itu sebelum beban kerja. Tingkah laku keluarnya khusus: sifar meneruskan, kod dari satu hingga 254 melangkau arahan mula yang tinggal tanpa menandakan unit sebagai gagal, dan 255 atau penamatan abnormal menggagalkannya. Itu memberikan tiga isyarat berbeza, berguna hanya jika kontrak pemeriksa dipetakan kepadanya secara sengaja. Tetapan yang mentakrifkan semula kejayaan boleh mengubah gambaran, jadi dokumentasikan pemetaan itu.

Merekod langkauan itulah yang menjadikan reka bentuk jujur. Larian yang dilangkau dan tidak muncul di mana-mana tidak dapat dibezakan daripada larian yang berjaya, dan menganggap setiap ralat pemeriksa sebagai langkauan senyap menyembunyikan penggunaan yang rosak tanpa had.

Lindungi keseluruhan larian, bukan hanya permulaan

Pemeriksaan kesediaan memerhati dunia sebelum pelancaran; ia tidak mengawal setiap soket selepas itu. Apabila laluan langsung tidak pernah boleh diterima untuk tugas ini, lampirkan dasar keluar yang diluluskan yang dikuatkuasakan secara berterusan dan meliputi DNS, IPv6 serta pengangkutan terowong itu sendiri. Menukar keadaan IPv6 global hos bukan pengganti dasar terhad pada tugas.

Putuskan sama ada peristiwa baharu boleh bertindih dengan tugas yang masih berjalan, simpan peraturan itu dengan pemilik beban kerja, dan jadikan cubaan semula selamat untuk operasi data. Menghentikan tugas semasa terputus mengehadkan kerja tanpa menjamin apa-apa tentang trafik sandaran.

Terima aliran kerja pada tiga kes: laluan sedia, laluan tidak tersedia, dan kehilangan di tengah larian. Apa-apa yang kurang menguji jadual, bukan tugas.

Artikel berkaitan