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. |
Indeks
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:
48 komen, tinggalkan komen anda
Aduh ... agak membingungkan.
* / 30 tiada (di medan minit) yang berjalan setiap 30 minit ...
Cuma ini saya akan memberi komen sehingga saya memutuskan untuk mengulas komen 😀
Pengubah ini adalah maklumat yang sangat penting dan sesuatu yang sangat berguna.
Hello!
Sekarang ini saya menguji konfigurasi setiap 45 minit.
* / 45 * * * *, dan arahan dilaksanakan pada 45 minit setiap jam DAN setiap jam. Maksudnya:
Ia berjalan pada jam 3:45, kemudian 4:00, 4:45, kemudian 5:00, 5:45, 6:00, 6:45, dan seterusnya
Saya mempunyai sesuatu yang salah? Apa yang boleh saya lakukan sehingga setiap 45 minit, atau sekurang-kurangnya sekali pada 45 minit setiap jam.
Hello!
Sekarang ini saya menguji konfigurasi setiap 45 minit.
* / 45 * * * *, dan arahan dilaksanakan pada 45 minit setiap jam DAN setiap jam. Maksudnya:
Ia berjalan pada jam 3:45, kemudian 4:00, 4:45, kemudian 5:00, 5:45, 6:00, 6:45, dan seterusnya
Saya mempunyai sesuatu yang salah? Apa yang boleh saya lakukan sehingga setiap 45 minit, atau sekurang-kurangnya sekali pada 45 minit setiap jam.
Halo sangat berguna maklumat untuk menjelaskan bagaimana cron berfungsi.
Bytes
untuk *
Hebat, terima kasih kerana menjelaskan bagaimana cron berfungsi .. mari letakkan sedikit tangan 🙂
Garis ini seperti yang saya faham akan dilaksanakan pada 10:15 malam, betulkan saya jika saya salah
Di sana ia mengatakan 10:15 pagi
15 22 * * * pengguna /home/user/scripts/update.sh
Helo! maklumat yang sangat baik.
Untuk melaksanakan Skrip setiap setengah jam, garis yang harus ditambahkan ke CronTab adalah: "30 * * * * root Scrip.sh" Betul? Terima kasih banyak-banyak!
Tidak. Sekiranya saya ingat dengan betul, untuk itu anda mesti meletakkan / 30 * * * * root Scrip.sh.
Iaitu, tambahkan / sebelum 30.
Ceria! Paul.
Helo Saya menyukai catatan anda, sangat lengkap tetapi saya ingin bertanya sesuatu kepada anda.
Saya menghadapi masalah dengan arahan ini dan seperti "at".
Saya mahu menjalankan skrip pada waktu tertentu dan meletakkan
di -f /home/mi_user/Desk/script.sh 18:08 contoh
dan skrip tidak dijalankan di layar, yaitu, di terminal, apakah dijalankan di latar belakang?
Dan dengan cron perkara yang sama berlaku pada saya, saya menyunting fail crontab dengan "crontab -e"
pada akhir saya menambah baris ini:
46 19 my_user /home/mi_user/Desk/script.sh
dan tidak melakukan apa-apa, ia tidak menunjukkan skrip.
Ada cadangan? Terima kasih banyak dan mohon maaf atas sebarang kesulitan
Agar terminal muncul, anda mungkin harus menjalankan terminal dan meneruskan skrip sebagai parameter.
Sebagai contoh:
lxterminal -e "my_user /home/my_user/Desk/script.sh"
Parameter yang akan digunakan mungkin berbeza-beza berdasarkan emulator terminal yang anda gunakan.
Saya harap ia berjaya.
Peluk! Paul.
Sumbangan dihargai.
10 mata !!
salu2!!
Terima kasih banyak, ini banyak membantu saya menjelaskan beberapa perkara, terima kasih, untuk maklumat lebih lanjut atau pertanyaan saya akan pergi ke MAN PAGE, mengucapkan salam.
Pakcik terima kasih banyak, saya telah membaca dan menguji contohnya. terima kasih banyak ... sangat difahami. Sorakan
Saya menggunakan Ubuntu Server 12.04.2 LTS, dan versi crontab yang saya ada, untuk menghapus senarai tugas pengguna yang digunakan, crontab -r (dan -l, seperti yang dinyatakan dalam manual ini). Sudah tentu ia adalah persoalan versi.
Sebaliknya, saya hanya menjalankan crontab dan jenis ini membolehkan saya membuat fail pelaksanaan saya sendiri, tetapi ini bukan yang dijalankan. Yang berjalan adalah yang ada di / etc / crontab. mungkin ada yang akan menggunakan komen tersebut.
PS (Saya mencari dengan mencari dan di mana crontab tetapi ia hanya mengembalikan alamat tersebut dan fail lain yang dienkripsi, jadi jika yang dieksekusi adalah yang di / etc / crontab, tetapi ketika menjalankan perintah crontab -e, saya akan muncul dengan semua pekerjaan yang telah saya tetapkan) di manakah fail ini disimpan '???? Salam. Saya selalu log masuk dengan root.
Hebat, sangat berguna !!!
Helo, saya ingin melakukan ini ………… «15 10 * * * root ifdown eth0»
iaitu, pada masa tertentu kad rangkaian dimatikan ………… baik, saya memasukkannya ke dalam crontab dan ia tidak berfungsi …… .. ada apa?
Salam dan terima kasih
Anda tidak dapat menentukan "mon" selepas tajuk "Tambahkan tugas ke crontab"
Artikelnya masih bagus, cron sangat berguna.
Betapa hebatnya jawatan itu, tanya saya
Sekiranya saya ingin mencatat rekod yang ditinggalkan oleh pelaksanaan tugas, di mana saya dapat melihatnya?
adakah saya mahu melihat sejarah tindakan yang dibuat pada masa lalu fail ini dan saya ingin melihat siapa yang telah mengubahnya dan tarikhnya
terima kasih
Saya ingin menyemak sejarah pengubahsuaian ini
bagaimana saya boleh melakukannya
terima kasih
Selamat pagi,
Saya fikir bahawa dalam skrip ubuntu anda telah melakukan kesalahan, anda telah membuat peningkatan ap-get -y dan bukan peningkatan apt-get -y. (Anda telah meninggalkan t).
Sesuatu ucapan.
Begitu juga. Terima kasih!
Peluk! Paul
Saya ingin tahu bagaimana membuat fail cron untuk dapat menentukan waktu setiap ketika ia dijalankan, direktori, dll.
Terima kasih kerana menjelaskan operasi dan arahan asas untuk cron, sekarang untuk menghiburkan diri sebentar.
Setiap kali saya mencari maklumat mengenai topik yang berkaitan dengan Gnu / Linux, saya selalu berpusing-pusing untuk selalu mencari 90% kes tutorial terbaik dalam komuniti hebat ini, saya fikir mulai sekarang saya akan bermula di sini dan kemudian di tempat lain.
salam
Terima kasih Sander! Pelukan! Paul.
dom = hari bulan
dow = hari dalam seminggu
lebih senang jika anda bergaul
Terima kasih banyak, sangat lengkap dan dijelaskan dengan baik.
Ini adalah perkara yang sama yang diberikan oleh guru Sistem Operasi kepada saya, saya tidak mengubah apa-apa, sekarang saya melihat mengapa kelasnya sangat teruk.
Dianggarkan,
Pertanyaan, adakah jangka masa tugas dapat dibatasi?
Contohnya saya mempunyai tugas yang berulang setiap 5 minit, secara berulang jika tugas itu masih aktif, bunuh dan jalankan lagi.
Terima kasih,
Marcelo.-
Helo, Marcelo!
Saya rasa akan lebih baik jika anda mengemukakan soalan ini dalam perkhidmatan soal jawab yang dipanggil Tanya FromLinux supaya seluruh masyarakat dapat menolong anda mengatasi masalah anda.
Pelukan, Pablo.
jawatan yang baik.
Apakah perintah per terminal untuk menambahkan tugas ke crontab (tanpa memasukkan crontab dan menambahkannya secara manual dengan 'crontab -e' atau menggantikan crontab dengan crontab lain dengan 'crontab file').
Ideanya adalah untuk membuat skrip luaran untuk menambahkan tugas ke crontab
Terima kasih
nampaknya saya boleh menggunakan 'echo' apa sahaja yang anda mahu tambahkan '| kucing >> 'path cronotab (/ etc / cronotab)' «
Bagaimana ungkapan dapat dijalankan setiap 3 hari dengan tepat
Hei.
Saya menghadapi masalah melaksanakan kerja cron.
Saya menjalankan tugas berikut dengan cronta -e:
01 * * * * root /home/user/script/mfile.sh
tetapi tugas itu tidak dilakukan. Saya telah memastikan bahawa myfile.sh mempunyai kebenaran pelaksanaan dan pengguna yang melaksanakannya adalah root.
Saya menjalankan tugas yang sama di / etc / crontab dan selepas memulakan semula perkhidmatan, ia juga tidak berfungsi untuk saya.
Kandungan myfile.sh adalah arahan yang mengemas kini DB dan jika saya menjalankannya di konsol ia berfungsi.
ada idea apa masalahnya?
Pengguna pangkalan data mungkin tidak mempunyai semua kebenaran dan anda harus terlebih dahulu mengeksport pemboleh ubah persekitaran dari mesin pangkalan data anda.
Contohnya di db2, baris ini akan menuju ke awal skrip
. / rumah / db2inst1 / sqllib / db2profile
Sebab lain adalah skrip memerlukan sambungan ke pangkalan data, membuat sambungan ke pangkalan data dalam skrip
Saya tidak tahu bahawa saya harus memulakan semula crond, saya telah bertengkar dengan ini untuk sementara waktu
Mereka akan tahu bagaimana menunjukkan bahawa tugas itu dijalankan setiap akhir bulan, pada waktu yang dinyatakan .. perinciannya adalah bahawa saya tidak dapat mencapai bagaimana saya tahu bahawa ia memerlukan hari terakhir setiap bulan .. ??? Saya terpaksa menuliskannya satu persatu tetapi apabila akhir bulan Februari tiba, ia adalah rumit ...
selamat hari !!
Bagaimana saya menghentikan proses yang dijalankan di crontab?
proses * …………
Mungkinkah anda dapat menolong saya? skrip eu tenho um oleh minha dikarang yang tidak berfungsi tanpa crontab! Je dei semua permis, bukan cron atau pengguna tertentu yang dapat melaksanakannya - hampir tidak ada yang berlaku! Saya ingin tahu jika anda dapat menolong saya, beberapa perkara lain tidak berguna! Vlws
Bagaimana anda menjalankan tugas setiap hari terakhir dalam bulan (hari: 31-30-28)?
Seperti yang sudah anda ketahui, perintah su digunakan untuk menukar pengguna di konsol. Jika saya menggunakan perintah su dengan demikian: "pengguna Anda" ubah pengguna tetapi tanpa pengaturan "pengguna" yang tepat, jika saya menjalankan su sebagai: "su - user" ubah pengguna dengan memuat tetapan pengguna. Dengan cron saya menunjukkan pengguna, tetapi bagaimana saya memuatkan tetapan pengguna ini?
Dan jika saya mahu menghentikannya?
Hello,
Saya tidak tahu apa yang saya buat salah, tetapi saya mengikuti langkahnya dan tidak ada yang dilaksanakan. Saya dah cuba:
59 * * * * / usr / bin / gedit
* * * * * / usr / bin / gedit
* * * * * root / usr / bin / gedit
* * * * * usr / bin / test.sh
* * * * * root usr / bin / test.sh
dan tidak sama sekali. Ia tidak melaksanakan apa-apa. Saya telah reboot dan semuanya.
thank you very much