GNU/Linux >> Belajar Linux >  >> Linux

Linux Crontab:15 Contoh Pekerjaan Cron yang Luar Biasa

Seorang sysadmin Linux yang berpengalaman mengetahui pentingnya menjalankan tugas pemeliharaan rutin di latar belakang secara otomatis.

Utilitas Linux Cron adalah cara efektif untuk menjadwalkan pekerjaan latar belakang rutin pada waktu dan/atau hari tertentu secara berkelanjutan.

Artikel ini adalah bagian dari seri Kiat Produktivitas Untuk Geeks yang sedang berlangsung. Dalam artikel ini, mari kita tinjau 15 contoh mengagumkan penjadwalan tugas crontab.

Format Crontab Linux

MIN HOUR DOM MON DOW CMD
Tabel:Bidang Crontab dan Rentang yang Diizinkan (Sintaks Crontab Linux)
Field Deskripsi Nilai yang Diizinkan
MIN Bidang menit 0 hingga 59
JAM Bidang jam 0 hingga 23
DOM Hari dalam Bulan 1-31
SEN Bidang bulan 1-12
DOW Hari Dalam Seminggu 0-6
CMD Perintah Perintah apa saja yang akan dieksekusi.

1. Menjadwalkan Pekerjaan Untuk Waktu Tertentu

Penggunaan dasar cron adalah untuk menjalankan pekerjaan dalam waktu tertentu seperti yang ditunjukkan di bawah ini. Ini akan mengeksekusi skrip shell cadangan penuh (full-backup) pada 10 Juni 08:30 .

Harap diperhatikan bahwa kolom waktu menggunakan format 24 jam. Jadi, untuk 8 pagi gunakan 8, dan untuk 8 malam gunakan 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – Menit ke-30
  • 08 – 08:00
  • 10 – Hari ke-10
  • 06 – Bulan ke-6 (Juni)
  • * – Setiap hari dalam seminggu

2. Jadwalkan Pekerjaan Untuk Lebih dari Satu Instance (misalnya Dua Kali Sehari)

Skrip berikut mengambil cadangan tambahan dua kali sehari setiap hari.

Contoh ini mengeksekusi skrip shell cadangan tambahan (incremental-backup) yang ditentukan pada pukul 11:00 dan 16:00 setiap hari. Nilai yang dipisahkan koma dalam bidang menentukan bahwa perintah harus dijalankan dalam semua waktu yang disebutkan.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – Menit ke-0 (Atas jam)
  • 11,16 – 11.00 dan 16.00
  • * – Setiap hari
  • * – Setiap bulan
  • * – Setiap hari dalam seminggu

3. Jadwalkan Pekerjaan untuk Rentang Waktu Tertentu (mis. Hanya pada Hari Kerja)

Jika Anda ingin pekerjaan dijadwalkan setiap jam dengan rentang waktu tertentu, gunakan yang berikut ini.

Cron Job setiap hari selama jam kerja

Contoh ini memeriksa status database setiap hari (termasuk akhir pekan) selama jam kerja 9 pagi – 6 sore

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – Menit ke-0 (Atas jam)
  • 09-18 – 9 pagi, 10 pagi, 11 pagi, 12 pagi, 1 siang, 2 siang, 3 sore, 4 sore, 5 sore, 6 sore
  • * – Setiap hari
  • * – Setiap bulan
  • * – Setiap hari dalam seminggu

Cron Job setiap hari kerja selama jam kerja

Contoh ini memeriksa status database setiap hari kerja (yaitu tidak termasuk Sabtu dan Minggu) selama jam kerja 9 pagi – 6 sore

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – Menit ke-0 (Atas jam)
  • 09-18 – 9 pagi, 10 pagi, 11 pagi, 12 pagi, 1 siang, 2 siang, 3 sore, 4 sore, 5 sore, 6 sore
  • * – Setiap hari
  • * – Setiap bulan
  • 1-5 -Senin, Sel, Rab, Kam, dan Jum (Setiap Hari Kerja)

4. Bagaimana Cara Melihat Entri Crontab?

Melihat entri Crontab Pengguna yang Masuk Saat Ini

