Cron & crontab, jelaskan

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.

Artikel terkait:
Tutorial: Instal Paket .tar.gz dan .tar.bz2

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!"

bagaimana
Artikel terkait:
Perintah untuk mengetahui sistem (mengidentifikasi perangkat keras dan beberapa konfigurasi perangkat lunak)

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:

Terima kasih Lucain!