Artikel ini akan menerangkan tugas penjadualan dan menjalankan skrip secara berkala menggunakan pekerjaan cron.
Apa itu Cron?
Cron adalah program penjadualan tugas yang berjalan di latar belakang sebagai proses. Ini dapat digunakan untuk menjalankan pekerjaan tertentu secara berkala yang dijadwalkan menggunakan set peraturan yang telah ditetapkan. Cron hadir secara terpasang pada kebanyakan pengedaran Linux atau tersedia di repositori untuk dipasang secara manual.
Pratetap Kron
Cron di Ubuntu dilengkapi dengan satu set penjadual yang telah ditentukan. Anda boleh memeriksanya dengan menjalankan perintah di bawah:
$ ls / etc / cron.*Biasanya folder ini adalah “/ etc / cron.setiap jam "," / etc / cron.setiap hari "," / etc / cron.bulanan ”dan“ / etc / cron.setiap minggu".
Masukkan skrip yang anda mahukan di salah satu folder ini untuk menjalankan tugas automatik setiap jam, setiap hari, bulanan atau mingguan.
Perhatikan bahawa cron menggunakan shell "/ bin / sh" secara lalai. Sekiranya anda ingin menggunakan "/ bin / bash" sebagai cengkerang dalam skrip cron, anda harus menggunakan "!# / bin / bash "hashbang di bahagian atas fail skrip atau tentukan shell sebagai pemboleh ubah" SHELL = / bin / bash "pada baris pertama dalam skrip bash yang dijadualkan. Pemboleh ubah persekitaran "SHELL" yang berlebihan juga berfungsi untuk editor crontab yang dijelaskan di bawah.
Tidak semua pemboleh ubah persekitaran sistem mungkin terdedah kepada pekerjaan cron. Oleh itu, adalah idea yang baik untuk menentukan pemboleh ubah persekitaran penting secara manual dalam skrip yang dijadualkan oleh cron.
Ketam
Crontab membolehkan anda menentukan tugas berjadual anda sendiri. Anda boleh menggunakannya untuk mengkonfigurasi jadual cron yang berbeza dari empat pratetap cron standard yang dijelaskan di atas.
Untuk menetapkan tugas yang dijadualkan di crontab, mula-mula lancarkan editor crontab menggunakan arahan di bawah:
$ crontab -eSekarang di akhir fail, anda boleh menambahkan entri dalam format berikut:
minit jam hari bulan hari minggu / penuh / jalan / ke / skrip.shDi mana:
- minit: sebarang nilai dalam julat 0 hingga 59
- jam: sebarang nilai dalam lingkungan 0 hingga 23, 0 hingga tengah malam
- hari: sebarang nilai dalam lingkungan 1 hingga 31
- bulan: sebarang nilai dalam lingkungan 1 hingga 12
- hari minggu: sebarang nilai dalam lingkungan 0 hingga 6, 0 adalah hari Ahad
Entri crontab di bawah akan mengambil tangkapan skrin desktop anda dan menyimpannya di direktori rumah anda sekali pada jam 15:13 pada 2 Mac ditambah setiap hari Selasa pada bulan Mac pada jam 15:13.
13 15 2 3 2 skrotumUntuk menyenaraikan semua entri crontab, gunakan arahan di bawah:
$ crontab -lLebih Banyak Contoh
Tugas-tugas kroni dapat dijelaskan dengan lebih baik melalui contoh, jadi di bawah ini adalah beberapa contoh yang secara berkala akan mengambil tangkapan layar desktop anda dan menyimpannya dalam folder rumah.
Selain lima pemboleh ubah penjadualan, cron juga menggunakan beberapa rentetan khas untuk menjadualkan pekerjaan. Rentetan ini adalah:
- @hourly: pekerjaan dijalankan setiap jam
- @ harian / @ tengah malam: pekerjaan dijalankan setiap hari
- @weekly: pekerjaan dijalankan seminggu sekali
- @bulan: pekerjaan dijalankan sebulan sekali
- @tahun / @ secara manual: pekerjaan dijalankan sekali dalam setahun
- @reboot: tugas dijalankan sekali setiap but semula / log masuk
Entri crontab di bawah akan mengambil tangkapan skrin sekali pada setiap but semula:
@reboot scrotAnda boleh mengganti "@reboot" dengan rentetan khas lain yang disebutkan di atas.
Menggunakan tanda bintang atau wildcard sebagai ganti salah satu daripada lima pemboleh ubah akan mengulangi tugas pada semua contoh baru pemboleh ubah tersebut. Entri di bawah akan mengambil tangkapan skrin setiap minit:
* * * * * SkrotumSetiap jam:
0 * * * * skrotumSetiap hari pada jam 18:00:
0 18 * * * skrotumSetiap bulan pada 6 pada jam 18:00:
0 18 6 * * skrotumGunakan "/" untuk menjalankan skrip pada selang waktu tetap 30 minit (berjalan setiap 30 minit):
* / 30 * * * * skrotumAnda boleh menggunakan pemboleh ubah yang dipisahkan koma untuk menentukan pelaksanaan skrip berulang pada selang masa yang tetap. Contoh di bawah akan mengambil tangkapan skrin desktop anda pada setiap minit 1, 4, dan 5 pada jam baru.
1,4,5 * * * * skrotumMengesahkan Penyertaan Crontab
Mendefinisikan entri crontab boleh menjadi sukar tetapi menyahpepijatnya atau mengesahkan jika ia berfungsi pada cap waktu yang betul malah lebih sukar. Salah satu pilihan adalah menggunakan mesin maya dan log cap masa skrip yang berjalan secara berkala pada pekerjaan cron dengan memasukkan sesuatu seperti perintah "tarikh" dan mengalihkan output ke fail teks. Walau bagaimanapun, penyelesaian yang lebih baik adalah menggunakan salah satu daripada banyak perkhidmatan ujian pekerjaan cron dalam talian yang terdapat di web. Saya cadangkan untuk menyediakan laman web cron tester di sini cubaan.
Kesimpulannya
Menjalankan kerja cron adalah kaedah terbaik untuk mengautomasikan tugas berulang, terutama pada pelayan. Alat ini sangat hebat dan boleh disesuaikan. Walau bagaimanapun, adalah penting untuk memastikan bahawa definisi penjadual anda berfungsi dengan betul, terutamanya jika terdapat tugas penting dalam misi.