Untuk melihat entri crontab Anda, ketik crontab -l dari akun unix Anda seperti yang ditunjukkan di bawah ini.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Melihat entri Root Crontab

Login sebagai user root (su – root) dan lakukan crontab -l seperti gambar di bawah ini.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:Melihat entri Crontab Pengguna Linux Lainnya

Untuk melihat entri crontab dari pengguna Linux lainnya, login ke root dan gunakan -u {username} -l seperti yang ditunjukkan di bawah ini.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Bagaimana Mengedit Entri Crontab?

Edit entri Crontab Pengguna yang Masuk Saat Ini

Untuk mengedit entri crontab, gunakan crontab -e seperti yang ditunjukkan di bawah ini. Secara default, ini akan mengedit crontab pengguna yang masuk saat ini.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Ketika Anda menyimpan file sementara di atas dengan :wq, itu akan menyimpan crontab dan menampilkan pesan berikut yang menunjukkan bahwa crontab berhasil dimodifikasi.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Edit entri Root Crontab

Login sebagai user root (su – root) dan lakukan crontab -e seperti gambar di bawah ini.

root@dev-db# crontab -e

Edit entri File Crontab Pengguna Linux Lain

Untuk mengedit entri crontab pengguna Linux lainnya, login ke root dan gunakan -u {username} -e seperti yang ditunjukkan di bawah ini.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Jadwalkan Pekerjaan untuk Setiap Menit Menggunakan Cron.

Idealnya Anda mungkin tidak memiliki persyaratan untuk menjadwalkan pekerjaan setiap menit. Namun memahami contoh ini akan membantu Anda memahami contoh lain yang disebutkan di bawah dalam artikel ini.

* * * * * CMD

* berarti semua unit yang mungkin — yaitu setiap menit setiap jam sepanjang tahun. Lebih dari menggunakan * ini secara langsung, Anda akan merasa sangat berguna dalam kasus berikut.

  • Bila Anda menentukan */5 dalam bidang menit berarti setiap 5 menit.
  • Bila Anda menentukan 0-10/2 di bidang menit berarti setiap 2 menit dalam 10 menit pertama.
  • Dengan demikian, konvensi di atas dapat digunakan untuk 4 bidang lainnya.

7. Jadwalkan Pekerjaan Cron Latar Belakang Setiap 10 Menit.

Gunakan yang berikut ini, jika Anda ingin memeriksa ruang disk setiap 10 menit.

*/10 * * * * /home/ramesh/check-disk-space

Ini mengeksekusi perintah check-disk-space yang ditentukan setiap 10 menit sepanjang tahun. Tetapi Anda mungkin memiliki persyaratan untuk menjalankan perintah hanya selama jam kantor atau sebaliknya. Contoh di atas menunjukkan cara melakukan hal-hal tersebut.

Alih-alih menentukan nilai dalam 5 bidang, kita dapat menentukannya menggunakan satu kata kunci seperti yang disebutkan di bawah ini.

Ada kasus khusus di mana alih-alih 5 bidang di atas Anda dapat menggunakan @ diikuti dengan kata kunci — seperti reboot, tengah malam, tahunan, per jam.

Tabel:Kata kunci khusus Cron dan artinya
Kata Kunci Setara
@tahunan 0 0 1 1 *
@harian 0 0 * * *
@setiap jam 0 * * * *
@reboot Jalankan saat startup.

8. Jadwalkan Pekerjaan Untuk Menit Pertama Setiap Tahun menggunakan @yearly

Jika Anda ingin pekerjaan dijalankan pada menit pertama setiap tahun, Anda dapat menggunakan @tahunan kata kunci cron seperti di bawah ini.

Ini akan menjalankan pemeliharaan tahunan sistem menggunakan skrip shell pemeliharaan tahunan pada pukul 00:00 pada tanggal 1 Januari untuk setiap tahun.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Jadwalkan Cron Job Awal Setiap Bulan menggunakan @monthly

Ini mirip dengan @yearly seperti di atas. Tetapi jalankan perintah setiap bulan sekali menggunakan @monthly kata kunci cron.

Ini akan mengeksekusi backup tape skrip shell pada pukul 00:00 pada tanggal 1 setiap bulan.

