|
Lucaine diterbitkan belum lama berselang tutorial bagus tentang cron dan crontab yang menurut saya layak untuk dibagikan. Cron adalah sejenis yang setara dengan Tugas Terjadwal di Windows, hanya itu ditangani dari terminal. Mereka yang lebih suka antarmuka visual untuk mencapai tujuan yang sama, dapat melihat ini artikel lain. |
Apa itu cron?
Nama cron berasal dari bahasa Yunani chronos yang berarti "waktu". Dalam sistem operasi Unix, cron adalah manajer proses latar belakang biasa (daemon) yang menjalankan proses atau skrip secara berkala (misalnya, setiap menit, hari, minggu, atau bulan). Proses yang harus dijalankan dan waktu di mana mereka harus dieksekusi ditentukan dalam file crontab.
Como funciona
Daemon cron dimulai dari /etc/rc.d/ o /etc/init.d tergantung distribusinya. Cron berjalan di latar belakang, memeriksa tabel tugas crontab setiap menit / etc / crontab o en / var / spool / cron dalam mencari tugas yang harus diselesaikan. Sebagai pengguna, kita dapat menambahkan perintah atau skrip dengan tugas ke cron untuk mengotomatiskan beberapa proses. Ini berguna misalnya untuk mengotomatiskan pembaruan sistem atau sistem cadangan yang baik.
Apa itu Crontab?
Crontab adalah file teks sederhana yang menyimpan daftar perintah yang akan dijalankan pada waktu yang ditentukan oleh pengguna. Crontab akan memeriksa tanggal dan waktu ketika skrip atau perintah harus dijalankan, izin eksekusi dan akan melakukannya di latar belakang. Setiap pengguna dapat memiliki file crontab mereka sendiri, bahkan file / etc / crontab Ini diasumsikan sebagai file crontab pengguna root, ketika pengguna normal (dan bahkan root) ingin membuat file crontab mereka sendiri maka kita akan menggunakan perintah crontab.
Crontab adalah cara termudah untuk mengelola tugas cron pada sistem multi-pengguna, baik sebagai pengguna sistem sederhana atau pengguna root.
Menggunakan crontab
Kami mulai dengan contoh sederhana.
Kami akan mengotomatiskan pembaruan sistem, untuk menghilangkan pertanyaan "Saya selalu harus memperbarui dan saya tidak suka itu!"
Pertama-tama kita akan membuat script. Skrip ini akan dipanggil oleh cron dan berisi semua instruksi yang kita inginkan, oleh karena itu perlu untuk mengujinya dalam beberapa kasus dan dalam beberapa cara sebelum memasukkannya ke dalam cron, skrip pembaruan sederhana seperti ini:
#! / bin / bash #script update example #choose your distribution # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Hapus # dari baris distro Anda. Jika itu Ubuntu / Debian, itu dimulai dengan apt-get.
Kami menyimpan skrip sebagai update.sh (misalnya direktori skrip rumah Anda). Kami mengubah izin eksekusi dari skrip tersebut dengan:
chmod a + x ~ / scripts / update.sh
Kami menjalankan skrip beberapa kali untuk memverifikasi bahwa semuanya berjalan dengan lancar, kami memodifikasi apa yang diperlukan (tidak boleh mengandung kesalahan, jika tidak cron hanya akan mengulangi kesalahan berulang kali). Sekarang untuk menambahkan tugas ke crontab kami.
Tambahkan tugas ke crontab
Kami menjalankan edisi crontab dengan crontab -e, di beberapa distro (seperti ubuntu) memberi kami opsi untuk memilih editor teks yang kami inginkan, sisanya kami tinggal dengan vi. File crontab akan terlihat seperti ini.
# mh dom mon dow perintah pengguna
dimana:
- m sesuai dengan menit skrip akan dijalankan, nilainya berkisar dari 0 hingga 59
- h waktu yang tepat, format 24 jam ditangani, nilainya berkisar dari 0 hingga 23, dengan 0 menjadi pukul 12:00 tengah malam.
- hadiah mengacu pada hari dalam sebulan, misalnya Anda dapat menentukan 15 jika Anda ingin menjalankan setiap 15 hari
- dow Berarti hari dalam seminggu, dapat berupa angka (0 hingga 7, di mana 0 dan 7 adalah Minggu) atau 3 huruf pertama hari itu dalam bahasa Inggris: sen, tue, wed, thu, fri, sat, sun.
- pemakai mendefinisikan pengguna yang akan menjalankan perintah, dapat berupa root, atau pengguna lain selama mereka memiliki izin untuk menjalankan skrip.
- Command mengacu pada perintah atau jalur absolut dari skrip yang akan dieksekusi, contoh: /home/usuario/scripts/update.sh, jika memang memanggil skrip, ia harus dapat dieksekusi
Untuk memperjelas beberapa contoh tugas cron dijelaskan:
15 10 * * * pengguna /home/user/scripts/update.sh
Ini akan menjalankan skrip update.sh pada 10:15 setiap hari
15 22 * * * pengguna /home/user/scripts/update.sh
Ini akan menjalankan skrip update.sh pada pukul 10:15 setiap hari
00 10 * * 0 root apt-get -y update Pengguna root
Ini akan menjalankan pembaruan setiap hari Minggu pukul 10:00
45 10 * * pembaruan apt-get -y root matahari
Pengguna root akan menjalankan pembaruan setiap Minggu (Minggu) pukul 10:45 pagi
30 7 20 11 * pengguna /home/usuario/scripts/update.sh
Pada 20 November pukul 7:30 pengguna akan menjalankan skrip
30 7 11 11 pengguna matahari /home/usuario/scripts/pastel_con_velitas.sh
Pada 11 November pukul 7:30 pagi dan itu adalah hari Minggu, pengguna akan merayakan sysadminnya (yaitu, saya)
01 * * * * pengguna /home/usuario/scripts/molestorecordatorio.sh
Pengingat yang mengganggu setiap menit setiap jam setiap hari (TIDAK disarankan).
Mereka masih bisa ditangani kisaran khusus:
30 17 * * 1,2,3,4,5
Pukul 5 sore setiap hari dari Senin sampai Jumat.
00 12 1,15,28* *
Pukul 12 siang setiap hari pertama, kelima belas dan 28 setiap bulan (ideal untuk penggajian)
Jika ini membingungkan, pegangan crontab string khusus untuk menentukan rentang ini.
@reboot Jalankan sekali, saat startup
@yearly berjalan hanya setahun sekali: 0 0 1 1 *
@tahun sama dengan @yearly
@bulan berjalan sebulan sekali, hari pertama: 0 0 1 * *
@weekly Mingguan menit pertama dari jam pertama minggu itu. 0 0 * * 0 ″.
@hari setiap hari, pukul 12:00 A.M. 0 0 * * *
@idnight sama dengan @daily
@jam di menit pertama setiap jam: 0 * * * *
Penggunaannya sangat sederhana.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Terakhir tapi bukan yang akhir:
Manajemen pekerjaan Cron
file crontab
Ganti file crontab yang ada dengan file yang ditentukan pengguna
-e crontab
Edit file crontab pengguna, setiap baris baru akan menjadi tugas crontab baru.
crontab-l
Buat daftar semua tugas crontab pengguna
crontab -d
Hapus crontab pengguna
crontab -c dir
Mendefinisikan direktori crontab pengguna (ini harus memiliki izin tulis dan eksekusi pengguna)
crontab -u pengguna
awalan untuk menangani crontab pengguna lain, contoh:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u pengguna
Alat ini, seperti banyak alat lainnya, dapat dilihat lebih dalam dan lebih detail di: