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. |
Indeks
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:
48 komentar, tinggalkan punyamu
Ugh ... agak membingungkan.
* / 30 hilang (di bidang menit) yang berjalan setiap 30 menit ...
Hanya ini yang akan saya komentari sampai saya memutuskan untuk mereview komentarnya 😀
Pengubah ini adalah bagian informasi yang sangat penting dan sesuatu yang sangat berguna.
Hello!
Saat ini saya menguji konfigurasi setiap 45 menit.
* / 45 * * * *, dan instruksi dijalankan pada 45 menit setiap jam DAN setiap jam. Artinya:
Ini beroperasi pada 3:45, lalu 4:00, 4:45, lalu 5:00, 5:45, 6:00, 6:45, dan seterusnya.
Ada yang salah? Apa yang dapat saya lakukan untuk membuatnya hanya setiap 45 menit, atau setidaknya sekali dalam 45 menit setiap jam.
Hello!
Saat ini saya menguji konfigurasi setiap 45 menit.
* / 45 * * * *, dan instruksi dijalankan pada 45 menit setiap jam DAN setiap jam. Artinya:
Ini beroperasi pada 3:45, lalu 4:00, 4:45, lalu 5:00, 5:45, 6:00, 6:45, dan seterusnya.
Ada yang salah? Apa yang dapat saya lakukan untuk membuatnya hanya setiap 45 menit, atau setidaknya sekali dalam 45 menit setiap jam.
Halo sangat berguna informasi untuk menjelaskan cara kerja cron.
Bytes
untuk *
Luar biasa, terima kasih telah menjelaskan cara kerja cron .. mari kita bantu put
Baris ini seperti yang saya pahami akan dieksekusi pada pukul 10:15, perbaiki saya jika saya salah
Nah di sana dikatakan 10:15
15 22 * * * pengguna /home/user/scripts/update.sh
Halo! info yang sangat bagus.
Untuk menjalankan Script setiap setengah jam, baris yang harus ditambahkan ke CronTab adalah: "30 * * * * root Scrip.sh" Benar? Terima kasih banyak!
Tidak. Jika saya ingat dengan benar, untuk itu Anda harus meletakkan / 30 * * * * root Scrip.sh.
Artinya, tambahkan / sebelum 30.
Bersulang! Paul.
Halo Saya menyukai posting Anda, ini sangat lengkap tetapi saya ingin menanyakan sesuatu.
Saya mengalami masalah dengan perintah ini dan yang seperti "di".
Saya ingin menjalankan skrip pada waktu tertentu dan meletakkan
di -f /home/mi_user/Desk/script.sh 18:08 contoh
dan skrip tidak dieksekusi di layar, yaitu di terminal, apakah dijalankan di latar belakang?
Dan dengan cron, hal yang sama terjadi pada saya, saya mengedit file crontab dengan "crontab -e"
pada akhirnya saya menambahkan baris ini:
46 19 my_user /home/mi_user/Desk/script.sh
dan tidak melakukan apa-apa, tidak menampilkan skrip.
Ada saran? Terima kasih banyak dan mohon maaf atas ketidaknyamanan yang ditimbulkan
Agar terminal muncul, Anda mungkin harus menjalankan terminal dan meneruskan skrip sebagai parameter.
Sebagai contoh:
lxterminal -e "my_user /home/mi_user/Desktop/script.sh"
Parameter yang akan digunakan dapat bervariasi berdasarkan emulator terminal yang Anda gunakan.
Saya harap ini berhasil.
Memeluk! Paul.
Masukan dihargai.
10 poin !!
salam2!!
Terima kasih banyak, sangat membantu saya untuk mengklarifikasi beberapa hal, terima kasih total, untuk lebih jelasnya atau keraguan saya akan pergi ke HALAMAN MAN, salam yang berulang.
man, terima kasih banyak, saya telah membaca dan menguji contoh. terima kasih banyak ... itu sangat bisa dimengerti. Bersulang
Saya menggunakan ubuntu Server 12.04.2 LTS, dan versi crontab yang saya miliki, untuk menghapus daftar pekerjaan pengguna digunakan, crontab -r (dan -l, seperti yang dikatakan manual ini). Tentu itu dengan pertanyaan versi.
Di sisi lain, saya pernah menjalankan hanya crontab dan jenis ini memungkinkan saya membuat file eksekusi saya sendiri, tetapi ini bukan file yang sedang dieksekusi. Yang berjalan adalah yang ada di / etc / crontab. mungkin seseorang akan menggunakan komentar tersebut.
PS (Saya mencari dengan lokasi dan di mana crontab tetapi hanya mengembalikan alamat yang disebutkan di atas dan file lain yang dienkripsi, jadi jika yang dijalankan adalah yang ada di / etc / crontab, tetapi ketika menjalankan perintah crontab -e, milik saya muncul dengan semua pekerjaan yang telah saya tentukan) di mana file ini disimpan '???? Salam. Saya selalu masuk dengan root.
Luar biasa, sangat berguna !!!
Halo, saya ingin melakukan ini ………… «15 10 * * * root ifdown eth0»
Artinya pada waktu tertentu kartu jaringan dimatikan ………… baik, saya taruh di crontab dan tidak berhasil …… .. ada apa?
Saludos y gracias
Anda melewatkan mendefinisikan "mon" setelah judul "Tambahkan tugas ke crontab"
Artikelnya masih bagus, cron sangat berguna.
Betapa kerennya postingan yang bagus itu, tanya saya
Jika saya ingin melacak catatan yang ditinggalkan oleh pelaksanaan tugas, di mana saya dapat melihatnya?
is decdir Saya ingin melihat riwayat tindakan yang dilakukan di masa lalu dari file ini dan saya ingin melihat siapa yang telah mengubahnya dan tanggal
terima kasih
Saya ingin memeriksa sejarah modifikasi ini
bagaimana saya bisa melakukannya
terima kasih
Selamat pagi,
Saya pikir dalam skrip ubuntu Anda telah membuat kesalahan, Anda telah menempatkan peningkatan ap-get -y alih-alih peningkatan apt-get -y. (Anda telah meninggalkan t).
Sebuah ucapan.
Begitu juga. Terima kasih!
Memeluk! Paul
Saya ingin tahu cara membuat file cron agar dapat menentukan waktu setiap saat dijalankan, direktori, dll.
Terima kasih telah memperjelas pengoperasian dan perintah dasar untuk cron, sekarang menghibur diri Anda sebentar.
Kapanpun saya mencari informasi tentang topik apapun yang berhubungan dengan Gnu / Linux saya berputar-putar pada akhirnya selalu menemukan dalam 90% kasus tutorial terbaik di komunitas yang hebat ini, saya pikir mulai sekarang saya akan mulai di sini dan kemudian di tempat lain.
salam
Terima kasih Sander! Sebuah pelukan! Paul.
dom = hari dalam sebulan
dow = hari dalam seminggu
lebih mudah jika Anda mengasosiasikan
Terima kasih banyak, ini sangat lengkap dan dijelaskan dengan baik.
Ini adalah hal yang sama yang diberikan guru OS saya kepada kami, saya tidak mengubah apa pun, sekarang saya mengerti mengapa kelasnya sangat buruk. -. Nah, ini sama dengan pekerjaan rumah xD
Diperkirakan,
Query, bisakah durasi tugas dibatasi?
Misalnya saya punya tugas yang diulang setiap 5 menit, di pengulangan jika tugas ini masih aktif, matikan dan jalankan lagi.
Terima kasih,
Marcelo.-
Halo, Marcelo!
Saya pikir akan lebih baik jika Anda menanyakan pertanyaan ini di layanan tanya jawab kami bernama Tanyakan FromLinux sehingga seluruh komunitas dapat membantu Anda mengatasi masalah Anda.
Pelukan, Pablo.
postingan yang bagus.
Apa perintah per terminal untuk menambahkan tugas ke crontab (tanpa memasukkan crontab dan menambahkannya secara manual dengan 'crontab -e' atau mengganti crontab dengan crontab lain dengan 'file crontab').
Idenya adalah membuat skrip eksternal untuk menambahkan tugas ke crontab
terima kasih
menurut saya Anda bisa menggunakan 'echo' apapun yang ingin Anda tambahkan '| kucing >> 'jalur cronotab (/ etc / cronotab)' «
Bagaimana ekspresi dijalankan setiap 3 hari dengan tepat
Hola.
Saya mengalami masalah saat menjalankan tugas cron.
Saya menjalankan tugas berikut dengan cronta -e:
01 * * * * root /home/user/script/mfile.sh
tapi tugas itu belum selesai. Saya telah memverifikasi bahwa myfile.sh memiliki izin eksekusi dan pengguna yang mengeksekusinya adalah root.
Saya menjalankan tugas yang sama di / etc / crontab dan setelah memulai ulang layanan, itu juga tidak berhasil untuk saya.
Isi myfile.sh adalah perintah yang memperbarui DB dan jika saya menjalankannya di konsol, itu berfungsi.
tahu apa masalahnya?
Sepertinya pengguna database tidak memiliki semua izin dan Anda harus mengekspor variabel lingkungan dari mesin database Anda terlebih dahulu.
Misalnya di db2 baris ini akan menuju ke awal skrip
. / home / db2inst1 / sqllib / db2profile
Penyebab lain bisa jadi script membutuhkan koneksi ke database, membuat koneksi ke database di dalam script
Saya tidak tahu bahwa saya harus memulai kembali crond, saya telah berjuang dengan ini untuk sementara waktu
Mereka akan tahu bagaimana menunjukkan bahwa tugas dijalankan setiap akhir bulan, pada waktu yang ditentukan .. detailnya adalah bahwa saya tidak dapat mencapai bagaimana saya tahu bahwa itu membutuhkan hari terakhir setiap bulan .. ??? Saya harus menuliskannya satu per satu tetapi ketika akhir bulan Februari tiba, hal itu menjadi rumit bagi saya ..
Selamat siang!!
Bagaimana cara menghentikan proses yang sedang dijalankan di crontab?
proses * …………
Mungkinkah Anda dapat membantu saya? eu tenho um script oleh minha ditulis yang tidak bekerja tanpa crontab! jб dei semua izin, tidak ada pengguna atau cron khusus pribadi yang dapat menjalankannya-hampir tidak ada yang terjadi! Saya ingin tahu apakah Anda dapat membantu saya, beberapa hal lain berhasil tanpa cron! Vlws
Bagaimana Anda menempatkan tugas untuk dijalankan setiap hari terakhir setiap bulan (hari: 31-30-28)?
Seperti yang Anda ketahui, perintah su digunakan untuk mengubah pengguna di konsol. Jika saya menggunakan perintah su sebagai berikut: "pengguna Anda" ubah pengguna tetapi tanpa pengaturan yang tepat dari "pengguna", jika saya menjalankan su sebagai: "su - user" ubah pengguna dengan memuat pengaturan pengguna. Dengan cron saya menunjukkan pengguna, tetapi bagaimana cara memuat konfigurasi pengguna ini?
Dan jika saya ingin menghentikannya?
Halo,
Saya tidak tahu apa yang saya lakukan salah, tetapi saya mengikuti langkah-langkahnya dan tidak ada yang dieksekusi. Saya telah mencoba:
59 * * * * / usr / bin / gedit
* * * * * / usr / bin / gedit
* * * * * root / usr / bin / gedit
* * * * * usr / bin / test.sh
* * * * * root usr / bin / test.sh
dan tidak sama sekali. Itu tidak mengeksekusi apa pun. Saya telah reboot dan segalanya.
terima kasih banyak