@monthly /home/ramesh/suse/bin/tape-backup

10. Jadwalkan Pekerjaan Latar Belakang Setiap Hari menggunakan @daily

Menggunakan @harian kata kunci cron, ini akan melakukan pembersihan file log harian menggunakan skrip shell pembersihan-log pada pukul 00:00 setiap hari.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. Bagaimana Menjalankan Perintah Linux Setelah Setiap Reboot menggunakan @reboot?

Menggunakan @reboot kata kunci cron, ini akan mengeksekusi perintah yang ditentukan sekali setelah mesin di-boot setiap saat.

@reboot CMD

12. Bagaimana Cara Menonaktifkan/Mengalihkan Output Email Crontab menggunakan kata kunci MAIL?

Secara default crontab mengirimkan output pekerjaan ke pengguna yang menjadwalkan pekerjaan. Jika Anda ingin mengarahkan output ke pengguna tertentu, tambahkan atau perbarui variabel MAIL di crontab seperti yang ditunjukkan di bawah ini.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Jika Anda ingin agar surat tidak terkirim ke mana-mana, yaitu menghentikan output crontab untuk dikirimi email, tambahkan atau perbarui variabel MAIL di crontab seperti gambar di bawah ini.

MAIL=""

13. Cara Menjalankan Pekerjaan Cron Linux Setiap Detik Menggunakan Crontab.

Anda tidak dapat menjadwalkan cronjob setiap detik. Karena di cron unit minimum yang dapat Anda tentukan adalah menit. Dalam skenario umum, tidak ada alasan bagi sebagian besar dari kita untuk menjalankan pekerjaan apa pun setiap detik dalam sistem.

14. Tentukan Variabel PATH di Crontab

Semua contoh di atas kami tentukan path absolut dari perintah Linux atau shell-script yang perlu dijalankan.

Misalnya, daripada menentukan /home/ramesh/tape-backup, jika Anda hanya ingin menentukan tape-backup, tambahkan path /home/ramesh ke variabel PATH di crontab seperti yang ditunjukkan di bawah ini.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Menginstal Crontab Dari File Cron

Alih-alih mengedit file crontab secara langsung, Anda juga dapat menambahkan semua entri ke file cron terlebih dahulu. Setelah Anda memiliki semua entri tersebut dalam file, Anda dapat mengunggah atau menginstalnya ke cron seperti yang ditunjukkan di bawah ini.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Catatan: Ini akan menginstal cron-file.txt ke crontab Anda, yang juga akan menghapus entri cron lama Anda. Jadi, harap berhati-hati saat mengunggah entri cron dari cron-file.txt.

Tutorial Cron Tambahan

  • Cron Vs Anacron:Cara Mengatur Anacron di Linux (Dengan Contoh)
  • Cara Menjalankan Cron Setiap 5 Menit, Detik, Jam, Hari, Bulan
  • 6 Contoh Perintah Crontab Linux
  • Cara Memasang, Mengedit, atau Menghapus Pekerjaan Cron dalam Mode Batch
  • Memahami at, atq, atrm, batch Perintah menggunakan 9 Contoh

Artikel Linux yang Luar Biasa

Berikut adalah beberapa 15 contoh yang mengagumkan artikel yang mungkin bermanfaat bagi Anda.

  • Bu, aku menemukannya! — 15 Contoh Perintah Temukan Linux yang Praktis
  • 15 Contoh Untuk Menguasai Sejarah Baris Perintah Linux
  • Perintah Unix LS:15 Contoh Praktis
  • Dapatkan Pegangan di Grep! – 15 Contoh Perintah Grep Praktis

Linux
  1. Contoh Perintah rm di Linux

  2. Contoh Perintah ps di Linux

  3. Linux:Jalankan tugas cron di latar depan

  1. 4 alternatif untuk cron di Linux

  2. Cara menggunakan cron di Linux

  3. pekerjaan cron terkadang tidak berjalan

  1. Menggunakan di untuk pekerjaan cron sekali pakai di Linux

  2. 6 Contoh Perintah Linux Crontab

  3. 7 Contoh Perintah Linux df