|
Lucaine diterbitkan sebentar tadi tutorial yang sangat baik mengenai cron dan crontab yang saya rasa patut dikongsi. Cron adalah sejenis dengan Tugas Berjadual di Windows, hanya yang dikendalikan dari terminal. Mereka yang lebih suka antara muka visual untuk mencapai matlamat yang sama, dapat melihatnya barang lain. |
Apa itu cron?
Nama cron berasal dari kronos Yunani yang bermaksud "masa." Dalam sistem operasi Unix, cron adalah pengurus proses latar belakang biasa (daemon) yang menjalankan proses atau skrip secara berkala (misalnya, setiap minit, hari, minggu, atau bulan). Proses-proses yang mesti dijalankan dan masa di mana ia mesti dijalankan ditentukan dalam fail crontab.
Como funciona
Demon cron bermula dari /etc/rc.d/ o /etc/init.d bergantung kepada pembahagian. Cron berjalan di latar belakang, memeriksa jadual tugas crontab setiap minit / etc / crontab dalam / var / spool / cron dalam mencari tugas yang harus diselesaikan. Sebagai pengguna kita dapat menambahkan perintah atau skrip dengan tugas untuk cron untuk mengotomatisasi beberapa proses. Ini berguna misalnya untuk mengautomasikan kemas kini sistem atau sistem sandaran yang baik.
Apa itu Crontab?
Crontab adalah fail teks ringkas yang menyimpan senarai arahan yang akan dilaksanakan pada waktu yang ditentukan oleh pengguna. Crontab akan mengesahkan tarikh dan masa skrip atau perintah harus dilaksanakan, izin pelaksanaan dan ia akan melakukannya di latar belakang. Setiap pengguna boleh memiliki fail crontab mereka sendiri, sebenarnya / etc / crontab ia dianggap sebagai file crontab pengguna root, apabila pengguna biasa (dan bahkan root) ingin menghasilkan file crontab mereka sendiri maka kita akan menggunakan perintah crontab.
Crontab adalah kaedah termudah untuk menguruskan tugas cron pada sistem berbilang pengguna, sama ada sebagai pengguna sistem sederhana atau pengguna root.
Menggunakan crontab
Kita mulakan dengan contoh mudah.
Kami akan mengemas kini sistem secara automatik, untuk menghilangkan gangguan "Saya selalu perlu mengemas kini dan saya tidak suka!"
Pertama sekali kita akan membuat skrip. Skrip ini akan dipanggil oleh cron dan akan mengandungi semua arahan yang kita mahu lakukan, oleh itu perlu untuk mengujinya dalam beberapa kes dan dengan beberapa cara sebelum memasukkannya ke dalam cron, skrip kemas kini yang mudah seperti ini:
#! / bin / bash # contoh kemas kini skrip # pilih pengedaran anda # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Keluarkan # dari garis distro anda. Sekiranya Ubuntu / Debian, ia bermula dengan apt-get.
Kami menyimpan skrip sebagai update.sh (misalnya skrip direktori rumah anda). Kami mengubah izin pelaksanaan skrip tersebut dengan:
chmod a + x ~ / skrip / kemas kini.sh
Kami menjalankan skrip beberapa kali untuk mengesahkan bahawa semuanya berjalan lancar, kami mengubahsuai apa yang perlu (ia tidak boleh mengandungi ralat, jika tidak, cron hanya akan mengulangi kesalahan berulang kali) Sekarang untuk menambah tugas ke crontab kami.
Tambahkan tugas ke crontab
Kami menjalankan edisi crontab dengan crontab -e, di beberapa distro (seperti Ubuntu) ia memberi kita pilihan untuk memilih editor teks yang kita mahukan, selebihnya kita ditinggalkan dengan vi. Fail crontab akan kelihatan seperti ini.
# mh dom mon dow arahan pengguna
di mana:
- m sesuai dengan saat skrip akan dijalankan, nilainya berkisar antara 0 hingga 59
- h waktu yang tepat, format 24 jam dikendalikan, nilainya berkisar antara 0 hingga 23, dengan 0 menjadi 12:00 tengah malam.
- hadiah merujuk pada hari dalam bulan, sebagai contoh anda boleh menentukan 15 jika anda mahu menjalankan setiap 15 hari
- dow bermaksud hari dalam seminggu, ia boleh berangka (0 hingga 7, di mana 0 dan 7 adalah hari Ahad) atau 3 huruf pertama hari itu dalam bahasa Inggeris: mon, tue, wed, thu, fri, sat, sun.
- pengguna mendefinisikan pengguna yang akan melaksanakan perintah, itu dapat root, atau pengguna yang berbeda asalkan mereka memiliki izin untuk melaksanakan skrip.
- arahan merujuk kepada arahan atau jalan mutlak skrip yang akan dilaksanakan, contoh: /home/usuario/scripts/update.sh, jika memanggil skrip, ia mesti dilaksanakan
Untuk menjelaskan beberapa contoh tugas cron yang dijelaskan:
15 10 * * * pengguna /home/user/scripts/update.sh
Ia akan menjalankan skrip update.sh pada pukul 10:15 pagi setiap hari
15 22 * * * pengguna /home/user/scripts/update.sh
Ia akan menjalankan skrip update.sh pada pukul 10 malam setiap hari
00 10 * * 0 root apt-get -y kemas kini pengguna Root
Ia akan mengemas kini setiap hari Ahad jam 10:00 pagi
45 10 * * kemas kini ap-get -y root root
Pengguna root akan menjalankan kemas kini setiap hari Ahad (Ahad) jam 10:45 pagi
30 7 20 11 * pengguna /home/usuario/scripts/update.sh
Pada 20 November jam 7:30 pengguna akan menjalankan skrip
30 7 11 11 pengguna matahari /home/usuario/scripts/pastel_con_velitas.sh
Pada 11 November jam 7:30 pagi dan itu adalah hari Ahad, pengguna akan meraikan sysadminnya (iaitu saya)
01 * * * * pengguna /home/usuario/scripts/molestorecordatorio.sh
Peringatan yang menjengkelkan setiap minit setiap jam setiap hari (TIDAK digalakkan).
Mereka masih boleh dikendalikan julat khas:
30 17 * * 1,2,3,4,5
Pukul 5:30 setiap hari dari hari Isnin hingga Jumaat.
00 12 1,15,28 **
Pukul 12 tengah hari setiap pertama, kelima belas dan 28 setiap bulan (sesuai untuk gaji)
Sekiranya ini membingungkan, crontab menangani rentetan khas untuk menentukan julat ini.
@reboot Jalankan sekali, pada permulaan
@tahun berjalan hanya sekali setahun: 0 0 1 1 *
@ sama seperti @yearly
@bulan berjalan sebulan sekali, hari pertama: 0 0 1 * *
Mingguan @ minggu pertama minit pertama dalam seminggu. 0 0 * * 0 ″.
@ harian setiap hari, pada pukul 12:00 A.M. 0 0 * * *
@ tengah malam sama seperti @daily
@hourly pada minit pertama setiap jam: 0 * * * *
Penggunaannya sangat mudah.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @ root root apt-get update & & apt-get -y upgrade
Akhir sekali:
Pengurusan pekerjaan Cron
fail crontab
Ganti fail crontab yang ada dengan fail yang ditentukan pengguna
crontab -e
Edit fail crontab pengguna, setiap baris baru akan menjadi tugas crontab baru.
crontab -l
Senaraikan semua tugas crontab pengguna
crontab -d
Padamkan crontab pengguna
crontab -c dir
Mendefinisikan direktori crontab pengguna (ini mesti mempunyai kebenaran menulis dan melaksanakan pengguna)
pengguna crontab -u
awalan untuk menangani crontab pengguna lain, contoh:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u pengguna
Alat ini, seperti yang lain, dapat dilihat dengan lebih mendalam dan lebih terperinci dalam: