Mari kita lihat beberapa contoh kehidupan sebenar pekerjaan cron.
- Katakanlah, anda memiliki laman web dan anda ingin menghantar e-mel kepada semua pengguna laman web anda setiap hari. Yang harus anda lakukan hanyalah, menulis skrip penghantaran e-mel dan menyiapkan tugas cron untuk menjalankan skrip itu setiap hari.
- Katakan, anda memiliki agensi iklan dan anda ingin mengingatkan semua pengiklan yang baki di bawah $ 5 untuk dicas semula. Yang harus anda lakukan ialah menulis skrip yang memeriksa baki semua pengiklan dan apabila di bawah 5 $, ia akan menghantar pemberitahuan ke nombor atau e-mel pengiklan. Kemudian siapkan tugas cron untuk menjalankan skrip setiap 5 hingga 10 minit, atau setiap jam.
Terdapat banyak penggunaan pekerjaan cron lain di Linux.
Dalam artikel ini, saya akan menunjukkan kepada anda cara menjalankan tugas cron setiap minit di Linux. Saya akan menggunakan Debian 9 Stretch untuk demonstrasi. Tetapi anda boleh menggunakan sebaran Linux moden pilihan anda. Mari kita mulakan.
Asas Crontab:
Di Linux, anda tidak semestinya akar untuk menjalankan pekerjaan cron. Anda boleh menjalankan tugas cron seperti mana-mana pengguna. Setiap pengguna di Linux boleh menggunakan a crontab failkan untuk menjalankan kerja cron mereka sendiri.
Secara lalai, pengguna tidak mempunyai crontab fail di Linux. Anda boleh membuat a crontab fail dengan arahan berikut:
$ crontab -e
Sekiranya anda menjalankan perintah ini untuk pertama kalinya, maka anda diminta untuk memilih penyunting teks dari senarai. Saya akan memilih nano, yang lalai. Anda boleh memilih yang anda suka. Setelah selesai, tekan
The crontab fail harus dibuat (jika belum tersedia) dan dibuka dengan editor teks kegemaran anda. Sekarang anda boleh menambah pekerjaan cron anda sendiri di akhir fail ini dan setelah anda gembira, simpan saja dan keluar dari editor teks.
Sintaks Menjalankan Perintah Setiap Minit:
Sintaks bagi crontab fail adalah seperti berikut:
minit jam hariOfMonth bulan dayOfWeek commandToRunDi sini,
- minit boleh jadi 0 ke 59.
- jam boleh juga 0 ke 59.
- hariOfMonth boleh jadi 1 ke 31.
- bulan boleh jadi 1 ke 12.
- hari dalam seminggu boleh jadi 0 ke 7. 0 dan 7 bermaksud hari Ahad, 1 bermaksud hari Isnin, 2 bermaksud hari Selasa dan seterusnya.
Untuk menjalankan a perintahToRun arahan setiap minit, anda harus menulisnya di crontab fail seperti berikut:
* * * * * commandToRunMenjalankan Pekerjaan Crob Setiap Minit:
Sekarang setelah kita mengetahui teori, mari tambah skrip ringkas pemasa.sh kepada crontab fail dan lihat bagaimana menguruskannya.
Di dalam pemasa.sh skrip, saya hanya mempunyai baris kod berikut. Yang dilakukannya hanyalah membuat fail baru / rumah / shovon / tong / pemasa.balak (jika belum ada) dan menambahkan output perintah tarikh kepadanya.
Sekarang mari kita tambahkan skrip ke crontab dan biarkan berjalan setiap minit dengan baris berikut:
* * * * * / rumah / shovon / tong / pemasa.sh
Sebaik sahaja anda menyimpan crontab fail dan keluar dari editor teks, yang baru crontab fail mesti dipasang.
Setelah satu minit berlalu, fail baru adalah pemasa.balak dibuat di direktori yang dikehendaki seperti yang anda lihat di bahagian bertanda gambar di bawah.
Daripada pemasa.balak fail log, jelas bahawa skripnya pemasa.sh berjalan setiap minit.
Kesalahan Menangkap dari Pekerjaan Cron:
Untuk menangkap kesalahan dari cron job, anda dapat mengirim kesalahan ke a kesilapan.balak fail dan output normal ke akses.balak fail misalnya. Sudah tentu anda boleh menamakan fail apa sahaja yang anda mahukan.
Untuk menunjukkan ini, saya mengubahsuai skrip saya pemasa.sh sedikit. Sekarang kesalahan dihantar ke kesilapan.balak fail di / rumah / sekop / tong sampah direktori dan output dihantar ke akses.balak di dalam / rumah / sekop / tong sampah direktori.
Pada mulanya / tmp / i_must_be_di sini fail tidak ada, jadi saya mendapat ralat di kesilapan.balak fail seperti yang anda lihat.
The akses.balak fail kosong buat masa ini.
Sekarang saya akan membuat fail / tmp / i_must_be_di sini
Dan seperti yang anda lihat, outputnya ada di akses.balak fail sekarang.
Sekiranya anda mahu, anda boleh mengarahkan output dan kesalahan dalam fail yang sama seperti berikut:
Seperti yang anda lihat, output STDIN dan STDERR dihantar ke keluar.balak fail.
Memastikan Pekerjaan Terakhir Selesai Berjalan Sebelum Menjalankan Pekerjaan Lagi:
Agar ini dapat berfungsi, anda boleh membuat fail sementara sejurus tugas bermula dan membuangnya sebelum selesai. Kemudian anda boleh memeriksa sama ada fail sementara ada sebelum memulakan tugas. Sekiranya berlaku, anda boleh keluar dari pekerjaan dan menjalankan tugas hanya apabila fail sementara tidak tersedia.
Skrip ringkas ini hanya berlaku.
Seperti yang anda lihat, pemasa.pid fail dibuat.
Membaca akses.balak fail membuktikan bahawa tugas cron tidak berjalan sebelum kerja cron sebelumnya selesai dijalankan. Seperti yang anda lihat, ia berjalan pada 01:32:01 dan lain kali ia berjalan pada 01:33:01, tetapi tidak. Sebaliknya, ia berjalan pada 01:35:01, kira-kira 3 minit kemudian.
Menyusun Output Pekerjaan Cron untuk Debugging Mudah:
Anda boleh memformat output dengan baik untuk membuat kerja cron anda lebih mudah untuk debug.
Contoh bagaimana ia dapat dilakukan diberikan dalam skrip berikut.
Seperti yang anda lihat, output, kesalahan dan mesej kejayaan dicetak dengan baik dalam fail log.
Anda boleh melakukan perkara yang menakjubkan dengan pekerjaan cron dan skrip shell. Saya menunjukkan beberapa idea di sini. Tetapi langit adalah had anda. Jangan ragu untuk bereksperimen dengan idea yang anda ada. Terima kasih kerana membaca artikel ini.